[openwrt/openwrt] ath79: convert remaining mtd-mac-address cases to nvmem

LEDE Commits lede-commits at lists.infradead.org
Wed Aug 18 14:46:11 PDT 2021


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/e826b642945ee7b196044a07faddd71c1bd6c6ef

commit e826b642945ee7b196044a07faddd71c1bd6c6ef
Author: Adrian Schmutzler <freifunk at adrianschmutzler.de>
AuthorDate: Wed Aug 18 20:06:29 2021 +0200

    ath79: convert remaining mtd-mac-address cases to nvmem
    
    Since the nvmem-based approach for retrieving MAC addresses
    appears to depend on the addresses being set up after the
    partitions, it is no longer possible to keep the MAC address
    setup in shared DTSI files while the partitions itself are
    set up in DTS files for the individual devices.
    
    In ath79 the firmware partition is typically located somewhere
    "in the middle" of the partition table. Thus, it's not trivial
    to share the partitions containing MAC address information in
    a common DTSI (like we did in some cases on ramips).
    
    In this commit, MAC address setup is thus moved to the relevant
    partitions, and in most cases needs to be duplicated. While
    the duplication is not really nice, it eventually provides a
    cleaner and more tidy setup, making the DTS(I) file
    fragmentation a bit more logical. This should also help
    with adding new devices, as information is distributed across
    less locations.
    
    For consistency, this commit also moves the mtd-cal-data property
    "down" together with the MAC address setup, so it's not based
    on a partition before the latter is defined either. (This is
    only done for those files touched due to nvmem conversion.)
    
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 target/linux/ath79/dts/ar7161_netgear_wndr.dtsi    |  9 +----
 .../linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts | 42 ++++++++++++++++++++
 target/linux/ath79/dts/ar7161_netgear_wndr3700.dts | 40 +++++++++++++++++++
 target/linux/ath79/dts/ar7161_netgear_wndr3800.dts | 42 ++++++++++++++++++++
 .../linux/ath79/dts/ar7161_netgear_wndr3800ch.dts  | 41 +++++++++++++++++++
 .../linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts  | 42 ++++++++++++++++++++
 .../linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts  | 42 ++++++++++++++++++++
 .../linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts | 34 ++++++++++++++++
 .../linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts  | 34 ++++++++++++++++
 target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi |  7 ----
 .../dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts      |  9 +++++
 target/linux/ath79/dts/ar7241_ubnt_unifi.dts       | 15 +++++++
 target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi      |  2 -
 target/linux/ath79/dts/ar9331_glinet_6408.dts      | 31 +++++++++++++++
 target/linux/ath79/dts/ar9331_glinet_6416.dts      | 31 +++++++++++++++
 target/linux/ath79/dts/ar9331_glinet_64xx.dtsi     | 11 ------
 .../ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi      | 34 ++++++++++++++++
 .../linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi   |  9 -----
 target/linux/ath79/dts/ar9341_tplink.dtsi          |  9 -----
 .../linux/ath79/dts/ar9341_tplink_tl-mr3420-v2.dts | 32 +++++++++++++++
 .../linux/ath79/dts/ar9341_tplink_tl-wr841-v8.dts  | 32 +++++++++++++++
 .../linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts | 30 ++++++++++++++
 target/linux/ath79/dts/qca9531_glinet_gl-x300b.dts | 21 ++++++++--
 target/linux/ath79/dts/qca9533_qca_ap143-16m.dts   | 28 +++++++++++++
 target/linux/ath79/dts/qca9533_qca_ap143-8m.dts    | 28 +++++++++++++
 target/linux/ath79/dts/qca9533_qca_ap143.dtsi      |  6 ---
 .../ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts    | 35 ++++++++++++++++
 .../ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts    | 35 ++++++++++++++++
 .../ath79/dts/qca9558_comfast_cf-wr650ac.dtsi      |  7 +---
 .../linux/ath79/dts/qca9558_tplink_archer-c.dtsi   |  7 ----
 .../ath79/dts/qca9558_tplink_archer-c5-v1.dts      | 32 +++++++++++++++
 .../ath79/dts/qca9558_tplink_archer-c7-v1.dts      | 32 +++++++++++++++
 .../ath79/dts/qca9558_tplink_archer-c7-v2.dts      | 32 +++++++++++++++
 .../ath79/dts/qca9558_tplink_tl-wdr7500-v3.dts     | 32 +++++++++++++++
 .../ath79/dts/qca9561_tplink_archer-c58-v1.dts     | 32 +++++++++++++++
 .../ath79/dts/qca9561_tplink_archer-c59-v1.dts     | 32 +++++++++++++++
 .../ath79/dts/qca9561_tplink_archer-c59-v2.dts     | 32 +++++++++++++++
 .../linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi |  9 -----
 .../ath79/dts/qca9561_tplink_archer-c60-v1.dts     | 32 +++++++++++++++
 .../ath79/dts/qca9561_tplink_archer-c60-v2.dts     | 32 +++++++++++++++
 .../ath79/dts/qca9561_tplink_archer-c60-v3.dts     | 33 ++++++++++++++++
 .../linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi |  9 -----
 .../ath79/dts/qca9563_elecom_wrc-1750ghbk2-i.dts   | 20 ++++++++++
 .../ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts    | 20 ++++++++++
 .../ath79/dts/qca9563_elecom_wrc-ghbk2-i.dtsi      |  3 --
 .../ath79/dts/qca9563_tplink_archer-a7-v5.dts      | 26 ++++++++++++
 .../ath79/dts/qca9563_tplink_archer-c6-v2-us.dts   | 24 +++++++++++
 .../ath79/dts/qca9563_tplink_archer-c6-v2.dts      | 24 +++++++++++
 .../ath79/dts/qca9563_tplink_archer-c7-v5.dts      | 26 ++++++++++++
 .../ath79/dts/qca9563_tplink_archer-x6-v2.dtsi     | 11 ------
 .../ath79/dts/qca9563_tplink_archer-x7-v5.dtsi     |  5 ---
 target/linux/ath79/dts/qca9563_tplink_re450-v2.dts | 26 ++++++++++++
 target/linux/ath79/dts/qca9563_tplink_re450-v3.dts | 26 ++++++++++++
 target/linux/ath79/dts/qca9563_tplink_re450.dtsi   |  6 ---
 target/linux/ath79/dts/qca9563_tplink_re455-v1.dts | 26 ++++++++++++
 .../ath79/dts/qca9563_tplink_tl-wpa8630-v1.dts     |  2 +
 .../linux/ath79/dts/qca9563_tplink_tl-wpa8630.dtsi |  2 -
 .../dts/qca9563_tplink_tl-wpa8630p-v2-int.dts      | 46 +++++++++++++++++++++-
 .../dts/qca9563_tplink_tl-wpa8630p-v2.0-eu.dts     | 46 +++++++++++++++++++++-
 .../dts/qca9563_tplink_tl-wpa8630p-v2.1-eu.dts     | 46 +++++++++++++++++++++-
 .../ath79/dts/qca9563_tplink_tl-wpa8630p-v2.dtsi   | 37 -----------------
 .../ath79/dts/qca9563_tplink_tl-wr1043n-v5.dts     | 26 ++++++++++++
 .../linux/ath79/dts/qca9563_tplink_tl-wr1043n.dtsi |  5 ---
 .../ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts    | 26 ++++++++++++
 64 files changed, 1406 insertions(+), 157 deletions(-)

diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi b/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi
index 369c89a97e..414d5e6d99 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr.dtsi
@@ -12,7 +12,6 @@
 		led-failsafe = &led_power_orange;
 		led-running = &led_power_green;
 		led-upgrade = &led_power_orange;
-		label-mac-device = &eth0;
 	};
 
 	extosc: ref {
@@ -153,7 +152,7 @@
 	ath9k0: wifi at 0,11 {
 		compatible = "pci168c,0029";
 		reg = <0x8800 0 0 0 0>;
-		mtd-mac-address = <&art 0xc>;
+
 		qca,no-eeprom;
 		#gpio-cells = <2>;
 		gpio-controller;
@@ -181,7 +180,7 @@
 	ath9k1: wifi at 0,12 {
 		compatible = "pci168c,0029";
 		reg = <0x9000 0 0 0 0>;
-		mtd-mac-address = <&art 0x0>;
+
 		qca,no-eeprom;
 		#gpio-cells = <2>;
 		gpio-controller;
@@ -209,8 +208,6 @@
 
 	pll-data = <0x11110000 0x00001099 0x00991099>;
 
-	mtd-mac-address = <&art 0x00>;
-
 	fixed-link {
 		speed = <1000>;
 		full-duplex;
@@ -222,7 +219,5 @@
 
 	pll-data = <0x11110000 0x00001099 0x00991099>;
 
-	mtd-mac-address = <&art 0x06>;
-
 	phy-handle = <&phy4>;
 };
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts
index 6d78c019da..0a133ce52e 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3700-v2.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wndr3700-v2", "qca,ar7161";
 	model = "Netgear WNDR3700 v2";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -33,3 +37,41 @@
 		read-only;
 	};
 };
+
+&ath9k0 {
+	nvmem-cells = <&macaddr_art_c>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k1 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_c: macaddr at c {
+		reg = <0xc 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts
index ad29d256f6..99bc5f56bb 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3700.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wndr3700", "qca,ar7161";
 	model = "Netgear WNDR3700";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -34,7 +38,15 @@
 	};
 };
 
+&ath9k0 {
+	nvmem-cells = <&macaddr_art_c>;
+	nvmem-cell-names = "mac-address";
+};
+
 &ath9k1 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+
 	/* The original WNDR3700(v1) variant have four antennae dedicated
 	 * to the 5GHz radio as well. Again, two antennae are available for
 	 * each chain to switch between. The following configuration is the
@@ -54,3 +66,31 @@
 		output-high;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_c: macaddr at c {
+		reg = <0xc 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts
index 80b25492b1..0ad5c9d0e8 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3800.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wndr3800", "qca,ar7161";
 	model = "Netgear WNDR3800";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -34,3 +38,41 @@
 		read-only;
 	};
 };
+
+&ath9k0 {
+	nvmem-cells = <&macaddr_art_c>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k1 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_c: macaddr at c {
+		reg = <0xc 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts b/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts
index cc51aca8b6..be997211a9 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndr3800ch.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wndr3800ch", "qca,ar7161";
 	model = "Netgear WNDR3800CH";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -35,3 +39,40 @@
 	};
 };
 
+&ath9k0 {
+	nvmem-cells = <&macaddr_art_c>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k1 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_c: macaddr at c {
+		reg = <0xc 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts
index 8604414d19..fa0f40c424 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wndrmac-v1", "qca,ar7161";
 	model = "Netgear WNDRMAC v1";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -33,3 +37,41 @@
 		read-only;
 	};
 };
+
+&ath9k0 {
+	nvmem-cells = <&macaddr_art_c>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k1 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_c: macaddr at c {
+		reg = <0xc 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts
index bebd96c72f..ba96eba262 100644
--- a/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts
+++ b/target/linux/ath79/dts/ar7161_netgear_wndrmac-v2.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wndrmac-v2", "qca,ar7161";
 	model = "Netgear WNDRMAC v2";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -34,3 +38,41 @@
 		read-only;
 	};
 };
+
+&ath9k0 {
+	nvmem-cells = <&macaddr_art_c>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k1 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_c: macaddr at c {
+		reg = <0xc 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts b/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts
index 3842238e54..f5c060d780 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2200-16m.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wnr2200-16m", "qca,ar7241";
 	model = "Netgear WNR2200 (16M)";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &partitions {
@@ -33,3 +37,33 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts b/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts
index 4eb15e2313..e47336e4d2 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2200-8m.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "netgear,wnr2200-8m", "qca,ar7241";
 	model = "Netgear WNR2200 (8M)";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &partitions {
@@ -33,3 +37,33 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&ath9k {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi b/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi
index 0098b0f03e..6119af4a03 100644
--- a/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi
+++ b/target/linux/ath79/dts/ar7241_netgear_wnr2200.dtsi
@@ -16,7 +16,6 @@
 		led-failsafe = &led_power_amber;
 		led-running = &led_power_green;
 		led-upgrade = &led_power_amber;
-		label-mac-device = &eth1;
 	};
 
 	ath9k-keys {
@@ -154,14 +153,10 @@
 
 &eth0 {
 	status = "okay";
-
-	mtd-mac-address = <&art 0x0>;
 };
 
 &eth1 {
 	compatible = "qca,ar7241-eth", "syscon", "simple-mfd";
-
-	mtd-mac-address = <&art 0x6>;
 };
 
 &pcie {
@@ -170,8 +165,6 @@
 	ath9k: wifi at 0,0 {
 		compatible = "pci168c,002e";
 		reg = <0x0000 0 0 0 0>;
-		mtd-mac-address = <&art 0x0>;
-		mac-address-increment = <1>;
 		qca,no-eeprom;
 		#gpio-cells = <2>;
 		gpio-controller;
diff --git a/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts b/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts
index 3a0cc4250e..9ccbdbd450 100644
--- a/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts
+++ b/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts
@@ -91,6 +91,11 @@
 	};
 };
 
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
 &eth1 {
 	status = "okay";
 
@@ -107,6 +112,10 @@
 	#address-cells = <1>;
 	#size-cells = <1>;
 
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
 	macaddr_art_6: macaddr at 6 {
 		reg = <0x6 0x6>;
 	};
diff --git a/target/linux/ath79/dts/ar7241_ubnt_unifi.dts b/target/linux/ath79/dts/ar7241_ubnt_unifi.dts
index 287e8cc7db..e8d903b305 100644
--- a/target/linux/ath79/dts/ar7241_ubnt_unifi.dts
+++ b/target/linux/ath79/dts/ar7241_ubnt_unifi.dts
@@ -80,6 +80,21 @@
 	};
 };
 
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
 &eth1 {
 	compatible = "syscon", "simple-mfd";
 };
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi b/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi
index 614ac1454f..54f133ab19 100644
--- a/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi
+++ b/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi
@@ -42,6 +42,4 @@
 
 &eth0 {
 	status = "okay";
-
-	mtd-mac-address = <&art 0x0>;
 };
diff --git a/target/linux/ath79/dts/ar9331_glinet_6408.dts b/target/linux/ath79/dts/ar9331_glinet_6408.dts
index 658fa1aa5e..0d3b7d6410 100644
--- a/target/linux/ath79/dts/ar9331_glinet_6408.dts
+++ b/target/linux/ath79/dts/ar9331_glinet_6408.dts
@@ -5,6 +5,10 @@
 / {
 	model = "GL.iNet 6408";
 	compatible = "glinet,6408", "qca,ar9331";
+
+	aliases {
+		label-mac-device = &wmac;
+	};
 };
 
 &spi {
@@ -40,3 +44,30 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar9331_glinet_6416.dts b/target/linux/ath79/dts/ar9331_glinet_6416.dts
index 189563aaf9..91b7cc0c1c 100644
--- a/target/linux/ath79/dts/ar9331_glinet_6416.dts
+++ b/target/linux/ath79/dts/ar9331_glinet_6416.dts
@@ -5,6 +5,10 @@
 / {
 	model = "GL.iNet 6416";
 	compatible = "glinet,6416", "qca,ar9331";
+
+	aliases {
+		label-mac-device = &wmac;
+	};
 };
 
 &spi {
@@ -40,3 +44,30 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar9331_glinet_64xx.dtsi b/target/linux/ath79/dts/ar9331_glinet_64xx.dtsi
index 2f92123c34..8d003ce090 100644
--- a/target/linux/ath79/dts/ar9331_glinet_64xx.dtsi
+++ b/target/linux/ath79/dts/ar9331_glinet_64xx.dtsi
@@ -6,10 +6,6 @@
 #include <dt-bindings/input/input.h>
 
 / {
-	aliases {
-		label-mac-device = &wmac;
-	};
-
 	keys {
 		compatible = "gpio-keys";
 
@@ -48,8 +44,6 @@
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&uboot 0x1fc00>;
-
 	gmac-config {
 		device = <&gmac>;
 
@@ -60,8 +54,6 @@
 
 &eth1 {
 	status = "okay";
-
-	mtd-mac-address = <&uboot 0x1fc00>;
 };
 
 &usb {
@@ -76,7 +68,4 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&uboot 0x1fc00>;
 };
diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi
index 759e765294..61ef9fb99f 100644
--- a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi
+++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi
@@ -2,6 +2,12 @@
 
 #include "ar9331_tplink_tl-wr710n.dtsi"
 
+/ {
+	aliases {
+		label-mac-device = &eth0;
+	};
+};
+
 &spi {
 	status = "okay";
 
@@ -35,3 +41,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi
index 9207a0fde0..329822ad10 100644
--- a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi
+++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi
@@ -11,7 +11,6 @@
 		led-failsafe = &led_system;
 		led-running = &led_system;
 		led-upgrade = &led_system;
-		label-mac-device = &eth0;
 	};
 
 	keys {
@@ -47,8 +46,6 @@
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&uboot 0x1fc00>;
-
 	gmac-config {
 		device = <&gmac>;
 
@@ -59,9 +56,6 @@
 
 &eth1 {
 	status = "okay";
-
-	mtd-mac-address = <&uboot 0x1fc00>;
-	mac-address-increment = <(-1)>;
 };
 
 &usb {
@@ -77,7 +71,4 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&uboot 0x1fc00>;
 };
diff --git a/target/linux/ath79/dts/ar9341_tplink.dtsi b/target/linux/ath79/dts/ar9341_tplink.dtsi
index 0f6e0bc114..9c505f2785 100644
--- a/target/linux/ath79/dts/ar9341_tplink.dtsi
+++ b/target/linux/ath79/dts/ar9341_tplink.dtsi
@@ -11,7 +11,6 @@
 		led-failsafe = &led_power;
 		led-running = &led_power;
 		led-upgrade = &led_power;
-		label-mac-device = &wmac;
 	};
 
 	leds: leds {
@@ -80,14 +79,9 @@
 	status = "okay";
 
 	phy-handle = <&swphy0>;
-
-	mtd-mac-address = <&uboot 0x1fc00>;
-	mac-address-increment = <(-1)>;
 };
 
 &eth1 {
-	mtd-mac-address = <&uboot 0x1fc00>;
-
 	gmac-config {
 		device = <&gmac>;
 		switch-phy-swap = <1>;
@@ -96,7 +90,4 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&uboot 0x1fc00>;
 };
diff --git a/target/linux/ath79/dts/ar9341_tplink_tl-mr3420-v2.dts b/target/linux/ath79/dts/ar9341_tplink_tl-mr3420-v2.dts
index 9adc9a1faf..f86c4423bf 100644
--- a/target/linux/ath79/dts/ar9341_tplink_tl-mr3420-v2.dts
+++ b/target/linux/ath79/dts/ar9341_tplink_tl-mr3420-v2.dts
@@ -6,6 +6,10 @@
 	model = "TP-Link TL-MR3420 v2";
 	compatible = "tplink,tl-mr3420-v2", "qca,ar9341";
 
+	aliases {
+		label-mac-device = &wmac;
+	};
+
 	keys {
 		compatible = "gpio-keys";
 
@@ -91,3 +95,31 @@
 &usb_phy {
 	status = "okay";
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar9341_tplink_tl-wr841-v8.dts b/target/linux/ath79/dts/ar9341_tplink_tl-wr841-v8.dts
index cd7532d27a..d86571c531 100644
--- a/target/linux/ath79/dts/ar9341_tplink_tl-wr841-v8.dts
+++ b/target/linux/ath79/dts/ar9341_tplink_tl-wr841-v8.dts
@@ -6,6 +6,10 @@
 	model = "TP-Link TL-WR841N/ND v8";
 	compatible = "tplink,tl-wr841-v8", "qca,ar9341";
 
+	aliases {
+		label-mac-device = &wmac;
+	};
+
 	keys {
 		compatible = "gpio-keys";
 
@@ -59,3 +63,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts b/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
index 8c27fe1971..5d20df9261 100644
--- a/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
+++ b/target/linux/ath79/dts/ar9341_tplink_tl-wr842n-v2.dts
@@ -6,6 +6,10 @@
 	model = "TP-Link TL-WR842N/ND v2";
 	compatible = "tplink,tl-wr842n-v2", "qca,ar9341";
 
+	aliases {
+		label-mac-device = &wmac;
+	};
+
 	keys {
 		compatible = "gpio-keys";
 
@@ -93,6 +97,32 @@
 	status = "okay";
 };
 
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
 &eth1 {
 	phy-handle = <&swphy4>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
 };
diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-x300b.dts b/target/linux/ath79/dts/qca9531_glinet_gl-x300b.dts
index 5e722bbc26..5f5646b3e0 100644
--- a/target/linux/ath79/dts/qca9531_glinet_gl-x300b.dts
+++ b/target/linux/ath79/dts/qca9531_glinet_gl-x300b.dts
@@ -88,7 +88,7 @@
 		reg = <0>;
 		spi-max-frequency = <25000000>;
 
-		nor_partitions: partitions {
+		partitions {
 			compatible = "fixed-partitions";
 			#address-cells = <1>;
 			#size-cells = <1>;
@@ -123,13 +123,16 @@
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&art 0x0>;
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+
 	phy-handle = <&swphy4>;
 };
 
 &eth1 {
-	mtd-mac-address = <&art 0x0>;
-	mtd-mac-address-increment = <1>;
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
 };
 
 &wmac {
@@ -137,3 +140,13 @@
 
 	mtd-cal-data = <&art 0x1000>;
 };
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9533_qca_ap143-16m.dts b/target/linux/ath79/dts/qca9533_qca_ap143-16m.dts
index 31e61de175..05d87e3995 100644
--- a/target/linux/ath79/dts/qca9533_qca_ap143-16m.dts
+++ b/target/linux/ath79/dts/qca9533_qca_ap143-16m.dts
@@ -47,3 +47,31 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9533_qca_ap143-8m.dts b/target/linux/ath79/dts/qca9533_qca_ap143-8m.dts
index bdb93420b5..db6a92720b 100644
--- a/target/linux/ath79/dts/qca9533_qca_ap143-8m.dts
+++ b/target/linux/ath79/dts/qca9533_qca_ap143-8m.dts
@@ -47,3 +47,31 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9533_qca_ap143.dtsi b/target/linux/ath79/dts/qca9533_qca_ap143.dtsi
index 95a24175a5..2836234b4c 100644
--- a/target/linux/ath79/dts/qca9533_qca_ap143.dtsi
+++ b/target/linux/ath79/dts/qca9533_qca_ap143.dtsi
@@ -97,14 +97,10 @@
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&art 0x0>;
-
 	phy-handle = <&swphy4>;
 };
 
 &eth1 {
-	mtd-mac-address = <&art 0x6>;
-
 	gmac-config {
 		device = <&gmac>;
 	};
@@ -112,8 +108,6 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
 };
 
 &usb0 {
diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts
index 639c877177..ba145d6fb0 100644
--- a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts
+++ b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v1.dts
@@ -46,3 +46,38 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_art_18>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_18: macaddr at 18 {
+		reg = <0x18 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts
index 5dda5f1869..d0929f981c 100644
--- a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts
+++ b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac-v2.dts
@@ -46,3 +46,38 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_art_6>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_art_18>;
+	nvmem-cell-names = "mac-address";
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_0: macaddr at 0 {
+		reg = <0x0 0x6>;
+	};
+
+	macaddr_art_6: macaddr at 6 {
+		reg = <0x6 0x6>;
+	};
+
+	macaddr_art_18: macaddr at 18 {
+		reg = <0x18 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi
index d8a311614f..4daad4b0b0 100644
--- a/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi
+++ b/target/linux/ath79/dts/qca9558_comfast_cf-wr650ac.dtsi
@@ -84,7 +84,7 @@
 	status = "okay";
 
 	pll-data = <0xa6000000 0x00000101 0x00001616>;
-	mtd-mac-address = <&art 0x0>;
+
 	fixed-link {
 		speed = <1000>;
 		full-duplex;
@@ -95,7 +95,7 @@
 	status = "okay";
 
 	pll-data = <0x03000101 0x00000101 0x00001616>;
-	mtd-mac-address = <&art 0x6>;
+
 	fixed-link {
 		speed = <1000>;
 		full-duplex;
@@ -104,9 +104,6 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&art 0x18>;
 };
 
 // This node is required for the Ethernet ports to work correctly.
diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi b/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi
index 3f965f5b95..f629838f1a 100644
--- a/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi
+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi
@@ -11,7 +11,6 @@
 		led-failsafe = &led_system;
 		led-running = &led_system;
 		led-upgrade = &led_system;
-		label-mac-device = &eth1;
 	};
 
 	leds: leds {
@@ -149,8 +148,6 @@
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&uboot 0x1fc00>;
-	mac-address-increment = <1>;
 	phy-handle = <&phy0>;
 	pll-data = <0x56000000 0x00000101 0x00001616>;
 
@@ -163,7 +160,6 @@
 &eth1 {
 	status = "okay";
 
-	mtd-mac-address = <&uboot 0x1fc00>;
 	pll-data = <0x03000101 0x00000101 0x00001616>;
 
 	fixed-link {
@@ -174,7 +170,4 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&uboot 0x1fc00>;
 };
diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c5-v1.dts b/target/linux/ath79/dts/qca9558_tplink_archer-c5-v1.dts
index 9ffbce0a21..85012d3aac 100644
--- a/target/linux/ath79/dts/qca9558_tplink_archer-c5-v1.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c5-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c5-v1", "qca,qca9558";
 	model = "TP-Link Archer C5 v1";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &keys {
@@ -43,3 +47,31 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts
index e2d1d63813..dfa64d6ca3 100644
--- a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c7-v1", "qca,qca9558";
 	model = "TP-Link Archer C7 v1";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &keys {
@@ -43,3 +47,31 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts
index be99b8e3e4..9e959a276a 100644
--- a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c7-v2", "qca,qca9558";
 	model = "TP-Link Archer C7 v2";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &keys {
@@ -43,3 +47,31 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9558_tplink_tl-wdr7500-v3.dts b/target/linux/ath79/dts/qca9558_tplink_tl-wdr7500-v3.dts
index 04368b9244..998ede85cb 100644
--- a/target/linux/ath79/dts/qca9558_tplink_tl-wdr7500-v3.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_tl-wdr7500-v3.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,tl-wdr7500-v3", "qca,qca9558";
 	model = "TP-Link TL-WDR7500 v3";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &keys {
@@ -43,3 +47,31 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_uboot_1fc00>;
+	nvmem-cell-names = "mac-address";
+};
+
+&uboot {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_uboot_1fc00: macaddr at 1fc00 {
+		reg = <0x1fc00 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c58-v1.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c58-v1.dts
index ea86b8f35e..180efada12 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c58-v1.dts
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c58-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c58-v1", "qca,qca9560";
 	model = "TP-Link Archer C58 v1";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &spi {
@@ -52,3 +56,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c59-v1.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c59-v1.dts
index 07e8379172..c385eb1592 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c59-v1.dts
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c59-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c59-v1", "qca,qca9560";
 	model = "TP-Link Archer C59 v1";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &leds {
@@ -76,3 +80,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c59-v2.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c59-v2.dts
index c1321f5d20..5a277723e3 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c59-v2.dts
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c59-v2.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c59-v2", "qca,qca9560";
 	model = "TP-Link Archer C59 v2";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &leds {
@@ -82,3 +86,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi b/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
index 673805e132..bb942078dc 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c5x.dtsi
@@ -13,7 +13,6 @@
 		led-failsafe = &led_power;
 		led-running = &led_power;
 		led-upgrade = &led_power;
-		label-mac-device = &eth1;
 	};
 
 	led_spi {
@@ -126,9 +125,6 @@
 
 	phy-handle = <&swphy0>;
 
-	mtd-mac-address = <&info 0x8>;
-	mac-address-increment = <1>;
-
 	gmac-config {
 		device = <&gmac>;
 
@@ -139,13 +135,8 @@
 
 &eth1 {
 	status = "okay";
-
-	mtd-mac-address = <&info 0x8>;
 };
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
 };
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts
index a3bbf3e49c..f5ab2e5977 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c60-v1", "qca,qca9561";
 	model = "TP-Link Archer C60 v1";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &leds {
@@ -64,3 +68,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts
index 2bcab77dbf..014222770f 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v2.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c60-v2", "qca,qca9561";
 	model = "TP-Link Archer C60 v2";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &leds {
@@ -70,3 +74,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts
index c1a0a8c2e5..a2f46ecd60 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c60-v3.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c60-v3", "qca,qca9561";
 	model = "TP-Link Archer C60 v3";
+
+	aliases {
+		label-mac-device = &eth1;
+	};
 };
 
 &leds {
@@ -13,6 +17,7 @@
 		gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
 	};
 };
+
 &spi {
 	status = "okay";
 
@@ -64,3 +69,31 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <1>;
+};
+
+&eth1 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi b/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi
index 5c5d1620b9..e5f9d0bcc5 100644
--- a/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi
+++ b/target/linux/ath79/dts/qca9561_tplink_archer-c6x.dtsi
@@ -11,7 +11,6 @@
 		led-failsafe = &led_power;
 		led-running = &led_power;
 		led-upgrade = &led_power;
-		label-mac-device = &eth1;
 	};
 
 	keys {
@@ -71,20 +70,12 @@
 	status = "okay";
 
 	phy-handle = <&swphy4>;
-
-	mtd-mac-address = <&info 0x8>;
-	mac-address-increment = <1>;
 };
 
 &eth1 {
 	status = "okay";
-
-	mtd-mac-address = <&info 0x8>;
 };
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
 };
diff --git a/target/linux/ath79/dts/qca9563_elecom_wrc-1750ghbk2-i.dts b/target/linux/ath79/dts/qca9563_elecom_wrc-1750ghbk2-i.dts
index b4f7718230..510b577d19 100644
--- a/target/linux/ath79/dts/qca9563_elecom_wrc-1750ghbk2-i.dts
+++ b/target/linux/ath79/dts/qca9563_elecom_wrc-1750ghbk2-i.dts
@@ -50,3 +50,23 @@
 &pcie {
 	status = "okay";
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_1002>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_1002: macaddr at 1002 {
+		reg = <0x1002 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts b/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts
index 3af6f59d09..28ffce6434 100644
--- a/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts
+++ b/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts
@@ -40,3 +40,23 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_art_1002>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+};
+
+&art {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_art_1002: macaddr at 1002 {
+		reg = <0x1002 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_elecom_wrc-ghbk2-i.dtsi b/target/linux/ath79/dts/qca9563_elecom_wrc-ghbk2-i.dtsi
index 044485316c..a6706da1a5 100644
--- a/target/linux/ath79/dts/qca9563_elecom_wrc-ghbk2-i.dtsi
+++ b/target/linux/ath79/dts/qca9563_elecom_wrc-ghbk2-i.dtsi
@@ -105,13 +105,10 @@
 
 	pll-data = <0x03000101 0x00000101 0x00001919>;
 
-	mtd-mac-address = <&art 0x1002>;
-	mac-address-increment = <(-1)>;
 	phy-mode = "sgmii";
 	phy-handle = <&phy0>;
 };
 
 &wmac {
 	status = "okay";
-	mtd-cal-data = <&art 0x1000>;
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-a7-v5.dts b/target/linux/ath79/dts/qca9563_tplink_archer-a7-v5.dts
index eecfe35455..3bb6d685cc 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-a7-v5.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-a7-v5.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-a7-v5", "qca,qca9563";
 	model = "TP-Link Archer A7 v5";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &keys {
@@ -59,3 +63,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2-us.dts b/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2-us.dts
index 892e87ebaf..76e19294f8 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2-us.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2-us.dts
@@ -7,6 +7,8 @@
 	model = "TP-Link Archer C6 v2 (US) / A6 v2 (US/TW)";
 
 	aliases {
+		label-mac-device = &eth0;
+
 		led-boot = &led_power;
 		led-failsafe = &led_power;
 		led-running = &led_power;
@@ -125,3 +127,25 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2.dts b/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2.dts
index c64402bcfe..c40fe0f292 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-c6-v2.dts
@@ -7,6 +7,8 @@
 	model = "TP-Link Archer C6 v2 (EU/RU/JP)";
 
 	aliases {
+		label-mac-device = &eth0;
+
 		led-boot = &led_power;
 		led-failsafe = &led_power;
 		led-running = &led_power;
@@ -119,3 +121,25 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-c7-v5.dts b/target/linux/ath79/dts/qca9563_tplink_archer-c7-v5.dts
index da8d0c1fc7..d2631e227c 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-c7-v5.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-c7-v5.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,archer-c7-v5", "qca,qca9563";
 	model = "TP-Link Archer C7 v5";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &keys {
@@ -65,3 +69,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-x6-v2.dtsi b/target/linux/ath79/dts/qca9563_tplink_archer-x6-v2.dtsi
index 1a074e63a6..fc6206d891 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-x6-v2.dtsi
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-x6-v2.dtsi
@@ -5,12 +5,6 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 
-/ {
-	aliases {
-		label-mac-device = &eth0;
-	};
-};
-
 &pcie {
 	status = "okay";
 };
@@ -37,13 +31,8 @@
 
 	phy-mode = "sgmii";
 	phy-handle = <&phy0>;
-
-	mtd-mac-address = <&info 0x8>;
 };
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi b/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
index 3644cf863e..6763fe9d3d 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-x7-v5.dtsi
@@ -11,7 +11,6 @@
 		led-failsafe = &led_system;
 		led-running = &led_system;
 		led-upgrade = &led_system;
-		label-mac-device = &eth0;
 	};
 
 	leds {
@@ -162,13 +161,9 @@
 	pll-data = <0x03000101 0x00000101 0x00001919>;
 
 	phy-mode = "sgmii";
-	mtd-mac-address = <&info 0x8>;
 	phy-handle = <&phy0>;
 };
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_re450-v2.dts b/target/linux/ath79/dts/qca9563_tplink_re450-v2.dts
index d0356d6680..73cf5323ee 100644
--- a/target/linux/ath79/dts/qca9563_tplink_re450-v2.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_re450-v2.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,re450-v2", "qca,qca9563";
 	model = "TP-Link RE450 v2";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -44,3 +48,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_re450-v3.dts b/target/linux/ath79/dts/qca9563_tplink_re450-v3.dts
index 695f78ed02..ffebcb9bae 100644
--- a/target/linux/ath79/dts/qca9563_tplink_re450-v3.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_re450-v3.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,re450-v3", "qca,qca9563";
 	model = "TP-Link RE450 v3";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -50,3 +54,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_re450.dtsi b/target/linux/ath79/dts/qca9563_tplink_re450.dtsi
index 3354baee08..3841a4c8fd 100644
--- a/target/linux/ath79/dts/qca9563_tplink_re450.dtsi
+++ b/target/linux/ath79/dts/qca9563_tplink_re450.dtsi
@@ -7,7 +7,6 @@
 
 / {
 	aliases {
-		label-mac-device = &eth0;
 		led-boot = &led_power;
 		led-failsafe = &led_power;
 		led-running = &led_power;
@@ -129,13 +128,8 @@
 
 	phy-mode = "sgmii";
 	phy-handle = <&phy4>;
-
-	mtd-mac-address = <&info 0x8>;
 };
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_re455-v1.dts b/target/linux/ath79/dts/qca9563_tplink_re455-v1.dts
index b6c1efb846..bf4e5848af 100644
--- a/target/linux/ath79/dts/qca9563_tplink_re455-v1.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_re455-v1.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,re455-v1", "qca,qca9563";
 	model = "TP-Link RE455 v1";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
@@ -50,3 +54,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630-v1.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630-v1.dts
index d0fa6d332f..0ccfb42d9a 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630-v1.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630-v1.dts
@@ -43,6 +43,8 @@
 };
 
 &wmac {
+	mtd-cal-data = <&art 0x1000>;
+
 	nvmem-cells = <&macaddr_uboot_fc00>;
 	nvmem-cell-names = "mac-address";
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630.dtsi b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630.dtsi
index 5fd314b856..431c990815 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630.dtsi
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630.dtsi
@@ -128,6 +128,4 @@
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2-int.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2-int.dts
index 50a88f344a..95ff6b0363 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2-int.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2-int.dts
@@ -1,13 +1,35 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "qca9563_tplink_tl-wpa8630p-v2.dtsi"
+#include "qca9563_tplink_tl-wpa8630.dtsi"
 
 / {
 	compatible = "tplink,tl-wpa8630p-v2-int", "qca,qca9563";
 	model = "TP-Link WPA8630P v2 (Int.)";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
+	partition at 0 {
+		label = "factory-uboot";
+		reg = <0x000000 0x020000>;
+		read-only;
+	};
+
+	partition at 20000 {
+		label = "u-boot";
+		reg = <0x020000 0x020000>;
+		read-only;
+	};
+
+	partition at 40000 {
+		compatible = "tplink,firmware";
+		label = "firmware";
+		reg = <0x040000 0x5e0000>;
+	};
+
 	partition at 620000 {
 		label = "partition-table";
 		reg = <0x620000 0x010000>;
@@ -32,3 +54,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.0-eu.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.0-eu.dts
index 9eff2fcf68..34efeb9450 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.0-eu.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.0-eu.dts
@@ -1,13 +1,35 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "qca9563_tplink_tl-wpa8630p-v2.dtsi"
+#include "qca9563_tplink_tl-wpa8630.dtsi"
 
 / {
 	compatible = "tplink,tl-wpa8630p-v2.0-eu", "qca,qca9563";
 	model = "TP-Link WPA8630P v2.0 (EU)";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
+	partition at 0 {
+		label = "factory-uboot";
+		reg = <0x000000 0x020000>;
+		read-only;
+	};
+
+	partition at 20000 {
+		label = "u-boot";
+		reg = <0x020000 0x020000>;
+		read-only;
+	};
+
+	partition at 40000 {
+		compatible = "tplink,firmware";
+		label = "firmware";
+		reg = <0x040000 0x5e0000>;
+	};
+
 	partition at 620000 {
 		label = "partition-table";
 		reg = <0x620000 0x010000>;
@@ -32,3 +54,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.1-eu.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.1-eu.dts
index e8d92419c6..a477b50417 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.1-eu.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.1-eu.dts
@@ -1,13 +1,35 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "qca9563_tplink_tl-wpa8630p-v2.dtsi"
+#include "qca9563_tplink_tl-wpa8630.dtsi"
 
 / {
 	compatible = "tplink,tl-wpa8630p-v2.1-eu", "qca,qca9563";
 	model = "TP-Link WPA8630P v2.1 (EU)";
+
+	aliases {
+		label-mac-device = &eth0;
+	};
 };
 
 &partitions {
+	partition at 0 {
+		label = "factory-uboot";
+		reg = <0x000000 0x020000>;
+		read-only;
+	};
+
+	partition at 20000 {
+		label = "u-boot";
+		reg = <0x020000 0x020000>;
+		read-only;
+	};
+
+	partition at 40000 {
+		compatible = "tplink,firmware";
+		label = "firmware";
+		reg = <0x040000 0x5e0000>;
+	};
+
 	/* 0x620000 to 0x680000 is empty in OEM partitioning */
 
 	partition at 680000 {
@@ -28,3 +50,25 @@
 		read-only;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.dtsi b/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.dtsi
deleted file mode 100644
index 9e6d23de4e..0000000000
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wpa8630p-v2.dtsi
+++ /dev/null
@@ -1,37 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
-
-#include "qca9563_tplink_tl-wpa8630.dtsi"
-
-/ {
-	aliases {
-		label-mac-device = &eth0;
-	};
-};
-
-&partitions {
-	partition at 0 {
-		label = "factory-uboot";
-		reg = <0x000000 0x020000>;
-		read-only;
-	};
-
-	partition at 20000 {
-		label = "u-boot";
-		reg = <0x020000 0x020000>;
-		read-only;
-	};
-
-	partition at 40000 {
-		compatible = "tplink,firmware";
-		label = "firmware";
-		reg = <0x040000 0x5e0000>;
-	};
-};
-
-&eth0 {
-	mtd-mac-address = <&info 0x8>;
-};
-
-&wmac {
-	mtd-mac-address = <&info 0x8>;
-};
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n-v5.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n-v5.dts
index cba124aa85..6d75824515 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n-v5.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n-v5.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "tplink,tl-wr1043n-v5", "qca,qca9563";
 	model = "TP-Link TL-WR1043N v5";
+
+	aliases {
+		label-mac-device = &wmac;
+	};
 };
 
 &spi {
@@ -70,3 +74,25 @@
 		};
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n.dtsi b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n.dtsi
index c8c69e8a65..b99412eb79 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n.dtsi
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043n.dtsi
@@ -11,7 +11,6 @@
 		led-failsafe = &led_system;
 		led-running = &led_system;
 		led-upgrade = &led_system;
-		label-mac-device = &wmac;
 	};
 
 	leds: leds {
@@ -103,14 +102,10 @@
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&info 0x8>;
 	phy-mode = "sgmii";
 	phy-handle = <&phy0>;
 };
 
 &wmac {
 	status = "okay";
-
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
index ddb986ffdd..bf01f06de6 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
@@ -6,6 +6,10 @@
 	compatible = "tplink,tl-wr1043nd-v4", "qca,qca9563";
 	model = "TP-Link TL-WR1043ND v4";
 
+	aliases {
+		label-mac-device = &wmac;
+	};
+
 	gpio-export {
 		compatible = "gpio-export";
 		#size-cells = <0>;
@@ -99,3 +103,25 @@
 		#trigger-source-cells = <0>;
 	};
 };
+
+&eth0 {
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wmac {
+	mtd-cal-data = <&art 0x1000>;
+
+	nvmem-cells = <&macaddr_info_8>;
+	nvmem-cell-names = "mac-address";
+};
+
+&info {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_info_8: macaddr at 8 {
+		reg = <0x8 0x6>;
+	};
+};



More information about the lede-commits mailing list