aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2019-12-19 22:57:40 +0100
committerFelix Fietkau <nbd@nbd.name>2020-02-14 10:06:07 +0100
commit8acb7afc693b9db2841bb5395c928063efafa7a5 (patch)
treee72d19b502b332fe17e87029789929abf2bfc3e6 /drivers/net/wireless
parentmt76: mt7615: add eeprom support for MT7622 (diff)
downloadwireguard-linux-8acb7afc693b9db2841bb5395c928063efafa7a5.tar.xz
wireguard-linux-8acb7afc693b9db2841bb5395c928063efafa7a5.zip
mt76: mt7615: add calibration free support for MT7622
MT7622 uses fewer efuse overrides than MT7615 Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c b/drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c
index 50ed6bd38f8b..b383d85df2c3 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c
@@ -211,6 +211,26 @@ static void mt7615_apply_cal_free_data(struct mt7615_dev *dev)
eeprom[ical_nocheck[i]] = otp[ical_nocheck[i]];
}
+static void mt7622_apply_cal_free_data(struct mt7615_dev *dev)
+{
+ static const u16 ical[] = {
+ 0x53, 0x54, 0x55, 0x56, 0xf4, 0xf7, 0x144, 0x156, 0x15b
+ };
+ u8 *eeprom = dev->mt76.eeprom.data;
+ u8 *otp = dev->mt76.otp.data;
+ int i;
+
+ if (!otp)
+ return;
+
+ for (i = 0; i < ARRAY_SIZE(ical); i++) {
+ if (!otp[ical[i]])
+ continue;
+
+ eeprom[ical[i]] = otp[ical[i]];
+ }
+}
+
int mt7615_eeprom_init(struct mt7615_dev *dev)
{
int ret;
@@ -223,6 +243,8 @@ int mt7615_eeprom_init(struct mt7615_dev *dev)
if (ret && dev->mt76.otp.data)
memcpy(dev->mt76.eeprom.data, dev->mt76.otp.data,
MT7615_EEPROM_SIZE);
+ else if (is_mt7622(&dev->mt76))
+ mt7622_apply_cal_free_data(dev);
else
mt7615_apply_cal_free_data(dev);