From 25c9ebc6d405bf1bcf83fa4a59b315df245be0c0 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Mon, 19 Feb 2024 03:18:47 +0000 Subject: [PATCH] mediatek: filogic: asus-tuf-ax4200: use NVMEM-on-UBI Use newly added support for NVMEM-on-UBI instead of extracting MAC address and WiFi EEPROM data in userspace. Signed-off-by: Daniel Golle --- .../mediatek/dts/mt7986a-asus-tuf-ax4200.dts | 58 +++++++++++++++++-- .../filogic/base-files/etc/board.d/02_network | 1 - .../etc/hotplug.d/firmware/11-mt76-caldata | 8 --- 3 files changed, 52 insertions(+), 15 deletions(-) diff --git a/target/linux/mediatek/dts/mt7986a-asus-tuf-ax4200.dts b/target/linux/mediatek/dts/mt7986a-asus-tuf-ax4200.dts index e9c8edc3dcee..22530df9bb9d 100644 --- a/target/linux/mediatek/dts/mt7986a-asus-tuf-ax4200.dts +++ b/target/linux/mediatek/dts/mt7986a-asus-tuf-ax4200.dts @@ -13,6 +13,7 @@ aliases { serial0 = &uart0; + label-mac-device = &gmac0; led-boot = &led_system; led-failsafe = &led_system; led-running = &led_system; @@ -21,7 +22,7 @@ chosen { stdout-path = "serial0:115200n8"; - bootargs-override = "ubi.mtd=UBI_DEV"; + bootargs-override = ""; }; memory { @@ -101,6 +102,8 @@ /* LAN */ compatible = "mediatek,eth-mac"; reg = <0>; + nvmem-cells = <&macaddr_factory_4>; + nvmem-cell-names = "mac-address"; phy-mode = "2500base-x"; fixed-link { @@ -215,25 +218,66 @@ 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 = "bootloader"; reg = <0x0 0x400000>; + label = "bootloader"; read-only; }; partition@400000 { - label = "UBI_DEV"; + compatible = "linux,ubi"; reg = <0x400000 0xfc00000>; + label = "UBI_DEV"; + + 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>; + }; + }; +}; + &switch { ports { #address-cells = <1>; @@ -340,10 +384,12 @@ }; &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 { diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network index a639f3df16a8..9f9544dec052 100644 --- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network +++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network @@ -109,7 +109,6 @@ mediatek_setup_macs() local label_mac="" case $board in - asus,tuf-ax4200|\ asus,tuf-ax6000) CI_UBIPART="UBI_DEV" addr=$(mtd_get_mac_binary_ubi "Factory" 0x4) diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata index 9f9084732dfd..bb81444b01b7 100644 --- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata +++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata @@ -57,14 +57,6 @@ case "$FIRMWARE" in ;; esac ;; -"mediatek/mt7986_eeprom_mt7976_dbdc.bin") - case "$board" in - asus,tuf-ax4200) - CI_UBIPART="UBI_DEV" - caldata_extract_ubi "Factory" 0x0 0x1000 - ;; - esac - ;; "mediatek/mt7986_eeprom_mt7976_dual.bin") case "$board" in asus,tuf-ax6000) -- 2.30.2