mt76: support reading EEPROM data embedded in fdt

Some platforms boot from SD card and don't come with calibration data
stored anywhere on the board.
As EEPROM data is rather small it can be embedded into the device tree
to be loaded from there by the mt76.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Daniel Golle 2021-08-25 02:32:16 +01:00 committed by Felix Fietkau
parent c4a784e34b
commit 255d3807b6
1 changed files with 11 additions and 0 deletions

View File

@ -15,6 +15,7 @@ int mt76_get_of_eeprom(struct mt76_dev *dev, void *eep, int offset, int len)
struct device_node *np = dev->dev->of_node; struct device_node *np = dev->dev->of_node;
struct mtd_info *mtd; struct mtd_info *mtd;
const __be32 *list; const __be32 *list;
const void *data;
const char *part; const char *part;
phandle phandle; phandle phandle;
int size; int size;
@ -24,6 +25,16 @@ int mt76_get_of_eeprom(struct mt76_dev *dev, void *eep, int offset, int len)
if (!np) if (!np)
return -ENOENT; return -ENOENT;
data = of_get_property(np, "mediatek,eeprom-data", &size);
if (data) {
if (size > len)
return -EINVAL;
memcpy(eep, data, size);
return 0;
}
list = of_get_property(np, "mediatek,mtd-eeprom", &size); list = of_get_property(np, "mediatek,mtd-eeprom", &size);
if (!list) if (!list)
return -ENOENT; return -ENOENT;