Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c988a77f authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

mt76: mt7615: select wifi band according to eeprom



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

Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent f9461a68
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -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);

+9 −0
Original line number Diff line number Diff line
@@ -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