wifi: mt76: mt7615: increase eeprom size for mt7663
authorFelix Fietkau <nbd@nbd.name>
Fri, 11 Nov 2022 18:50:46 +0000 (19:50 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 19 Apr 2023 08:09:43 +0000 (10:09 +0200)
mt7663 efuse has 0x600 bytes instead of 0x400. Increase the size in order
to fix issues with incomplete calibration data

Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.h
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h

index 6dbaaf9..68e8822 100644 (file)
@@ -47,6 +47,9 @@ static int mt7615_efuse_init(struct mt7615_dev *dev, u32 base)
        void *buf;
        u32 val;
 
+       if (is_mt7663(&dev->mt76))
+               len = MT7663_EEPROM_SIZE;
+
        val = mt76_rr(dev, base + MT_EFUSE_BASE_CTRL);
        if (val & MT_EFUSE_BASE_CTRL_EMPTY)
                return 0;
@@ -72,6 +75,8 @@ static int mt7615_eeprom_load(struct mt7615_dev *dev, u32 addr)
 {
        int ret;
 
+       BUILD_BUG_ON(MT7615_EEPROM_FULL_SIZE < MT7663_EEPROM_SIZE);
+
        ret = mt76_eeprom_init(&dev->mt76, MT7615_EEPROM_FULL_SIZE);
        if (ret < 0)
                return ret;
@@ -336,7 +341,7 @@ int mt7615_eeprom_init(struct mt7615_dev *dev, u32 addr)
        ret = mt7615_check_eeprom(&dev->mt76);
        if (ret && dev->mt76.otp.data) {
                memcpy(dev->mt76.eeprom.data, dev->mt76.otp.data,
-                      MT7615_EEPROM_SIZE);
+                      dev->mt76.otp.size);
        } else {
                dev->flash_eeprom = true;
                mt7615_cal_free_data(dev);
index a024dee..a67fbb9 100644 (file)
@@ -46,7 +46,7 @@ enum mt7615_eeprom_field {
 
        MT7615_EE_MAX =                         0x3bf,
        MT7622_EE_MAX =                         0x3db,
-       MT7663_EE_MAX =                         0x400,
+       MT7663_EE_MAX =                         0x600,
 };
 
 #define MT_EE_RATE_POWER_MASK                  GENMASK(5, 0)
index 932cdad..0381c53 100644 (file)
@@ -51,6 +51,7 @@
 #define MT7663_FIRMWARE_N9             "mediatek/mt7663_n9_rebb.bin"
 
 #define MT7615_EEPROM_SIZE             1024
+#define MT7663_EEPROM_SIZE             1536
 #define MT7615_TOKEN_SIZE              4096
 
 #define MT_FRAC_SCALE          12