Commit 48dbce5c authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76: move band capabilities in mt76_phy

This is a preliminary patch to move properly support mt7915 dbdc
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 91990519
...@@ -159,9 +159,9 @@ static void mt76_init_stream_cap(struct mt76_phy *phy, ...@@ -159,9 +159,9 @@ static void mt76_init_stream_cap(struct mt76_phy *phy,
void mt76_set_stream_caps(struct mt76_phy *phy, bool vht) void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
{ {
if (phy->dev->cap.has_2ghz) if (phy->cap.has_2ghz)
mt76_init_stream_cap(phy, &phy->sband_2g.sband, false); mt76_init_stream_cap(phy, &phy->sband_2g.sband, false);
if (phy->dev->cap.has_5ghz) if (phy->cap.has_5ghz)
mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht); mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht);
} }
EXPORT_SYMBOL_GPL(mt76_set_stream_caps); EXPORT_SYMBOL_GPL(mt76_set_stream_caps);
...@@ -461,13 +461,13 @@ int mt76_register_device(struct mt76_dev *dev, bool vht, ...@@ -461,13 +461,13 @@ int mt76_register_device(struct mt76_dev *dev, bool vht,
dev_set_drvdata(dev->dev, dev); dev_set_drvdata(dev->dev, dev);
mt76_phy_init(dev, hw); mt76_phy_init(dev, hw);
if (dev->cap.has_2ghz) { if (phy->cap.has_2ghz) {
ret = mt76_init_sband_2g(dev, rates, n_rates); ret = mt76_init_sband_2g(dev, rates, n_rates);
if (ret) if (ret)
return ret; return ret;
} }
if (dev->cap.has_5ghz) { if (phy->cap.has_5ghz) {
ret = mt76_init_sband_5g(dev, rates + 4, n_rates - 4, vht); ret = mt76_init_sband_5g(dev, rates + 4, n_rates - 4, vht);
if (ret) if (ret)
return ret; return ret;
......
...@@ -569,6 +569,7 @@ struct mt76_phy { ...@@ -569,6 +569,7 @@ struct mt76_phy {
struct mt76_channel_state *chan_state; struct mt76_channel_state *chan_state;
ktime_t survey_time; ktime_t survey_time;
struct mt76_hw_cap cap;
struct mt76_sband sband_2g; struct mt76_sband sband_2g;
struct mt76_sband sband_5g; struct mt76_sband sband_5g;
...@@ -638,7 +639,6 @@ struct mt76_dev { ...@@ -638,7 +639,6 @@ struct mt76_dev {
struct debugfs_blob_wrapper eeprom; struct debugfs_blob_wrapper eeprom;
struct debugfs_blob_wrapper otp; struct debugfs_blob_wrapper otp;
struct mt76_hw_cap cap;
struct mt76_rate_power rate_power; struct mt76_rate_power rate_power;
......
...@@ -171,7 +171,7 @@ int mt7603_eeprom_init(struct mt7603_dev *dev) ...@@ -171,7 +171,7 @@ int mt7603_eeprom_init(struct mt7603_dev *dev)
} }
eeprom = (u8 *)dev->mt76.eeprom.data; eeprom = (u8 *)dev->mt76.eeprom.data;
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
memcpy(dev->mt76.macaddr, eeprom + MT_EE_MAC_ADDR, ETH_ALEN); memcpy(dev->mt76.macaddr, eeprom + MT_EE_MAC_ADDR, ETH_ALEN);
/* Check for 1SS devices */ /* Check for 1SS devices */
......
...@@ -183,7 +183,7 @@ int mt7615_dma_init(struct mt7615_dev *dev) ...@@ -183,7 +183,7 @@ int mt7615_dma_init(struct mt7615_dev *dev)
int ret; int ret;
/* Increase buffer size to receive large VHT MPDUs */ /* Increase buffer size to receive large VHT MPDUs */
if (dev->mt76.cap.has_5ghz) if (dev->mphy.cap.has_5ghz)
rx_buf_size *= 2; rx_buf_size *= 2;
mt76_dma_attach(&dev->mt76); mt76_dma_attach(&dev->mt76);
......
...@@ -99,20 +99,20 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev) ...@@ -99,20 +99,20 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev)
if (is_mt7663(&dev->mt76)) { if (is_mt7663(&dev->mt76)) {
/* dual band */ /* dual band */
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
return; return;
} }
if (is_mt7622(&dev->mt76)) { if (is_mt7622(&dev->mt76)) {
/* 2GHz only */ /* 2GHz only */
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
return; return;
} }
if (is_mt7611(&dev->mt76)) { if (is_mt7611(&dev->mt76)) {
/* 5GHz only */ /* 5GHz only */
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
return; return;
} }
...@@ -120,17 +120,17 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev) ...@@ -120,17 +120,17 @@ mt7615_eeprom_parse_hw_band_cap(struct mt7615_dev *dev)
eeprom[MT_EE_WIFI_CONF]); eeprom[MT_EE_WIFI_CONF]);
switch (val) { switch (val) {
case MT_EE_5GHZ: case MT_EE_5GHZ:
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
break; break;
case MT_EE_2GHZ: case MT_EE_2GHZ:
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
break; break;
case MT_EE_DBDC: case MT_EE_DBDC:
dev->dbdc_support = true; dev->dbdc_support = true;
/* fall through */ /* fall through */
default: default:
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
break; break;
} }
} }
......
...@@ -52,15 +52,15 @@ static void mt76x0_set_chip_cap(struct mt76x02_dev *dev) ...@@ -52,15 +52,15 @@ static void mt76x0_set_chip_cap(struct mt76x02_dev *dev)
mt76x02_eeprom_parse_hw_cap(dev); mt76x02_eeprom_parse_hw_cap(dev);
dev_dbg(dev->mt76.dev, "2GHz %d 5GHz %d\n", dev_dbg(dev->mt76.dev, "2GHz %d 5GHz %d\n",
dev->mt76.cap.has_2ghz, dev->mt76.cap.has_5ghz); dev->mphy.cap.has_2ghz, dev->mphy.cap.has_5ghz);
if (dev->no_2ghz) { if (dev->no_2ghz) {
dev->mt76.cap.has_2ghz = false; dev->mphy.cap.has_2ghz = false;
dev_dbg(dev->mt76.dev, "mask out 2GHz support\n"); dev_dbg(dev->mt76.dev, "mask out 2GHz support\n");
} }
if (is_mt7630(dev)) { if (is_mt7630(dev)) {
dev->mt76.cap.has_5ghz = false; dev->mphy.cap.has_5ghz = false;
dev_dbg(dev->mt76.dev, "mask out 5GHz support\n"); dev_dbg(dev->mt76.dev, "mask out 5GHz support\n");
} }
......
...@@ -245,7 +245,7 @@ int mt76x0_register_device(struct mt76x02_dev *dev) ...@@ -245,7 +245,7 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
if (ret) if (ret)
return ret; return ret;
if (dev->mt76.cap.has_5ghz) { if (dev->mphy.cap.has_5ghz) {
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
sband = &dev->mphy.sband_5g.sband; sband = &dev->mphy.sband_5g.sband;
...@@ -253,7 +253,7 @@ int mt76x0_register_device(struct mt76x02_dev *dev) ...@@ -253,7 +253,7 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
mt76x0_init_txpower(dev, sband); mt76x0_init_txpower(dev, sband);
} }
if (dev->mt76.cap.has_2ghz) if (dev->mphy.cap.has_2ghz)
mt76x0_init_txpower(dev, &dev->mphy.sband_2g.sband); mt76x0_init_txpower(dev, &dev->mphy.sband_2g.sband);
mt76x02_init_debugfs(dev); mt76x02_init_debugfs(dev);
......
...@@ -447,11 +447,11 @@ static void mt76x0_phy_ant_select(struct mt76x02_dev *dev) ...@@ -447,11 +447,11 @@ static void mt76x0_phy_ant_select(struct mt76x02_dev *dev)
else else
coex3 |= BIT(4); coex3 |= BIT(4);
coex3 |= BIT(3); coex3 |= BIT(3);
if (dev->mt76.cap.has_2ghz) if (dev->mphy.cap.has_2ghz)
wlan |= BIT(6); wlan |= BIT(6);
} else { } else {
/* sigle antenna mode */ /* sigle antenna mode */
if (dev->mt76.cap.has_5ghz) { if (dev->mphy.cap.has_5ghz) {
coex3 |= BIT(3) | BIT(4); coex3 |= BIT(3) | BIT(4);
} else { } else {
wlan |= BIT(6); wlan |= BIT(6);
......
...@@ -75,14 +75,14 @@ void mt76x02_eeprom_parse_hw_cap(struct mt76x02_dev *dev) ...@@ -75,14 +75,14 @@ void mt76x02_eeprom_parse_hw_cap(struct mt76x02_dev *dev)
switch (FIELD_GET(MT_EE_NIC_CONF_0_BOARD_TYPE, val)) { switch (FIELD_GET(MT_EE_NIC_CONF_0_BOARD_TYPE, val)) {
case BOARD_TYPE_5GHZ: case BOARD_TYPE_5GHZ:
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
break; break;
case BOARD_TYPE_2GHZ: case BOARD_TYPE_2GHZ:
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
break; break;
default: default:
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
break; break;
} }
} }
......
...@@ -52,14 +52,14 @@ static void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev) ...@@ -52,14 +52,14 @@ static void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev)
val = FIELD_GET(MT_EE_WIFI_CONF_BAND_SEL, val); val = FIELD_GET(MT_EE_WIFI_CONF_BAND_SEL, val);
switch (val) { switch (val) {
case MT_EE_5GHZ: case MT_EE_5GHZ:
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
break; break;
case MT_EE_2GHZ: case MT_EE_2GHZ:
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
break; break;
default: default:
dev->mt76.cap.has_2ghz = true; dev->mphy.cap.has_2ghz = true;
dev->mt76.cap.has_5ghz = true; dev->mphy.cap.has_5ghz = true;
break; break;
} }
......
...@@ -521,10 +521,9 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy) ...@@ -521,10 +521,9 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy)
{ {
struct ieee80211_sband_iftype_data *data; struct ieee80211_sband_iftype_data *data;
struct ieee80211_supported_band *band; struct ieee80211_supported_band *band;
struct mt76_dev *mdev = &phy->dev->mt76;
int n; int n;
if (mdev->cap.has_2ghz) { if (phy->mt76->cap.has_2ghz) {
data = phy->iftype[NL80211_BAND_2GHZ]; data = phy->iftype[NL80211_BAND_2GHZ];
n = mt7915_init_he_caps(phy, NL80211_BAND_2GHZ, data); n = mt7915_init_he_caps(phy, NL80211_BAND_2GHZ, data);
...@@ -533,7 +532,7 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy) ...@@ -533,7 +532,7 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy)
band->n_iftype_data = n; band->n_iftype_data = n;
} }
if (mdev->cap.has_5ghz) { if (phy->mt76->cap.has_5ghz) {
data = phy->iftype[NL80211_BAND_5GHZ]; data = phy->iftype[NL80211_BAND_5GHZ];
n = mt7915_init_he_caps(phy, NL80211_BAND_5GHZ, data); n = mt7915_init_he_caps(phy, NL80211_BAND_5GHZ, data);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment