From c3b9d0d1e297ff22f18c2df9065053e0451f1595 Mon Sep 17 00:00:00 2001
From: Christian Lamparter <chunkeey@gmail.com>
Date: Fri, 15 Oct 2021 19:17:42 +0200
Subject: [PATCH] ipq40xx: utilize nvmem on Netgear EX61X0 v2 Series

the Netgear EX6100v2 and EX6150v2 can utilize the nvmem
for the pre-calibration and mac-address for both WIFI
devices.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
---
 .../etc/hotplug.d/firmware/11-ath10k-caldata  | 10 -------
 .../arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi   | 27 +++++++++++++++++++
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 35862ce3bcf..f90c5580153 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -154,11 +154,6 @@ case "$FIRMWARE" in
 		( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x0 0x2f20 ) || \
 		( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_0" 0x0 0x2f20 )
 		;;
-	netgear,ex6100v2 |\
-	netgear,ex6150v2)
-		caldata_extract "ART" 0x1000 0x2f20
-		ath10k_patch_mac $(mtd_get_mac_binary dnidata 0x0)
-		;;
 	netgear,rbr50|\
 	netgear,rbs50|\
 	netgear,srr60|\
@@ -277,11 +272,6 @@ case "$FIRMWARE" in
 		( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x8000 0x2f20 ) || \
 		( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_2" 0x0 0x2f20 )
 		;;
-	netgear,ex6100v2 |\
-	netgear,ex6150v2)
-		caldata_extract "ART" 0x5000 0x2f20
-		ath10k_patch_mac $(mtd_get_mac_binary dnidata 0xc)
-		;;
 	netgear,rbr50|\
 	netgear,rbs50|\
 	netgear,srr60|\
diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi
index dbf9a02a294..eb97130c27d 100644
--- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi
@@ -253,7 +253,18 @@
 			partition7@170000 {
 				label = "ART";
 				reg = <0x00170000 0x00010000>;
+				compatible = "nvmem-cells";
 				read-only;
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				precal_art_1000: precal@1000 {
+					reg = <0x1000 0x2f20>;
+				};
+
+				precal_art_5000: precal@5000 {
+					reg = <0x5000 0x2f20>;
+				};
 			};
 
 			partition8@180000 {
@@ -269,9 +280,21 @@
 			};
 
 			partition10@1a0000 {
+				compatible = "nvmem-cells";
 				label = "dnidata";
 				reg = <0x001a0000 0x00010000>;
 				read-only;
+
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				macaddr_dnidata_0: macaddr@0 {
+					reg = <0x0 0x6>;
+				};
+
+				macaddr_dnidata_c: macaddr@c {
+					reg = <0xc 0x6>;
+				};
 			};
 
 			partition11@1b0000 {
@@ -305,8 +328,12 @@
 
 &wifi0 {
 	status = "okay";
+	nvmem-cell-names = "pre-calibration", "mac-address";
+	nvmem-cells = <&precal_art_1000>, <&macaddr_dnidata_0>;
 };
 
 &wifi1 {
 	status = "okay";
+	nvmem-cell-names = "pre-calibration", "mac-address";
+	nvmem-cells = <&precal_art_5000>, <&macaddr_dnidata_c>;
 };
-- 
GitLab