mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
mt76: mt7915: fix eeprom parsing for DBDC
Annotate WIFI_CONF eeprom mask values with the byte number Fix parsing per-band number of chains Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
+13
-13
@@ -53,7 +53,7 @@ void mt7915_eeprom_parse_band_config(struct mt7915_phy *phy)
|
||||
u32 val;
|
||||
|
||||
val = mt7915_eeprom_read(dev, MT_EE_WIFI_CONF + ext_phy);
|
||||
val = FIELD_GET(MT_EE_WIFI_CONF_BAND_SEL, val);
|
||||
val = FIELD_GET(MT_EE_WIFI_CONF0_BAND_SEL, val);
|
||||
switch (val) {
|
||||
case MT_EE_5GHZ:
|
||||
phy->mt76->cap.has_5ghz = true;
|
||||
@@ -70,25 +70,25 @@ void mt7915_eeprom_parse_band_config(struct mt7915_phy *phy)
|
||||
|
||||
static void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev)
|
||||
{
|
||||
u8 nss, tx_mask[2] = {}, *eeprom = dev->mt76.eeprom.data;
|
||||
u8 nss, *eeprom = dev->mt76.eeprom.data;
|
||||
|
||||
mt7915_eeprom_parse_band_config(&dev->phy);
|
||||
|
||||
/* read tx mask from eeprom */
|
||||
tx_mask[0] = FIELD_GET(MT_EE_WIFI_CONF_TX_MASK,
|
||||
eeprom[MT_EE_WIFI_CONF]);
|
||||
if (dev->dbdc_support)
|
||||
tx_mask[1] = FIELD_GET(MT_EE_WIFI_CONF_TX_MASK,
|
||||
eeprom[MT_EE_WIFI_CONF + 1]);
|
||||
|
||||
nss = tx_mask[0] + tx_mask[1];
|
||||
if (!nss || nss > 4) {
|
||||
tx_mask[0] = 4;
|
||||
nss = FIELD_GET(MT_EE_WIFI_CONF0_TX_PATH, eeprom[MT_EE_WIFI_CONF]);
|
||||
if (!nss || nss > 4)
|
||||
nss = 4;
|
||||
}
|
||||
|
||||
dev->chainmask = BIT(nss) - 1;
|
||||
dev->mphy.antenna_mask = BIT(tx_mask[0]) - 1;
|
||||
|
||||
if (dev->dbdc_support) {
|
||||
nss = FIELD_GET(MT_EE_WIFI_CONF3_TX_PATH_B0,
|
||||
eeprom[MT_EE_WIFI_CONF + 3]);
|
||||
if (!nss || nss > 2)
|
||||
nss = 2;
|
||||
}
|
||||
|
||||
dev->mphy.antenna_mask = BIT(nss) - 1;
|
||||
dev->mphy.chainmask = dev->mphy.antenna_mask;
|
||||
}
|
||||
|
||||
|
||||
+10
-7
@@ -27,11 +27,14 @@ enum mt7915_eeprom_field {
|
||||
__MT_EE_MAX = 0xe00
|
||||
};
|
||||
|
||||
#define MT_EE_WIFI_CONF_TX_MASK GENMASK(2, 0)
|
||||
#define MT_EE_WIFI_CONF_BAND_SEL GENMASK(7, 6)
|
||||
#define MT_EE_WIFI_CONF_TSSI0_2G BIT(0)
|
||||
#define MT_EE_WIFI_CONF_TSSI0_5G BIT(2)
|
||||
#define MT_EE_WIFI_CONF_TSSI1_5G BIT(4)
|
||||
#define MT_EE_WIFI_CONF0_TX_PATH GENMASK(2, 0)
|
||||
#define MT_EE_WIFI_CONF0_BAND_SEL GENMASK(7, 6)
|
||||
#define MT_EE_WIFI_CONF1_BAND_SEL GENMASK(7, 6)
|
||||
#define MT_EE_WIFI_CONF3_TX_PATH_B0 GENMASK(1, 0)
|
||||
#define MT_EE_WIFI_CONF3_TX_PATH_B1 GENMASK(5, 4)
|
||||
#define MT_EE_WIFI_CONF7_TSSI0_2G BIT(0)
|
||||
#define MT_EE_WIFI_CONF7_TSSI0_5G BIT(2)
|
||||
#define MT_EE_WIFI_CONF7_TSSI1_5G BIT(4)
|
||||
|
||||
#define MT_EE_RATE_DELTA_MASK GENMASK(5, 0)
|
||||
#define MT_EE_RATE_DELTA_SIGN BIT(6)
|
||||
@@ -90,9 +93,9 @@ mt7915_tssi_enabled(struct mt7915_dev *dev, enum nl80211_band band)
|
||||
|
||||
/* TODO: DBDC */
|
||||
if (band == NL80211_BAND_5GHZ)
|
||||
return eep[MT_EE_WIFI_CONF + 7] & MT_EE_WIFI_CONF_TSSI0_5G;
|
||||
return eep[MT_EE_WIFI_CONF + 7] & MT_EE_WIFI_CONF7_TSSI0_5G;
|
||||
else
|
||||
return eep[MT_EE_WIFI_CONF + 7] & MT_EE_WIFI_CONF_TSSI0_2G;
|
||||
return eep[MT_EE_WIFI_CONF + 7] & MT_EE_WIFI_CONF7_TSSI0_2G;
|
||||
}
|
||||
|
||||
extern const u8 mt7915_sku_group_len[MAX_SKU_RATE_GROUP_NUM];
|
||||
|
||||
Reference in New Issue
Block a user