[openwrt/openwrt] qualcommax: ipq807x: use ascii-env driver for Linksys MX devices

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 16 06:19:58 PDT 2025


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/35a4607008909dc9052f3453a68931bb97fc0279

commit 35a4607008909dc9052f3453a68931bb97fc0279
Author: Paweł Owoc <frut3k7 at gmail.com>
AuthorDate: Wed May 7 19:05:46 2025 +0200

    qualcommax: ipq807x: use ascii-env driver for Linksys MX devices
    
    ascii-env driver allows reading mac addresses directly from devinfo partition from dts level.
    
    Additionally label mac address have been set.
    
    Signed-off-by: Paweł Owoc <frut3k7 at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/18759
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../arch/arm64/boot/dts/qcom/ipq8072-mx8500.dts    | 19 +++++++++++++++++
 .../arch/arm64/boot/dts/qcom/ipq8174-homewrk.dts   |  2 ++
 .../arch/arm64/boot/dts/qcom/ipq8174-mx4200.dtsi   | 16 ++++++++-------
 .../arch/arm64/boot/dts/qcom/ipq8174-mx4200v1.dts  |  7 +++++++
 .../arch/arm64/boot/dts/qcom/ipq8174-mx4200v2.dts  | 24 ++++++++++++++++++++++
 .../arch/arm64/boot/dts/qcom/ipq8174-mx4300.dts    | 21 +++++++++++++++++++
 .../arch/arm64/boot/dts/qcom/ipq8174-mx4x00.dtsi   |  6 ------
 .../ipq807x/base-files/etc/board.d/02_network      | 11 ----------
 8 files changed, 82 insertions(+), 24 deletions(-)

diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-mx8500.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-mx8500.dts
index 5bd2f6ccad..b0be9a9e6f 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-mx8500.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-mx8500.dts
@@ -257,6 +257,15 @@
 				label = "devinfo";
 				reg = <0x1060000 0x20000>;
 				read-only;
