ipq40xx: use NVMEM-on-UBI for ASUS RT-AC58U
authorDaniel Golle <daniel@makrotopia.org>
Sun, 25 Feb 2024 21:59:39 +0000 (21:59 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Wed, 5 Jun 2024 12:46:00 +0000 (13:46 +0100)
Instead of extracting WiFi precal as well as MAC addresses in userspace
use recently introduced NVMEM-on-UBI instead.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Tested-by: Christian Lamparter <chunkeey@gmail.com>
target/linux/ipq40xx/base-files/etc/board.d/02_network
target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ipq40xx/config-6.6
target/linux/ipq40xx/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq4018-rt-ac58u.dts

index df0fca754424d6a5501d7a4f85bc654b3b11e16d..7a2874a6e442d9d4282a211ee94075f6d6940814 100644 (file)
@@ -170,11 +170,6 @@ ipq40xx_setup_macs()
        asus,rt-ac42u)
                label_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
                ;;
-       asus,rt-ac58u)
-               wan_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
-               lan_mac=$(mtd_get_mac_binary_ubi Factory 0x5006)
-               label_mac=$wan_mac
-               ;;
        avm,fritzbox-7530)
                local tffsdev=$(find_mtd_chardev "nand-tffs")
                wan_mac=$(/usr/bin/fritz_tffs_nand -b -d $tffsdev -n macdsl)
index 3b7f44282dcabe5ba94229323268d9ed0dfbc1c1..4a1a0ff31118a3485c1930865c011bac871dfa74 100644 (file)
@@ -58,8 +58,7 @@ case "$FIRMWARE" in
 "ath10k/pre-cal-ahb-a000000.wifi.bin")
        case "$board" in
        asus,map-ac2200|\
-       asus,rt-ac42u|\
-       asus,rt-ac58u)
+       asus,rt-ac42u)
                caldata_extract_ubi "Factory" 0x1000 0x2f20
                ;;
        avm,fritzbox-4040)
@@ -158,8 +157,7 @@ case "$FIRMWARE" in
        ;;
 "ath10k/pre-cal-ahb-a800000.wifi.bin")
        case "$board" in
-       asus,map-ac2200|\
-       asus,rt-ac58u)
+       asus,map-ac2200)
                caldata_extract_ubi "Factory" 0x5000 0x2f20
                ;;
        avm,fritzbox-4040)
index 52ac1a585e0eb74ab5649cd5c11c8f7db90199f8..3049efc3d6c38e9f8cf8260b1f5b7f97d4d5d4fd 100644 (file)
@@ -309,6 +309,7 @@ CONFIG_MTD_SPLIT_WRGG_FW=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_BEB_LIMIT=20
 CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_NVMEM=y
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_NEED_DMA_MAP_STATE=y
index 4f31c8f283cf12a5fbbe3ea15ae653cca62f361f..e58b3378d5743b4319243872fcc85ea6841ba0f1 100644 (file)
@@ -20,6 +20,7 @@
                led-failsafe = &led_power;
                led-running = &led_power;
                led-upgrade = &led_power;
+               label-mac-device = &swport5;
        };
 
        soc {
                        #size-cells = <1>;
 
                        partition@0 {
-                               label = "ubi";
+                               compatible = "linux,ubi";
                                reg = <0x00000000 0x08000000>;
+                               label = "ubi";
+
+                               volumes {
+                                       ubi_factory: ubi-volume-factory {
+                                               volname = "Factory";
+                                       };
+                               };
                        };
                };
        };
 };
 
+&ubi_factory {
+       nvmem-layout {
+               compatible = "fixed-layout";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               precal_factory_1000: precal@1000 {
+                       reg = <0x1000 0x2f20>;
+               };
+
+               macaddr_factory_1006: macaddr@1006 {
+                       reg = <0x1006 0x6>;
+               };
+
+               precal_factory_5000: precal@5000 {
+                       reg = <0x5000 0x2f20>;
+               };
+
+               macaddr_factory_5006: macaddr@5006 {
+                       reg = <0x5006 0x6>;
+               };
+       };
+};
+
 &blsp1_uart1 {
        pinctrl-0 = <&serial_pins>;
        pinctrl-names = "default";
 
 &gmac {
        status = "okay";
+       nvmem-cells = <&macaddr_factory_5006>;
+       nvmem-cell-names = "mac-address";
 };
 
 &switch {
 
 &swport5 {
        status = "okay";
+       nvmem-cells = <&macaddr_factory_1006>;
+       nvmem-cell-names = "mac-address";
 };
 
 &wifi0 {
        status = "okay";
+       nvmem-cell-names = "pre-calibration";
+       nvmem-cells = <&precal_factory_1000>;
        qcom,ath10k-calibration-variant = "RT-AC58U";
 };
 
 &wifi1 {
        status = "okay";
+       nvmem-cell-names = "pre-calibration";
+       nvmem-cells = <&precal_factory_5000>;
        qcom,ath10k-calibration-variant = "RT-AC58U";
 };