From db533a62356b383cc33f902fad13959761302cc7 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sun, 22 Feb 2026 20:12:13 -0800 Subject: [PATCH] ipq40xx: use nvmem for cal data Userspace handling is deprecated. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/22178 Signed-off-by: Jonas Jelonek --- .../ipq40xx/base-files/etc/board.d/02_network | 13 ---- .../etc/hotplug.d/firmware/11-ath10k-caldata | 53 -------------- .../lib/preinit/05_set_iface_mac_ipq40xx.sh | 13 ---- .../ipq40xx/dts/qcom-ipq4018-ap4050dn.dts | 6 ++ .../dts/qcom-ipq4018-cs-w3-wd1200g-eup.dts | 1 + .../ipq40xx/dts/qcom-ipq4018-jalapeno.dtsi | 8 ++- .../dts/qcom-ipq4018-meshpoint-one.dts | 1 + .../ipq40xx/dts/qcom-ipq4019-habanero-dvk.dts | 12 ++-- .../dts/qcom-ipq4019-ncp-hg100-cellular.dts | 27 +++++++ .../linux/ipq40xx/dts/qcom-ipq4019-orbi.dtsi | 71 +++++++++++++++++++ .../ipq40xx/dts/qcom-ipq4019-rt-ac42u.dts | 40 ++++++++++- .../ipq40xx/dts/qcom-ipq4019-rtl30vw.dts | 18 +++++ .../ipq40xx/dts/qcom-ipq4029-ws-ap3915i.dts | 13 +++- .../ipq40xx/dts/qcom-ipq4029-ws-ap391x.dts | 12 ++-- 14 files changed, 192 insertions(+), 96 deletions(-) diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network index c3aced4df4d..795f1d72c2a 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -185,13 +185,6 @@ ipq40xx_setup_macs() local label_mac="" case "$board" in - 8dev,habanero-dvk|\ - cilab,meshpoint-one) - label_mac=$(mtd_get_mac_binary "ART" 0x1006) - ;; - asus,rt-ac42u) - label_mac=$(mtd_get_mac_binary_ubi Factory 0x1006) - ;; avm,fritzbox-7530) local tffsdev=$(find_mtd_chardev "nand-tffs") wan_mac=$(/usr/bin/fritz_tffs_nand -b -d $tffsdev -n macdsl) @@ -218,12 +211,6 @@ ipq40xx_setup_macs() wan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr) lan_mac=$(macaddr_add "$wan_mac" 1) ;; - extreme-networks,ws-ap3915i) - label_mac="$(mtd_get_mac_ascii CFG1 ethaddr)" - ;; - ezviz,cs-w3-wd1200g-eup) - label_mac=$(mtd_get_mac_binary "ART" 0x6) - ;; google,wifi) wan_mac=$(get_mac_label) lan_mac=$(macaddr_add "$wan_mac" 1) diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index a9c630a1ebf..c1dcf20a91c 100644 --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -9,9 +9,6 @@ board=$(board_name) case "$FIRMWARE" in "ath10k/pre-cal-pci-0000:01:00.0.bin") case "$board" in - asus,rt-ac42u) - caldata_extract_ubi "Factory" 0x9000 0x2f20 - ;; avm,fritzrepeater-3000) /usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \ /usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \ @@ -20,22 +17,10 @@ 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") ;; - netgear,rbr40|\ - netgear,rbs40|\ - netgear,rbr50|\ - netgear,rbs50|\ - netgear,srr60|\ - netgear,srs60) - caldata_extract_mmc "0:ART" 0x9000 0x2f20 - ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0x12) - ;; esac ;; "ath10k/pre-cal-ahb-a000000.wifi.bin") case "$board" in - asus,rt-ac42u) - caldata_extract_ubi "Factory" 0x1000 0x2f20 - ;; avm,fritzbox-4040) /usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config") ;; @@ -49,9 +34,6 @@ 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) - caldata_extract "0:ART" 0x1000 0x2f20 - ;; devolo,magic-2-wifi-next) caldata_extract "ART" 0x1000 0x2f20 ath10k_patch_mac $(mtd_get_mac_ascii APPSBLENV WiFiMacAddress0) @@ -77,10 +59,6 @@ case "$FIRMWARE" in caldata_extract "ART" 0x1000 0x2f20 ath10k_patch_mac $(mtd_get_mac_ascii CFG1 RADIOADDR0) ;; - huawei,ap4050dn) - caldata_extract "0:ART" 0x1000 0x2f20 - ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 1) - ;; mikrotik,cap-ac|\ mikrotik,hap-ac2|\ mikrotik,hap-ac3|\ @@ -92,15 +70,6 @@ case "$FIRMWARE" in ( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x0 0x2f20 ) || \ ( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_0" 0x0 0x2f20 ) ;; - netgear,rbr40|\ - netgear,rbs40|\ - netgear,rbr50|\ - netgear,rbs50|\ - netgear,srr60|\ - netgear,srs60) - caldata_extract_mmc "0:ART" 0x1000 0x2f20 - ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0x0) - ;; pakedge,wr-1) caldata_extract "0:ART" 0x1000 0x2f20 ath10k_patch_mac $(macaddr_add $(get_mac_label) 2) @@ -110,9 +79,6 @@ case "$FIRMWARE" in caldata_extract "0:ART" 0x1000 0x2f20 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary "0:CONFIG" 0x0) 2) ;; - sony,ncp-hg100-cellular) - caldata_extract_mmc "0:ART" 0x1000 0x2f20 - ;; zyxel,nbg6617|\ zyxel,wre6606) caldata_extract "ART" 0x1000 0x2f20 @@ -135,9 +101,6 @@ 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) - caldata_extract "0:ART" 0x5000 0x2f20 - ;; devolo,magic-2-wifi-next) caldata_extract "ART" 0x5000 0x2f20 ath10k_patch_mac $(mtd_get_mac_ascii APPSBLENV WiFiMacAddress1) @@ -163,10 +126,6 @@ case "$FIRMWARE" in caldata_extract "ART" 0x5000 0x2f20 ath10k_patch_mac $(mtd_get_mac_ascii CFG1 RADIOADDR1) ;; - huawei,ap4050dn) - caldata_extract "0:ART" 0x5000 0x2f20 - ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 2) - ;; mikrotik,cap-ac|\ mikrotik,hap-ac2|\ mikrotik,hap-ac3|\ @@ -179,15 +138,6 @@ case "$FIRMWARE" in ( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x8000 0x2f20 ) || \ ( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_2" 0x0 0x2f20 ) ;; - netgear,rbr40|\ - netgear,rbs40|\ - netgear,rbr50|\ - netgear,rbs50|\ - netgear,srr60|\ - netgear,srs60) - caldata_extract_mmc "0:ART" 0x5000 0x2f20 - ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0xc) - ;; pakedge,wr-1) caldata_extract "0:ART" 0x5000 0x2f20 ath10k_patch_mac $(macaddr_add $(get_mac_label) 4) @@ -197,9 +147,6 @@ case "$FIRMWARE" in caldata_extract "0:ART" 0x5000 0x2f20 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary "0:CONFIG" 0x0) 3) ;; - sony,ncp-hg100-cellular) - caldata_extract_mmc "0:ART" 0x5000 0x2f20 - ;; zyxel,nbg6617|\ zyxel,wre6606) caldata_extract "ART" 0x5000 0x2f20 diff --git a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh index 4331e617dc9..6f7f65656f2 100644 --- a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh +++ b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh @@ -2,23 +2,10 @@ preinit_set_mac_address() { case $(board_name) in - asus,rt-ac42u) - base_mac=$(mtd_get_mac_binary_ubi Factory 0x1006) - ip link set dev eth0 address $base_mac - ip link set dev lan1 address $base_mac - ip link set dev lan2 address $base_mac - ip link set dev lan3 address $base_mac - ip link set dev lan4 address $base_mac - ip link set dev wan address $(mtd_get_mac_binary_ubi Factory 0x9006) - ;; engenius,eap2200) base_mac=$(cat /sys/class/net/eth0/address) ip link set dev eth1 address $(macaddr_add "$base_mac" 1) ;; - extreme-networks,ws-ap3915i|\ - extreme-networks,ws-ap391x) - ip link set dev eth0 address $(mtd_get_mac_ascii CFG1 ethaddr) - ;; teltonika,rutx50) # Vendor Bootloader removes nvmem-cells from partition, # so this needs to be done here. diff --git a/target/linux/ipq40xx/dts/qcom-ipq4018-ap4050dn.dts b/target/linux/ipq40xx/dts/qcom-ipq4018-ap4050dn.dts index bdab85e2c14..95af41ebe40 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4018-ap4050dn.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4018-ap4050dn.dts @@ -243,7 +243,9 @@ #size-cells = <1>; macaddr_resulta_10190: macaddr@10190 { + compatible = "mac-base"; reg = <0x10190 0x6>; + #nvmem-cell-cells = <1>; }; }; }; @@ -349,11 +351,15 @@ &wifi0 { status = "okay"; qcom,ath10k-calibration-variant = "huawei-ap4050dn"; + nvmem-cells = <&macaddr_resulta_10190 1>, <&precal_art_1000>; + nvmem-cell-names = "mac-address", "pre-calibration"; }; &wifi1 { status = "okay"; qcom,ath10k-calibration-variant = "huawei-ap4050dn"; + nvmem-cells = <&macaddr_resulta_10190 2>, <&precal_art_5000>; + nvmem-cell-names = "mac-address", "pre-calibration"; }; &cryptobam { diff --git a/target/linux/ipq40xx/dts/qcom-ipq4018-cs-w3-wd1200g-eup.dts b/target/linux/ipq40xx/dts/qcom-ipq4018-cs-w3-wd1200g-eup.dts index ddf33b75cef..812bd487d43 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4018-cs-w3-wd1200g-eup.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4018-cs-w3-wd1200g-eup.dts @@ -15,6 +15,7 @@ led-failsafe = &led_status_red; led-running = &led_status_blue; led-upgrade = &led_status_green; + label-mac-device = &swport5; }; soc { diff --git a/target/linux/ipq40xx/dts/qcom-ipq4018-jalapeno.dtsi b/target/linux/ipq40xx/dts/qcom-ipq4018-jalapeno.dtsi index 6d6fa353f42..fd7fc0fccf0 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4018-jalapeno.dtsi +++ b/target/linux/ipq40xx/dts/qcom-ipq4018-jalapeno.dtsi @@ -182,6 +182,10 @@ reg = <0x1000 0x2f20>; }; + macaddr_art_1006: precal@1006 { + reg = <0x1006 0x6>; + }; + precal_art_5000: precal@5000 { reg = <0x5000 0x2f20>; }; @@ -247,8 +251,8 @@ &wifi0 { status = "okay"; - nvmem-cell-names = "pre-calibration"; - nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration", "mac-address"; + nvmem-cells = <&precal_art_1000>, <&macaddr_art_1006>; qcom,ath10k-calibration-variant = "8devices-Jalapeno"; }; diff --git a/target/linux/ipq40xx/dts/qcom-ipq4018-meshpoint-one.dts b/target/linux/ipq40xx/dts/qcom-ipq4018-meshpoint-one.dts index cab34b5a6cd..7ec9309d3cb 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4018-meshpoint-one.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4018-meshpoint-one.dts @@ -16,6 +16,7 @@ led-failsafe = &led_status; led-running = &led_status; led-upgrade = &led_status; + label-mac-device = &wifi0; }; soc { diff --git a/target/linux/ipq40xx/dts/qcom-ipq4019-habanero-dvk.dts b/target/linux/ipq40xx/dts/qcom-ipq4019-habanero-dvk.dts index 3a421cb8c50..7f27c8d4aee 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4019-habanero-dvk.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4019-habanero-dvk.dts @@ -16,6 +16,7 @@ led-failsafe = &led_status; led-running = &led_status; led-upgrade = &led_upgrade; + label-mac-device = &wifi0; }; soc { @@ -277,6 +278,10 @@ reg = <0x1000 0x2f20>; }; + macaddr_art_1006: macaddr@1006 { + reg = <0x1006 0x6>; + }; + precal_art_5000: precal@5000 { reg = <0x5000 0x2f20>; }; @@ -368,15 +373,12 @@ &swport5 { status = "okay"; - - nvmem-cell-names = "mac-address"; - nvmem-cells = <&macaddr_wan>; }; &wifi0 { status = "okay"; - nvmem-cell-names = "pre-calibration"; - nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration", "mac-address"; + nvmem-cells = <&precal_art_1000>, <&macaddr_art_1006>; qcom,ath10k-calibration-variant = "8devices-Habanero"; }; diff --git a/target/linux/ipq40xx/dts/qcom-ipq4019-ncp-hg100-cellular.dts b/target/linux/ipq40xx/dts/qcom-ipq4019-ncp-hg100-cellular.dts index 067f19b7cf6..7658764d8e1 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4019-ncp-hg100-cellular.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4019-ncp-hg100-cellular.dts @@ -564,6 +564,29 @@ emmc@0 { compatible = "mmc-card"; reg = <0>; + + block { + compatible = "block-device"; + partitions { + block-partition-art { + partname = "ART"; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: pre-calibration@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: pre-calibration@5000 { + reg = <0x5000 0x2f20>; + }; + }; + }; + }; + }; }; }; @@ -621,11 +644,15 @@ &wifi0 { status = "okay"; qcom,ath10k-calibration-variant = "Sony-NCP-HG100-Cellular"; + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; }; &wifi1 { status = "okay"; qcom,ath10k-calibration-variant = "Sony-NCP-HG100-Cellular"; + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; }; &watchdog { diff --git a/target/linux/ipq40xx/dts/qcom-ipq4019-orbi.dtsi b/target/linux/ipq40xx/dts/qcom-ipq4019-orbi.dtsi index 1ef49f7fa15..3d0921c890b 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4019-orbi.dtsi +++ b/target/linux/ipq40xx/dts/qcom-ipq4019-orbi.dtsi @@ -131,6 +131,60 @@ pinctrl-names = "default"; cd-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>; vqmmc-supply = <&vqmmc>; + + card@0 { + compatible = "mmc-card"; + reg = <0>; + + block { + compatible = "block-device"; + partitions { + block-partition-art { + partname = "ART"; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: pre-calibration@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: pre-calibration@5000 { + reg = <0x5000 0x2f20>; + }; + + precal_art_9000: pre-calibration@9000 { + reg = <0x9000 0x2f20>; + }; + }; + }; + + block-partition-artmd { + partname = "ARTMD"; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_artmd_0: macaddr@0 { + reg = <0x0 0x6>; + }; + + macaddr_artmd_c: macaddr@c { + reg = <0xc 0x6>; + }; + + macaddr_artmd_12: macaddr@12 { + reg = <0x12 0x6>; + }; + }; + }; + }; + }; + }; }; &tlmm { @@ -298,9 +352,26 @@ status = "disabled"; }; +&wifi0 { + nvmem-cells = <&precal_art_1000>, <&macaddr_artmd_0>; + nvmem-cell-names = "pre-calibration", "mac-address"; +}; + +&wifi1 { + nvmem-cells = <&precal_art_5000>, <&macaddr_artmd_c>; + nvmem-cell-names = "pre-calibration", "mac-address"; +}; + &pcie0 { status = "okay"; perst-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; wake-gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; }; + +&pcie_bridge0 { + wifi@0,0 { + nvmem-cells = <&precal_art_9000>, <&macaddr_artmd_12>; + nvmem-cell-names = "pre-calibration", "mac-address"; + }; +}; diff --git a/target/linux/ipq40xx/dts/qcom-ipq4019-rt-ac42u.dts b/target/linux/ipq40xx/dts/qcom-ipq4019-rt-ac42u.dts index 495cb533614..da2c4f557ff 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4019-rt-ac42u.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4019-rt-ac42u.dts @@ -16,12 +16,11 @@ }; aliases { - // TODO: Verify if the ethernet0 alias is needed - ethernet0 = &gmac; led-boot = &led_power; led-failsafe = &led_power; led-running = &led_power; led-upgrade = &led_power; + label-mac-device = &gmac; }; soc { @@ -235,6 +234,34 @@ partition@400000 { label = "ubi"; reg = <0x00400000 0x07C00000>; + + volumes { + ubi-volume-factory { + volname = "Factory"; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + precal_factory_1000: pre-calibration@1000 { + reg = <0x1000 0x2f20>; + }; + + macaddr_factory_1006: macaddr@1006 { + reg = <0x1006 0x6>; + }; + + precal_factory_9000: pre-calibration@9000 { + reg = <0x9000 0x2f20>; + }; + + macaddr_factory_9006: macaddr@9006 { + reg = <0x9006 0x6>; + }; + }; + }; + }; }; }; }; @@ -273,6 +300,9 @@ &gmac { status = "okay"; + + nvmem-cells = <&macaddr_factory_1006>; + nvmem-cell-names = "mac-address"; }; &switch { @@ -297,11 +327,15 @@ &swport5 { status = "okay"; + nvmem-cells = <&macaddr_factory_9006>; + nvmem-cell-names = "mac-address"; }; &wifi0 { status = "okay"; qcom,ath10k-calibration-variant = "ASUS-RT-AC42U"; + nvmem-cells = <&precal_factory_1000>; + nvmem-cell-names = "pre-calibration"; }; &pcie0 { @@ -316,5 +350,7 @@ compatible = "qcom,ath10k"; reg = <0x00010000 0 0 0 0>; qcom,ath10k-calibration-variant = "ASUS-RT-AC42U"; + nvmem-cells = <&precal_factory_9000>; + nvmem-cell-names = "pre-calibration"; }; }; diff --git a/target/linux/ipq40xx/dts/qcom-ipq4019-rtl30vw.dts b/target/linux/ipq40xx/dts/qcom-ipq4019-rtl30vw.dts index b28f410c5dd..983f9f27b70 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4019-rtl30vw.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4019-rtl30vw.dts @@ -247,6 +247,20 @@ label = "0:ART"; reg = <0x170000 0x10000>; read-only; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: pre-calibration@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: pre-calibration@5000 { + reg = <0x5000 0x2f20>; + }; + }; }; partition@180000 { @@ -363,11 +377,15 @@ &wifi0 { status = "okay"; qcom,ath10k-calibration-variant = "cellc,rtl30vw"; + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; }; &wifi1 { status = "okay"; qcom,ath10k-calibration-variant = "cellc,rtl30vw"; + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; }; &mdio { diff --git a/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap3915i.dts b/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap3915i.dts index 16411c62f83..56f308b85bc 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap3915i.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap3915i.dts @@ -10,12 +10,11 @@ compatible = "extreme-networks,ws-ap3915i"; aliases { - // TODO: Verify if the ethernet0 alias is needed - ethernet0 = &gmac; led-boot = &led_system_green; led-failsafe = &led_system_amber; led-running = &led_system_green; led-upgrade = &led_system_amber; + label-mac-device = &gmac; }; soc { @@ -124,6 +123,9 @@ &gmac { status = "okay"; + + nvmem-cells = <&macaddr_cfg1_ethaddr>; + nvmem-cell-names = "mac-address"; }; &switch { @@ -207,6 +209,13 @@ label = "CFG1"; reg = <0xe0000 0x10000>; read-only; + + nvmem-layout { + compatible = "u-boot,env-redundant-bool"; + + macaddr_cfg1_ethaddr: ethaddr { + }; + }; }; partition@f0000 { diff --git a/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap391x.dts b/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap391x.dts index 45b1e484682..af071c04bed 100644 --- a/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap391x.dts +++ b/target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap391x.dts @@ -10,8 +10,6 @@ compatible = "extreme-networks,ws-ap391x"; aliases { - // TODO: Verify if the ethernet0 alias is needed - ethernet0 = &gmac; led-boot = &led_system_green; led-failsafe = &led_system_red; led-running = &led_system_green; @@ -175,6 +173,9 @@ &gmac { status = "okay"; + + nvmem-cells = <&macaddr_cfg1_ethaddr>; + nvmem-cell-names = "mac-address"; }; &switch { @@ -285,6 +286,9 @@ nvmem-layout { compatible = "u-boot,env-redundant-bool"; + + macaddr_cfg1_ethaddr: ethaddr { + }; }; }; @@ -338,10 +342,6 @@ label = "CFG2"; reg = <0x1fe0000 0x10000>; read-only; - - nvmem-layout { - compatible = "u-boot,env-redundant-bool"; - }; }; }; }; -- 2.47.3