Skip to contentSkip to conversation

mt76: mt7615: select wifi band according to eeprom

PATCH Applied Lorenzo Bianconi 3 participants 3 messages May 17, 2019 – Jun 7, 2019 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

Lorenzo Bianconi

author maintainer
#1 lore raw

PATCH 1/1 mt76: mt7615: select wifi band according to eeprom

Select supported band according to the value read from eeprom mtd/otp partition

---
 .../wireless/mediatek/mt76/mt7615/eeprom.c    | 24 ++++++++++++++++---
 .../wireless/mediatek/mt76/mt7615/eeprom.h    |  9 +++++++
 2 files changed, 30 insertions(+), 3 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +21 -3
index 1712f66520a8..714590878d65 100644
@@ -90,6 +90,26 @@ static int mt7615_check_eeprom(struct mt76_dev *dev)
 	}
 }
 
+static void mt7615_eeprom_parse_hw_cap(struct mt7615_dev *dev)
+{
+	u8 val, *eeprom = dev->mt76.eeprom.data;
+
+	val = FIELD_GET(MT_EE_NIC_WIFI_CONF_BAND_SEL,
+			eeprom[MT_EE_WIFI_CONF]);
+	switch (val) {
+	case MT_EE_5GHZ:
+		dev->mt76.cap.has_5ghz = true;
+		break;
+	case MT_EE_2GHZ:
+		dev->mt76.cap.has_2ghz = true;
+		break;
+	default:
+		dev->mt76.cap.has_2ghz = true;
+		dev->mt76.cap.has_5ghz = true;
+		break;
+	}
+}
+
 int mt7615_eeprom_init(struct mt7615_dev *dev)
 {
 	int ret;
@@ -103,9 +123,7 @@ int mt7615_eeprom_init(struct mt7615_dev *dev)
 		memcpy(dev->mt76.eeprom.data, dev->mt76.otp.data,
 		       MT7615_EEPROM_SIZE);
 
-	dev->mt76.cap.has_2ghz = true;
-	dev->mt76.cap.has_5ghz = true;
-
+	mt7615_eeprom_parse_hw_cap(dev);
 	memcpy(dev->mt76.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
 	       ETH_ALEN);
 
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.h +9 -0
index a4cf16688171..b422e395d6ee 100644
@@ -11,8 +11,17 @@ enum mt7615_eeprom_field {
 	MT_EE_VERSION =				0x002,
 	MT_EE_MAC_ADDR =			0x004,
 	MT_EE_NIC_CONF_0 =			0x034,
+	MT_EE_WIFI_CONF =			0x03e,
 
 	__MT_EE_MAX =				0x3bf
 };
 
+#define MT_EE_NIC_WIFI_CONF_BAND_SEL		GENMASK(5, 4)
+enum mt7615_eeprom_band {
+	MT_EE_DUAL_BAND,
+	MT_EE_5GHZ,
+	MT_EE_2GHZ,
+	MT_EE_DBDC,
+};
+
 #endif
Signature · 1 line
2.20.1
#2 lore raw
Quoted 4 lines

Select supported band according to the value read from eeprom mtd/otp partition

I forgot to mention this patch is based on 'mt76: mt7615: add support for mtd eeprom parsing'
https://patchwork.kernel.org/patch/10947385/

Regards,
Lorenzo

Quoted 73 lines
---
 .../wireless/mediatek/mt76/mt7615/eeprom.c    | 24 ++++++++++++++++---
 .../wireless/mediatek/mt76/mt7615/eeprom.h    |  9 +++++++
 2 files changed, 30 insertions(+), 3 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +21 -3
index 1712f66520a8..714590878d65 100644
@@ -90,6 +90,26 @@ static int mt7615_check_eeprom(struct mt76_dev *dev)
        }
 }
 
+static void mt7615_eeprom_parse_hw_cap(struct mt7615_dev *dev)
+{
+       u8 val, *eeprom = dev->mt76.eeprom.data;
+
+       val = FIELD_GET(MT_EE_NIC_WIFI_CONF_BAND_SEL,
+                       eeprom[MT_EE_WIFI_CONF]);
+       switch (val) {
+       case MT_EE_5GHZ:
+               dev->mt76.cap.has_5ghz = true;
+               break;
+       case MT_EE_2GHZ:
+               dev->mt76.cap.has_2ghz = true;
+               break;
+       default:
+               dev->mt76.cap.has_2ghz = true;
+               dev->mt76.cap.has_5ghz = true;
+               break;
+       }
+}
+
 int mt7615_eeprom_init(struct mt7615_dev *dev)
 {
        int ret;
@@ -103,9 +123,7 @@ int mt7615_eeprom_init(struct mt7615_dev *dev)
                memcpy(dev->mt76.eeprom.data, dev->mt76.otp.data,
                       MT7615_EEPROM_SIZE);
 
-       dev->mt76.cap.has_2ghz = true;
-       dev->mt76.cap.has_5ghz = true;
-
+       mt7615_eeprom_parse_hw_cap(dev);
        memcpy(dev->mt76.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
               ETH_ALEN);
 
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.h +9 -1
index a4cf16688171..b422e395d6ee 100644
@@ -11,8 +11,17 @@ enum mt7615_eeprom_field {
        MT_EE_VERSION =                         0x002,
        MT_EE_MAC_ADDR =                        0x004,
        MT_EE_NIC_CONF_0 =                      0x034,
+       MT_EE_WIFI_CONF =                       0x03e,
 
        __MT_EE_MAX =                           0x3bf
 };
 
+#define MT_EE_NIC_WIFI_CONF_BAND_SEL           GENMASK(5, 4)
+enum mt7615_eeprom_band {
+       MT_EE_DUAL_BAND,
+       MT_EE_5GHZ,
+       MT_EE_2GHZ,
+       MT_EE_DBDC,
+};
+
 #endif
--

2.20.1