Skip to content

Commit

Permalink
mt76x0: eeprom: load eeprom data from mtd by default
Browse files Browse the repository at this point in the history
Read eeprom data from mtd memory by default and fall-back
to efuse if it fails

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
Lorenzo Bianconi authored and Felix Fietkau committed Oct 1, 2018
1 parent 188fd8c commit 8d98c15
Showing 1 changed file with 43 additions and 13 deletions.
56 changes: 43 additions & 13 deletions drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c
Original file line number Diff line number Diff line change
Expand Up @@ -277,24 +277,54 @@ void mt76x0_get_power_info(struct mt76x0_dev *dev, u8 *info)
info[1] = 5;
}

static int mt76x0_check_eeprom(struct mt76x0_dev *dev)
{
u16 val;

val = get_unaligned_le16(dev->mt76.eeprom.data);
if (!val)
val = get_unaligned_le16(dev->mt76.eeprom.data +
MT_EE_PCI_ID);

switch (val) {
case 0x7650:
case 0x7610:
return 0;
default:
dev_err(dev->mt76.dev, "EEPROM data check failed: %04x\n",
val);
return -EINVAL;
}
}

static int mt76x0_load_eeprom(struct mt76x0_dev *dev)
{
int found;

found = mt76_eeprom_init(&dev->mt76, MT76X0_EEPROM_SIZE);
if (found < 0)
return found;

if (found && !mt76x0_check_eeprom(dev))
return 0;

found = mt76x0_efuse_physical_size_check(dev);
if (found < 0)
return found;

return mt76x02_get_efuse_data(&dev->mt76, 0, dev->mt76.eeprom.data,
MT76X0_EEPROM_SIZE, MT_EE_READ);
}

int mt76x0_eeprom_init(struct mt76x0_dev *dev)
{
u8 version, fae;
u16 data;
int ret;
int err;

ret = mt76x0_efuse_physical_size_check(dev);
if (ret)
return ret;

ret = mt76_eeprom_init(&dev->mt76, MT76X0_EEPROM_SIZE);
if (ret < 0)
return ret;

ret = mt76x02_get_efuse_data(&dev->mt76, 0, dev->mt76.eeprom.data,
MT76X0_EEPROM_SIZE, MT_EE_READ);
if (ret)
return ret;
err = mt76x0_load_eeprom(dev);
if (err < 0)
return err;

data = mt76x02_eeprom_get(&dev->mt76, MT_EE_VERSION);
version = data >> 8;
Expand Down

0 comments on commit 8d98c15

Please sign in to comment.