]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
ipq40xx: use nvmem for cal data 22178/head
authorRosen Penev <rosenp@gmail.com>
Mon, 23 Feb 2026 04:12:13 +0000 (20:12 -0800)
committerJonas Jelonek <jelonek.jonas@gmail.com>
Fri, 12 Jun 2026 23:31:36 +0000 (01:31 +0200)
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22178
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
14 files changed:
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/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
target/linux/ipq40xx/dts/qcom-ipq4018-ap4050dn.dts
target/linux/ipq40xx/dts/qcom-ipq4018-cs-w3-wd1200g-eup.dts
target/linux/ipq40xx/dts/qcom-ipq4018-jalapeno.dtsi
target/linux/ipq40xx/dts/qcom-ipq4018-meshpoint-one.dts
target/linux/ipq40xx/dts/qcom-ipq4019-habanero-dvk.dts
target/linux/ipq40xx/dts/qcom-ipq4019-ncp-hg100-cellular.dts
target/linux/ipq40xx/dts/qcom-ipq4019-orbi.dtsi
target/linux/ipq40xx/dts/qcom-ipq4019-rt-ac42u.dts
target/linux/ipq40xx/dts/qcom-ipq4019-rtl30vw.dts
target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap3915i.dts
target/linux/ipq40xx/dts/qcom-ipq4029-ws-ap391x.dts

index c3aced4df4d9ff8ae129aae9cfee86ee7c8286d8..795f1d72c2a860ef6c26e79d113b3bc17b22a0b2 100644 (file)
@@ -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)
index a9c630a1ebfb7ef445c4f24f139cdace8a870467..c1dcf20a91c17f46a813a69b1698ec37ac038510 100644 (file)
@@ -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
index 4331e617dc9111f80a573075d8eb5da295ec0415..6f7f65656f207060de6cc87f35bc1d2aaf2e2c26 100644 (file)
@@ -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.
index bdab85e2c1474b37bc0687abb49b6716eb456a32..95af41ebe40e61092ccbbd0efe3da744cf79097a 100644 (file)
                                        #size-cells = <1>;
 
                                        macaddr_resulta_10190: macaddr@10190 {
+                                               compatible = "mac-base";
                                                reg = <0x10190 0x6>;
+                                               #nvmem-cell-cells = <1>;
                                        };
                                };
                        };
 &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 {
index ddf33b75cef0574d71c90463720e8d6c703dfa4f..812bd487d4399e9d46f93633298320730de70d35 100644 (file)
@@ -15,6 +15,7 @@
                led-failsafe = &led_status_red;
                led-running = &led_status_blue;
                led-upgrade = &led_status_green;
+               label-mac-device = &swport5;
        };
 
        soc {
index 6d6fa353f42d4a1df828968d4b4db3b83621c57e..fd7fc0fccf0378722e608c3a6847b4922f041181 100644 (file)
                                                reg = <0x1000 0x2f20>;
                                        };
 
+                                       macaddr_art_1006: precal@1006 {
+                                               reg = <0x1006 0x6>;
+                                       };
+
                                        precal_art_5000: precal@5000 {
                                                reg = <0x5000 0x2f20>;
                                        };
 
 &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";
 };
 
index cab34b5a6cd0d624358dc9c7474ca4311b6c722b..7ec9309d3cb3c09f82678234d8b8a604c4802853 100644 (file)
@@ -16,6 +16,7 @@
                led-failsafe = &led_status;
                led-running = &led_status;
                led-upgrade = &led_status;
+               label-mac-device = &wifi0;
        };
 
        soc {
index 3a421cb8c500bcc4383fc58bdd097dc514e2059a..7f27c8d4aee91da3831f29386e8def6aefd423bf 100644 (file)
@@ -16,6 +16,7 @@
                led-failsafe = &led_status;
                led-running = &led_status;
                led-upgrade = &led_upgrade;
+               label-mac-device = &wifi0;
        };
 
        soc {
                                                reg = <0x1000 0x2f20>;
                                        };
 
+                                       macaddr_art_1006: macaddr@1006 {
+                                               reg = <0x1006 0x6>;
+                                       };
+
                                        precal_art_5000: precal@5000 {
                                                reg = <0x5000 0x2f20>;
                                        };
 
 &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";
 };
 
index 067f19b7cf6dad1186992b6e16fcd0fb47001f49..7658764d8e1fdcdfc0c69822570d78976d4e6bad 100644 (file)
        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>;
+                                               };
+                                       };
+                               };
+                       };
+               };
        };
 };
 
 &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 {
index 1ef49f7fa15c1569ccab237430e5563feac2df12..3d0921c890bb857ee6f0b9c407d5c716c0aaa192 100644 (file)
        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 {
        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";
+       };
+};
index 495cb5336142564e5ab216be3b4bc6c49e0577e7..da2c4f557ff1263cd9ff81d57b713d4436efdb8e 100644 (file)
        };
 
        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 {
                        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>;
+                                                       };
+                                               };
+                                       };
+                               };
                        };
                };
        };
 
 &gmac {
        status = "okay";
+
+       nvmem-cells = <&macaddr_factory_1006>;
+       nvmem-cell-names = "mac-address";
 };
 
 &switch {
 
 &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 {
                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";
        };
 };
index b28f410c5ddcc0bd4c9d97866352a4f6385e51fa..983f9f27b70a2d4b893d1f3029508fdccde182e1 100644 (file)
                                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 {
 &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 {
index 16411c62f838d1235cad22cef2e1cd30d6779e04..56f308b85bcebf786b6f9aba9e386dcbdf7cf7a8 100644 (file)
        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 {
 
 &gmac {
        status = "okay";
+
+       nvmem-cells = <&macaddr_cfg1_ethaddr>;
+       nvmem-cell-names = "mac-address";
 };
 
 &switch {
                                label = "CFG1";
                                reg = <0xe0000 0x10000>;
                                read-only;
+
+                               nvmem-layout {
+                                       compatible = "u-boot,env-redundant-bool";
+
+                                       macaddr_cfg1_ethaddr: ethaddr {
+                                       };
+                               };
                        };
 
                        partition@f0000 {
index 45b1e4846821bc2b3f6f8b86f8897b51bff82a51..af071c04bed5c6c3b056cefaa6c54d337f76eff7 100644 (file)
@@ -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;
 
 &gmac {
        status = "okay";
+
+       nvmem-cells = <&macaddr_cfg1_ethaddr>;
+       nvmem-cell-names = "mac-address";
 };
 
 &switch {
 
                                nvmem-layout {
                                        compatible = "u-boot,env-redundant-bool";
+
+                                       macaddr_cfg1_ethaddr: ethaddr {
+                                       };
                                };
                        };
 
                                label = "CFG2";
                                reg = <0x1fe0000 0x10000>;
                                read-only;
-
-                               nvmem-layout {
-                                       compatible = "u-boot,env-redundant-bool";
-                               };
                        };
                };
        };