ipq40xx: utilize nvmem-cells for plasmacloud,pa2200
authorSven Eckelmann <sven@narfation.org>
Tue, 25 Oct 2022 07:12:16 +0000 (09:12 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 13 Nov 2022 14:26:34 +0000 (15:26 +0100)
The calibration data and mac addresses on this device are stored in the
0:ART partition. It is therefore possible to move the code to handle them
directly to the devicetree instead of the various scripts.

But the actual relevant information about the partition layout is provided
by the bootloader via bootargs (mtdparts) and not via the devicetree
itself. Instead of using a fixed-partition template, the mtd dynamic
partitions support from the upstream kernel is used.

Reported-by: Robert Marko <robert.marko@sartura.hr>
Tested-by: Michaƫl BILCOT <michael.bilcot@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-pa2200.dts

index 246bc6ca219e0e4a37888b02dc4962673f50734a..7498e1c71040e8dbb76f7742e6971da66f7c455c 100644 (file)
@@ -34,9 +34,6 @@ case "$FIRMWARE" in
                /usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
                /usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
                ;;
-       plasmacloud,pa2200)
-               caldata_extract "0:ART" 0x9000 0x2f20
-               ;;
        linksys,ea8300 |\
        linksys,mr8300)
                caldata_extract "ART" 0x9000 0x2f20
@@ -75,8 +72,7 @@ case "$FIRMWARE" in
                /usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
                /usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
                ;;
-       cellc,rtl30vw |\
-       plasmacloud,pa2200)
+       cellc,rtl30vw)
                caldata_extract "0:ART" 0x1000 0x2f20
                ;;
        devolo,magic-2-wifi-next)
@@ -169,8 +165,7 @@ case "$FIRMWARE" in
                /usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
                /usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
                ;;
-       cellc,rtl30vw |\
-       plasmacloud,pa2200)
+       cellc,rtl30vw)
                caldata_extract "0:ART" 0x5000 0x2f20
                ;;
        devolo,magic-2-wifi-next)
index 461f05bc73bf05119a64659de4022c217a8b2474..d7dcf053be4001ab76ac735280430b9682fe7455 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <24000000>;
+
                /* partitions are passed via bootloader */
+               partitions {
+                       partition-art {
+                               compatible = "nvmem-cells";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               label = "0:ART";
+
+                               precal_art_1000: precal@1000 {
+                                       reg = <0x1000 0x2f20>;
+                               };
+
+                               precal_art_5000: precal@5000 {
+                                       reg = <0x5000 0x2f20>;
+                               };
+
+                               precal_art_9000: precal@9000 {
+                                       reg = <0x9000 0x2f20>;
+                               };
+
+                               macaddr_gmac0: macaddr@0 {
+                                       reg = <0x0 0x6>;
+                               };
+
+                               macaddr_gmac1: macaddr@6 {
+                                       reg = <0x6 0x6>;
+                               };
+                       };
+               };
        };
 };
 
                        reg = <0x00010000 0 0 0 0>;
                        qcom,ath10k-calibration-variant = "PlasmaCloud-PA2200";
                        ieee80211-freq-limit = <5170000 5350000>;
+
+                       nvmem-cell-names = "pre-calibration";
+                       nvmem-cells = <&precal_art_9000>;
                };
        };
 };
 &wifi0 {
        status = "okay";
        qcom,ath10k-calibration-variant = "PlasmaCloud-PA2200";
+
+       nvmem-cell-names = "pre-calibration";
+       nvmem-cells = <&precal_art_1000>;
 };
 
 &wifi1 {
        status = "okay";
        qcom,ath10k-calibration-variant = "PlasmaCloud-PA2200";
        ieee80211-freq-limit = <5470000 5875000>;
+
+       nvmem-cell-names = "pre-calibration";
+       nvmem-cells = <&precal_art_5000>;
 };