mt76: mt7915: add mt7916 calibrated data support
Adjust proper eeprom size and add default calibrated data support for mt7916. Co-developed-by: Shayne Chen <shayne.chen@mediatek.com> Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com> Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com> Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com> Reviewed-by: Ryder Lee <ryder.lee@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
417a4534d2
commit
beed8bea8d
3 changed files with 20 additions and 6 deletions
|
|
@ -35,6 +35,7 @@ static int mt7915_check_eeprom(struct mt7915_dev *dev)
|
|||
|
||||
switch (val) {
|
||||
case 0x7915:
|
||||
case 0x7916:
|
||||
return 0;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
@ -52,6 +53,9 @@ mt7915_eeprom_load_default(struct mt7915_dev *dev)
|
|||
if (dev->dbdc_support)
|
||||
default_bin = MT7915_EEPROM_DEFAULT_DBDC;
|
||||
|
||||
if (!is_mt7915(&dev->mt76))
|
||||
default_bin = MT7916_EEPROM_DEFAULT;
|
||||
|
||||
ret = request_firmware(&fw, default_bin, dev->mt76.dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -62,7 +66,7 @@ mt7915_eeprom_load_default(struct mt7915_dev *dev)
|
|||
goto out;
|
||||
}
|
||||
|
||||
memcpy(eeprom, fw->data, MT7915_EEPROM_SIZE);
|
||||
memcpy(eeprom, fw->data, mt7915_eeprom_size(dev));
|
||||
dev->flash_mode = true;
|
||||
|
||||
out:
|
||||
|
|
@ -74,8 +78,9 @@ out:
|
|||
static int mt7915_eeprom_load(struct mt7915_dev *dev)
|
||||
{
|
||||
int ret;
|
||||
u16 eeprom_size = mt7915_eeprom_size(dev);
|
||||
|
||||
ret = mt76_eeprom_init(&dev->mt76, MT7915_EEPROM_SIZE);
|
||||
ret = mt76_eeprom_init(&dev->mt76, eeprom_size);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
@ -91,7 +96,7 @@ static int mt7915_eeprom_load(struct mt7915_dev *dev)
|
|||
return -EINVAL;
|
||||
|
||||
/* read eeprom data from efuse */
|
||||
block_num = DIV_ROUND_UP(MT7915_EEPROM_SIZE,
|
||||
block_num = DIV_ROUND_UP(eeprom_size,
|
||||
MT7915_EEPROM_BLOCK_SIZE);
|
||||
for (i = 0; i < block_num; i++)
|
||||
mt7915_mcu_get_eeprom(dev,
|
||||
|
|
|
|||
|
|
@ -3574,7 +3574,8 @@ static int mt7915_mcu_set_eeprom_flash(struct mt7915_dev *dev)
|
|||
#define PAGE_IDX_MASK GENMASK(4, 2)
|
||||
#define PER_PAGE_SIZE 0x400
|
||||
struct mt7915_mcu_eeprom req = { .buffer_mode = EE_MODE_BUFFER };
|
||||
u8 total = DIV_ROUND_UP(MT7915_EEPROM_SIZE, PER_PAGE_SIZE);
|
||||
u16 eeprom_size = mt7915_eeprom_size(dev);
|
||||
u8 total = DIV_ROUND_UP(eeprom_size, PER_PAGE_SIZE);
|
||||
u8 *eep = (u8 *)dev->mt76.eeprom.data;
|
||||
int eep_len;
|
||||
int i;
|
||||
|
|
@ -3583,8 +3584,8 @@ static int mt7915_mcu_set_eeprom_flash(struct mt7915_dev *dev)
|
|||
struct sk_buff *skb;
|
||||
int ret;
|
||||
|
||||
if (i == total - 1 && !!(MT7915_EEPROM_SIZE % PER_PAGE_SIZE))
|
||||
eep_len = MT7915_EEPROM_SIZE % PER_PAGE_SIZE;
|
||||
if (i == total - 1 && !!(eeprom_size % PER_PAGE_SIZE))
|
||||
eep_len = eeprom_size % PER_PAGE_SIZE;
|
||||
else
|
||||
eep_len = PER_PAGE_SIZE;
|
||||
|
||||
|
|
|
|||
|
|
@ -37,8 +37,11 @@
|
|||
|
||||
#define MT7915_EEPROM_DEFAULT "mediatek/mt7915_eeprom.bin"
|
||||
#define MT7915_EEPROM_DEFAULT_DBDC "mediatek/mt7915_eeprom_dbdc.bin"
|
||||
#define MT7916_EEPROM_DEFAULT "mediatek/mt7916_eeprom.bin"
|
||||
|
||||
#define MT7915_EEPROM_SIZE 3584
|
||||
#define MT7916_EEPROM_SIZE 4096
|
||||
|
||||
#define MT7915_EEPROM_BLOCK_SIZE 16
|
||||
#define MT7915_TOKEN_SIZE 8192
|
||||
|
||||
|
|
@ -486,6 +489,11 @@ static inline u16 mt7915_wtbl_size(struct mt7915_dev *dev)
|
|||
return is_mt7915(&dev->mt76) ? MT7915_WTBL_SIZE : MT7916_WTBL_SIZE;
|
||||
}
|
||||
|
||||
static inline u16 mt7915_eeprom_size(struct mt7915_dev *dev)
|
||||
{
|
||||
return is_mt7915(&dev->mt76) ? MT7915_EEPROM_SIZE : MT7916_EEPROM_SIZE;
|
||||
}
|
||||
|
||||
void mt7915_dual_hif_set_irq_mask(struct mt7915_dev *dev, bool write_reg,
|
||||
u32 clear, u32 set);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue