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:
		@@ -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
 | 
			
		||||
@@ -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>;
 | 
			
		||||
				};
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user