+
+				nvmem-layout {
+					compatible = "ascii-eq-delim-env";
+
+					hw_mac_addr: hw_mac_addr {
+						compatible = "mac-base";
+						#nvmem-cell-cells = <1>;
+					};
+				};
 			};
 
 			partition at 1080000 {
@@ -446,6 +455,8 @@
 	phy-mode = "qsgmii";
 	phy-handle = <&qca8075_0>;
 	label = "lan1";
+	nvmem-cells = <&hw_mac_addr 1>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp2 {
@@ -453,6 +464,8 @@
 	phy-mode = "qsgmii";
 	phy-handle = <&qca8075_1>;
 	label = "lan2";
+	nvmem-cells = <&hw_mac_addr 1>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp3 {
@@ -460,6 +473,8 @@
 	phy-mode = "qsgmii";
 	phy-handle = <&qca8075_2>;
 	label = "lan3";
+	nvmem-cells = <&hw_mac_addr 1>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp4 {
@@ -467,6 +482,8 @@
 	phy-mode = "qsgmii";
 	phy-handle = <&qca8075_3>;
 	label = "lan4";
+	nvmem-cells = <&hw_mac_addr 1>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp6_syn {
@@ -474,6 +491,8 @@
 	phy-mode = "usxgmii";
 	phy-handle = <&aqr114c>;
 	label = "wan";
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &ssphy_0 {
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-homewrk.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-homewrk.dts
index c56bc704ce..e623036df9 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-homewrk.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-homewrk.dts
@@ -9,6 +9,8 @@
 	compatible = "linksys,homewrk", "qcom,ipq8074";
 
 	aliases {
+		ethernet1 = &dp2;
+		ethernet2 = &dp3;
 		ethernet3 = &dp4;
 		ethernet4 = &dp5;
 	};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200.dtsi
index 5867cd4222..612ad6b50d 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200.dtsi
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200.dtsi
@@ -3,13 +3,6 @@
 
 #include "ipq8174-mx4x00.dtsi"
 
-/ {
-	aliases {
-		ethernet3 = &dp4;
-		ethernet4 = &dp5;
-	};
-};
-
 &tlmm {
 	iot_pins: iot-state {
 		recovery-pins {
@@ -184,6 +177,15 @@
 				label = "devinfo";
 				reg = <0x1060000 0x20000>;
 				read-only;
+
+				nvmem-layout {
+					compatible = "ascii-eq-delim-env";
+
+					hw_mac_addr: hw_mac_addr {
+						compatible = "mac-base";
+						#nvmem-cell-cells = <1>;
+					};
+				};
 			};
 
 			partition at 1080000 {
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v1.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v1.dts
index 7946e5c54d..fb09648357 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v1.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v1.dts
@@ -9,6 +9,13 @@
 / {
 	model = "Linksys MX4200v1";
 	compatible = "linksys,mx4200v1", "qcom,ipq8074";
+
+	aliases {
+		ethernet1 = &dp2;
+		ethernet2 = &dp3;
+		ethernet3 = &dp4;
+		ethernet4 = &dp5;
+	};
 };
 
 &wifi {
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v2.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v2.dts
index 44e1b72f16..da3af3c75b 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v2.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4200v2.dts
@@ -8,6 +8,30 @@
 / {
 	model = "Linksys MX4200v2";
 	compatible = "linksys,mx4200v2", "qcom,ipq8074";
+
+	aliases {
+		label-mac-device = &dp2;
+	};
+};
+
+&dp2 {
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp3 {
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp4 {
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp5 {
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &wifi {
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4300.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4300.dts
index 6d9b94a0bb..7e72195b5f 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4300.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4300.dts
@@ -20,6 +20,10 @@
 		bootargs-find-2 = "ubi.mtd=24,2048";
 		bootargs-replace-2 = "ubi.mtd=24,4096";
 	};
+
+	aliases {
+		label-mac-device = &dp2;
+	};
 };
 
 &qpic_nand {
@@ -175,6 +179,15 @@
 				label = "devinfo";
 				reg = <0x1200000 0x40000>;
 				read-only;
+
+				nvmem-layout {
+					compatible = "ascii-eq-delim-env";
+
+					hw_mac_addr: hw_mac_addr {
+						compatible = "mac-base";
+						#nvmem-cell-cells = <1>;
+					};
+				};
 			};
 
 			partition at 1240000 {
@@ -246,24 +259,32 @@
 	status = "okay";
 	phy-handle = <&qca8075_1>;
 	label = "wan";
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp3 {
 	status = "okay";
 	phy-handle = <&qca8075_2>;
 	label = "lan3";
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp4 {
 	status = "okay";
 	phy-handle = <&qca8075_3>;
 	label = "lan2";
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &dp5 {
 	status = "okay";
 	phy-handle = <&qca8075_4>;
 	label = "lan1";
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &wifi {
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4x00.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4x00.dtsi
index 84e68dae35..1bd150c160 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4x00.dtsi
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8174-mx4x00.dtsi
@@ -12,12 +12,6 @@
 	aliases {
 		serial0 = &blsp1_uart5;
 		serial1 = &blsp1_uart3;
-		/*
-		 * Aliases as required by u-boot
-		 * to patch MAC addresses
-		 */
-		ethernet1 = &dp2;
-		ethernet2 = &dp3;
 		led-boot = &led_system_blue;
 		led-running = &led_system_blue;
 		led-failsafe = &led_system_red;
diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
index 437b3936b3..70f8a3134b 100644
--- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
+++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
@@ -90,17 +90,6 @@ ipq807x_setup_macs()
 		lan_mac=$(macaddr_add "$wan_mac" 1)
 		label_mac="$wan_mac"
 		;;
-	linksys,mx4200v2|\
-	linksys,mx4300)
-		label_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
-		[ "$(mtd_get_mac_ascii u_env eth1addr)" != "$label_mac" ] && wan_mac=$label_mac
-		[ "$(mtd_get_mac_ascii u_env eth2addr)" != "$label_mac" ] && lan_mac=$label_mac
-		;;
-	linksys,mx8500)
-		label_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
-		lan_mac=$(macaddr_add $label_mac 1)
-		wan_mac=$label_mac
-		;;
 	tplink,deco-x80-5g)
 		label_mac=$(get_mac_binary /tmp/factory_data/default-mac 0)
 		lan_mac=$(macaddr_add $label_mac 1)




More information about the lede-commits mailing list