apm821xx: WNDR4700: utilize ath9k nvmem-cells

the WNDR4700 can fetch its calibration data and
mac-addresses directly from the "wifi_data" partition.
This allows us to get rid of the 10-ath9k-eeprom file
for the apm821xx target completely.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
Christian Lamparter 2022-01-16 18:42:18 +01:00
parent f095822699
commit a1693a8c2c
2 changed files with 23 additions and 49 deletions

View File

@ -1,45 +0,0 @@
#!/bin/sh
[ -e /lib/firmware/$FIRMWARE ] && exit 0
. /lib/functions/caldata.sh
board=$(board_name)
case "$FIRMWARE" in
"ath9k-eeprom-pci-0000:43:00.0.bin")
case $board in
netgear,wndr4700)
. /lib/upgrade/nand.sh
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
caldata_extract_ubi "caldata" 0x1000 0x1000
else
caldata_extract "wifi_data" 0x1000 0x1000
ath9k_patch_mac $(mtd_get_mac_binary wifi_data 0x0)
fi
;;
*)
caldata_die "board $board is not supported yet"
;;
esac
;;
"ath9k-eeprom-pci-0000:44:00.0.bin")
case $board in
netgear,wndr4700)
. /lib/upgrade/nand.sh
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
caldata_extract_ubi "caldata" 0x5000 0x1000
else
caldata_extract "wifi_data" 0x5000 0x1000
ath9k_patch_mac $(mtd_get_mac_binary wifi_data 0xc)
fi
;;
*)
caldata_die "board $board is not supported yet"
;;
esac
;;
esac

View File

@ -247,6 +247,25 @@
label = "wifi_data";
reg = <0x07fc0000 0x00040000>;
read-only;
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_wifi_0: macaddr@0 {
reg = <0x0 0x6>;
};
macaddr_wifi_c: macaddr@c {
reg = <0xc 0x6>;
};
calibration_wifi_1000: calibration@1000 {
reg = <0x1000 0x440>;
};
calibration_wifi_5000: calibration@5000 {
reg = <0x5000 0x440>;
};
};
};
};
@ -457,8 +476,8 @@
compatible = "pci168c,0030";
reg = <0x00430000 0 0 0 0>;
interrupts = <3>; /* INTC */
qca,no-eeprom;
/* wifi CAL & MAC is stored in nvram */
nvmem-cell-names = "mac-address", "calibration";
nvmem-cells = <&macaddr_wifi_0>, <&calibration_wifi_1000>;
/*
* Because this was such a pain.
@ -480,8 +499,8 @@
compatible = "pci168c,0033";
reg = <0x00440000 0 0 0 0>;
interrupts = <4>; /* INTD */
qca,no-eeprom;
/* wifi CAL & MAC is stored in nvram */
nvmem-cell-names = "mac-address", "calibration";
nvmem-cells = <&macaddr_wifi_c>, <&calibration_wifi_5000>;
};
};