Browse Source

ath79: WNDR3700/3800/MAC: utilize nvmem for caldata fetching

converts the still popular WNDR3700 Series to fetch the
caldata through nvmem. As the "MAC with NVMEM" has shown,
there could pitfalls along the way.

Signed-off-by: Christian Lamparter <[email protected]>
Christian Lamparter 4 years ago
parent
commit
217571b6ab

+ 0 - 2
target/linux/ath79/dts/ar7161_netgear_wndr.dtsi

@@ -153,7 +153,6 @@
 		compatible = "pci168c,0029";
 		reg = <0x8800 0 0 0 0>;
 
-		qca,no-eeprom;
 		#gpio-cells = <2>;
 		gpio-controller;
 
@@ -181,7 +180,6 @@
 		compatible = "pci168c,0029";
 		reg = <0x9000 0 0 0 0>;
 
-		qca,no-eeprom;
 		#gpio-cells = <2>;
 		gpio-controller;
 	};

+ 12 - 4
target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts

@@ -39,13 +39,13 @@
 };
 
 &ath9k0 {
-	nvmem-cells = <&macaddr_art_c>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_c>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &ath9k1 {
-	nvmem-cells = <&macaddr_art_0>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_0>, <&cal_art_5000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &eth0 {
@@ -74,4 +74,12 @@
 	macaddr_art_c: macaddr@c {
 		reg = <0xc 0x6>;
 	};
+
+	cal_art_1000: cal@1000 {
+		reg = <0x1000 0xeb8>;
+	};
+
+	cal_art_5000: cal@5000 {
+		reg = <0x5000 0xeb8>;
+	};
 };

+ 12 - 4
target/linux/ath79/dts/ar7161_netgear_wndr3700.dts

@@ -39,13 +39,13 @@
 };
 
 &ath9k0 {
-	nvmem-cells = <&macaddr_art_c>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_c>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &ath9k1 {
-	nvmem-cells = <&macaddr_art_0>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_0>, <&cal_art_5000>;
+	nvmem-cell-names = "mac-address", "calibration";
 
 	/* The original WNDR3700(v1) variant have four antennae dedicated
 	 * to the 5GHz radio as well. Again, two antennae are available for
@@ -93,4 +93,12 @@
 	macaddr_art_c: macaddr@c {
 		reg = <0xc 0x6>;
 	};
+
+	cal_art_1000: cal@1000 {
+		reg = <0x1000 0xeb8>;
+	};
+
+	cal_art_5000: cal@5000 {
+		reg = <0x5000 0xeb8>;
+	};
 };

+ 12 - 4
target/linux/ath79/dts/ar7161_netgear_wndr3800.dts

@@ -40,13 +40,13 @@
 };
 
 &ath9k0 {
-	nvmem-cells = <&macaddr_art_c>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_c>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &ath9k1 {
-	nvmem-cells = <&macaddr_art_0>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_0>, <&cal_art_5000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &eth0 {
@@ -75,4 +75,12 @@
 	macaddr_art_c: macaddr@c {
 		reg = <0xc 0x6>;
 	};
+
+	cal_art_1000: cal@1000 {
+		reg = <0x1000 0xeb8>;
+	};
+
+	cal_art_5000: cal@5000 {
+		reg = <0x5000 0xeb8>;
+	};
 };

+ 12 - 4
target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts

@@ -40,13 +40,13 @@
 };
 
 &ath9k0 {
-	nvmem-cells = <&macaddr_art_c>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_c>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &ath9k1 {
-	nvmem-cells = <&macaddr_art_0>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_0>, <&cal_art_5000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &eth0 {
@@ -75,4 +75,12 @@
 	macaddr_art_c: macaddr@c {
 		reg = <0xc 0x6>;
 	};
+
+	cal_art_1000: cal@1000 {
+		reg = <0x1000 0xeb8>;
+	};
+
+	cal_art_5000: cal@5000 {
+		reg = <0x5000 0xeb8>;
+	};
 };

+ 12 - 4
target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts

@@ -39,13 +39,13 @@
 };
 
 &ath9k0 {
-	nvmem-cells = <&macaddr_art_c>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_c>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &ath9k1 {
-	nvmem-cells = <&macaddr_art_0>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_0>, <&cal_art_5000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &eth0 {
@@ -74,4 +74,12 @@
 	macaddr_art_c: macaddr@c {
 		reg = <0xc 0x6>;
 	};
+
+	cal_art_1000: cal@1000 {
+		reg = <0x1000 0xeb8>;
+	};
+
+	cal_art_5000: cal@5000 {
+		reg = <0x5000 0xeb8>;
+	};
 };

+ 12 - 4
target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts

@@ -40,13 +40,13 @@
 };
 
 &ath9k0 {
-	nvmem-cells = <&macaddr_art_c>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_c>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &ath9k1 {
-	nvmem-cells = <&macaddr_art_0>;
-	nvmem-cell-names = "mac-address";
+	nvmem-cells = <&macaddr_art_0>, <&cal_art_5000>;
+	nvmem-cell-names = "mac-address", "calibration";
 };
 
 &eth0 {
@@ -75,4 +75,12 @@
 	macaddr_art_c: macaddr@c {
 		reg = <0xc 0x6>;
 	};
+
+	cal_art_1000: cal@1000 {
+		reg = <0x1000 0xeb8>;
+	};
+
+	cal_art_5000: cal@5000 {
+		reg = <0x5000 0xeb8>;
+	};
 };

+ 2 - 14
target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom

@@ -146,13 +146,7 @@ case "$FIRMWARE" in
 "ath9k-eeprom-pci-0000:00:11.0.bin")
 	case $board in
 	buffalo,wzr-600dhp|\
-	buffalo,wzr-hp-ag300h|\
-	netgear,wndr3700|\
-	netgear,wndr3700-v2|\
-	netgear,wndr3800|\
-	netgear,wndr3800ch|\
-	netgear,wndrmac-v1|\
-	netgear,wndrmac-v2)
+	buffalo,wzr-hp-ag300h)
 		caldata_extract "art" 0x1000 0xeb8
 		;;
 	dlink,dir-825-b1)
@@ -170,13 +164,7 @@ case "$FIRMWARE" in
 "ath9k-eeprom-pci-0000:00:12.0.bin")
 	case $board in
 	buffalo,wzr-600dhp|\
-	buffalo,wzr-hp-ag300h|\
-	netgear,wndr3700|\
-	netgear,wndr3700-v2|\
-	netgear,wndr3800|\
-	netgear,wndr3800ch|\
-	netgear,wndrmac-v1|\
-	netgear,wndrmac-v2)
+	buffalo,wzr-hp-ag300h)
 		caldata_extract "art" 0x5000 0xeb8
 		;;
 	dlink,dir-825-b1)