mediatek: filogic: asus-rt-ax59u: use NVMEM-on-UBI
authorDaniel Golle <daniel@makrotopia.org>
Mon, 19 Feb 2024 03:11:18 +0000 (03:11 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 23 Feb 2024 14:35:00 +0000 (14:35 +0000)
Use newly added support for NVMEM-on-UBI instead of extracting MAC
address and WiFi EEPROM data in userspace.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
target/linux/mediatek/dts/mt7986a-asus-rt-ax59u.dts
target/linux/mediatek/filogic/base-files/etc/board.d/02_network
target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata

index e2acb637714d66aae7f9c8578414a08da85b2b6a..0034ad8284b1bdb5747111a1b29fdb5ed5e0dc67 100644 (file)
@@ -14,6 +14,7 @@
 
        aliases {
                serial0 = &uart0;
+               label-mac-device = &gmac0;
                led-boot = &led_status_green;
                led-failsafe = &led_status_red;
                led-running = &led_status_green;
@@ -22,7 +23,7 @@
 
        chosen {
                stdout-path = "serial0:115200n8";
-               bootargs-override = "ubi.mtd=UBI_DEV";
+               bootargs-override = "";
        };
 
        memory {
@@ -89,6 +90,8 @@
                /* LAN */
                compatible = "mediatek,eth-mac";
                reg = <0>;
+               nvmem-cells = <&macaddr_factory_4>;
+               nvmem-cell-names = "mac-address";
                phy-mode = "2500base-x";
 
                fixed-link {
        pinctrl-0 = <&spi_flash_pins>;
        status = "okay";
 
-       spi_nand: spi_nand@0 {
+       spi_nand: flash@0 {
                compatible = "spi-nand";
+               reg = <0>;
                #address-cells = <1>;
                #size-cells = <1>;
-               reg = <0>;
 
                spi-max-frequency = <20000000>;
                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
 
-               partitions: partitions {
+               /*
+                * ASUS bootloader tries to replace the partitions defined in
+                * Device Tree and by that also deletes all additional properties
+                * needed for UBI and NVMEM-on-UBI.
+                * Prevent this from happening by tricking the loader to delete and
+                * replace a bait node instead.
+                */
+               partitions: dummy {
+                       compatible = "u-boot-dummy-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               reg = <0x0 0x0>;
+                               label = "remove_me";
+                       };
+               };
+
+               partitions {
                        compatible = "fixed-partitions";
                        #address-cells = <1>;
                        #size-cells = <1>;
 
                        partition@0 {
-                               label = "u-boot";
                                reg = <0x0 0x400000>;
+                               label = "u-boot";
                                read-only;
                        };
 
                        partition@400000 {
+                               compatible = "linux,ubi";
+                               reg = <0x400000 0xfc00000>;
                                label = "UBI_DEV";
-                               reg = <0x400000 0x7c00000>;
+
+                               volumes {
+                                       ubi_factory: ubi-volume-factory {
+                                               volname = "Factory";
+                                       };
+                               };
                        };
                };
        };
 };
 
+&ubi_factory {
+       nvmem-layout {
+               compatible = "fixed-layout";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               eeprom_factory_0: eeprom@0 {
+                       reg = <0x0 0x1000>;
+               };
+
+               macaddr_factory_4: macaddr@4 {
+                       reg = <0x4 0x6>;
+               };
+       };
+};
+
 &watchdog {
        status = "okay";
 };
 
 &wifi {
-       status = "okay";
-       pinctrl-names = "default", "dbdc";
+       nvmem-cells = <&eeprom_factory_0>;
+       nvmem-cell-names = "eeprom";
        pinctrl-0 = <&wf_2g_5g_pins>;
        pinctrl-1 = <&wf_dbdc_pins>;
+       pinctrl-names = "default", "dbdc";
+       status = "okay";
 };
 
 &trng {
index 683282b87cef14dd283bfd3339382d5639130f5b..a639f3df16a886f0a53758feaa86a1173869e5d1 100644 (file)
@@ -109,7 +109,6 @@ mediatek_setup_macs()
        local label_mac=""
 
        case $board in
-       asus,rt-ax59u|\
        asus,tuf-ax4200|\
        asus,tuf-ax6000)
                CI_UBIPART="UBI_DEV"
index 1ec648584d9829a19df9a5f1c2f88bbbd1947bd8..9f9084732dfd4702a24c98c2f46627c84198f38f 100644 (file)
@@ -59,7 +59,6 @@ case "$FIRMWARE" in
        ;;
 "mediatek/mt7986_eeprom_mt7976_dbdc.bin")
        case "$board" in
-       asus,rt-ax59u|\
        asus,tuf-ax4200)
                CI_UBIPART="UBI_DEV"
                caldata_extract_ubi "Factory" 0x0 0x1000