ath79: convert ath10k pre-calibration data to NVMEM (ASCII MAC)
authorShiji Yang <yangshiji66@qq.com>
Thu, 1 Feb 2024 11:39:51 +0000 (19:39 +0800)
committerChristian Marangi <ansuelsmth@gmail.com>
Thu, 1 Feb 2024 16:09:02 +0000 (17:09 +0100)
This patch converts ath10k pre-calibration data to NVMEM format for
wave 2 devices with mtd ASCII MAC address. The "pre-calibration"
NVMEM cell size is 0x2f20. All unportable MAC address settings have
been moved to '10_fix_wifi_mac' scripts.

Signed-off-by: Shiji Yang <yangshiji66@qq.com>
target/linux/ath79/dts/qca9561_nec_wf1200cr.dts
target/linux/ath79/dts/qca9563_nec_wg1200cr.dts
target/linux/ath79/dts/qca9563_phicomm_k2t.dts
target/linux/ath79/dts/qca9563_tplink_deco-s4-v2.dts
target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac

index 90aac30d7f4843c6edd99db47ed03ef1a1bcc8d7..8f67299c4892c8c01f038c29e05559d3de99f276 100644 (file)
                                label = "art";
                                reg = <0x7f0000 0x010000>;
                                read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       precal_art_5000: pre-calibration@5000 {
+                                               reg = <0x5000 0x2f20>;
+                                       };
+                               };
                        };
                };
        };
        wifi@0,0 {
                compatible = "qcom,ath10k";
                reg = <0x0000 0 0 0 0>;
+               nvmem-cells = <&precal_art_5000>;
+               nvmem-cell-names = "pre-calibration";
        };
 };
 
index 26c1932154f24bf98dd8c5fca8c6605d56700d16..22ba567694ac9937795e669e1f8c3e7e2df62d1f 100644 (file)
                                label = "art";
                                reg = <0x7f0000 0x010000>;
                                read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       precal_art_5000: pre-calibration@5000 {
+                                               reg = <0x5000 0x2f20>;
+                                       };
+                               };
                        };
                };
        };
        wifi@0,0 {
                compatible = "pci168c,0056";
                reg = <0x0000 0 0 0 0>;
+               nvmem-cells = <&precal_art_5000>;
+               nvmem-cell-names = "pre-calibration";
        };
 };
 
index 9dbb291295fa8be5465e7a14af2b375eff8e8bee..5befbb16086d0f6bbc5e15fd70be591735c6d3f4 100644 (file)
 
 &pcie {
        status = "okay";
+
+       wifi@0,0 {
+               compatible = "qcom,ath10k";
+               reg = <0x0000 0 0 0 0>;
+               nvmem-cells = <&precal_art_5000>;
+               nvmem-cell-names = "pre-calibration";
+       };
 };
 
 &spi {
                                label = "art";
                                reg = <0xff0000 0x010000>;
                                read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       precal_art_5000: pre-calibration@5000 {
+                                               reg = <0x5000 0x2f20>;
+                                       };
+                               };
                        };
                };
        };
index e4bb88807ebf248bebd1577fdf2575b55414d986..9c731ad99692a4c59f96f3d540914d31a993b791 100644 (file)
 
 &pcie {
        status = "okay";
+
+       wifi@0,0 {
+               compatible = "qcom,ath10k";
+               reg = <0x0000 0 0 0 0>;
+               nvmem-cells = <&precal_art_5000>;
+               nvmem-cell-names = "pre-calibration";
+       };
 };
 
 &mdio0 {
                                label = "art";
                                reg = <0x1f0000 0x10000>;
                                read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       precal_art_5000: pre-calibration@5000 {
+                                               reg = <0x5000 0x2f20>;
+                                       };
+                               };
                        };
 
                        partition@200000 {
index 6145487393c69154f153b209218f8786933091e9..c5256a23bb533b92436e16c8572ae2d08f5e3931 100644 (file)
@@ -3,7 +3,6 @@
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
 . /lib/functions/caldata.sh
-. /lib/functions/k2t.sh
 
 board=$(board_name)
 
@@ -182,26 +181,6 @@ case "$FIRMWARE" in
                ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
                        /lib/firmware/ath10k/QCA9888/hw2.0/board.bin
                ;;
-       nec,wf1200cr|\
-       nec,wg1200cr)
-               caldata_extract "art" 0x5000 0x2f20
-               ath10k_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
-               ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
-                       /lib/firmware/ath10k/QCA9888/hw2.0/board.bin
-               ;;
-       phicomm,k2t)
-               caldata_extract "art" 0x5000 0x2f20
-               ath10k_patch_mac $(k2t_get_mac "5g_mac")
-               ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
-                       /lib/firmware/ath10k/QCA9888/hw2.0/board.bin
-               ;;
-       tplink,deco-s4-v2)
-               caldata_extract "art" 0x5000 0x2f20
-               base_mac=$(mtd_get_mac_encrypted_deco $(find_mtd_part config))
-               ath10k_patch_mac $(macaddr_add $base_mac 2)
-               ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
-                       /lib/firmware/ath10k/QCA9888/hw2.0/board.bin
-               ;;
        esac
        ;;
 *)
index 42b69d2ca0c4dde9ce4e8da2791e7d46e69212c6..d3392aa61e71507a5a8fa645ebb611ebdaaf19ff 100644 (file)
@@ -59,13 +59,26 @@ case "$board" in
                [ "$PHYNBR" -eq 1 ] && \
                        macaddr_add "$(mtd_get_mac_ascii u-boot-env ethaddr)" 1 > /sys${DEVPATH}/macaddress
                ;;
+       nec,wf1200cr|\
+       nec,wg1200cr)
+               [ "$PHYNBR" -eq 0 ] && \
+                       mtd_get_mac_ascii devdata wlan5mac > /sys${DEVPATH}/macaddress
+               ;;
        phicomm,k2t)
+               [ "$PHYNBR" -eq 0 ] && \
+                       k2t_get_mac "5g_mac" > /sys${DEVPATH}/macaddress
                # The K2T factory firmware does use LAN mac address as the 2.4G wifi mac address
                [ "$PHYNBR" -eq 1 ] && \
                        k2t_get_mac "lan_mac" > /sys${DEVPATH}/macaddress
                ;;
        siemens,ws-ap3610)
                mtd_get_mac_ascii cfg1 RADIOADDR${PHYNBR} > /sys${DEVPATH}/macaddress
+               ;;
+       tplink,deco-s4-v2)
+               base_mac=$(mtd_get_mac_encrypted_deco $(find_mtd_part config))
+               [ "$PHYNBR" -eq 0 ] && \
+                       macaddr_add $base_mac 2 > /sys${DEVPATH}/macaddress
+
                ;;
        trendnet,tew-823dru)
                # set the 2.4G interface mac address to LAN MAC