Browse Source

qualcommax: ipq50xx: use ascii-env driver to set mac address for Linksys MX devices

The ascii-env driver enables reading name pair values from nand in ascii layout.
So, let's pick up and set the mac address accordingly.

Signed-off-by: George Moussalem <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/18029
Signed-off-by: Robert Marko <[email protected]>
George Moussalem 11 months ago
parent
commit
eacc4d8c9b

+ 1 - 0
target/linux/qualcommax/config-6.6

@@ -278,6 +278,7 @@ CONFIG_NR_CPUS=4
 CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
 CONFIG_NVMEM=y
 CONFIG_NVMEM_LAYOUTS=y
+CONFIG_NVMEM_LAYOUT_ASCII_ENV=y
 CONFIG_NVMEM_LAYOUT_U_BOOT_ENV=y
 CONFIG_NVMEM_QCOM_QFPROM=y
 # CONFIG_NVMEM_QCOM_SEC_QFPROM is not set

+ 12 - 2
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi

@@ -8,8 +8,6 @@
 / {
 
 	aliases {
-		ethernet0 = &dp1;
-		ethernet1 = &dp2;
 		led-boot = &led_system_blue;
 		led-failsafe = &led_system_red;
 		led-running = &led_system_blue;
@@ -209,6 +207,18 @@
 				label = "devinfo";
 				reg = <0x00680000 0x40000>;
 				read-only;
+
+				nvmem-layout {
+					compatible = "ascii-eq-delim-env";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					hw_mac_addr: hw_mac_addr {
+						compatible = "mac-base";
+
+						#nvmem-cell-cells = <1>;
+					};
+				};
 			};
 
 			partition@6c0000 {

+ 4 - 0
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts

@@ -48,8 +48,12 @@
 // MAC1 ---SGMII---> QCA8337 SerDes
 &dp2 {
 	status = "okay";
+
 	phy-mode = "sgmii";
 
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
+
 	fixed-link {
 		speed = <1000>;
 		full-duplex;

+ 4 - 0
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts

@@ -48,8 +48,12 @@
 // MAC1 ---SGMII---> QCA8337 SerDes
 &dp2 {
 	status = "okay";
+
 	phy-mode = "sgmii";
 
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
+
 	fixed-link {
 		speed = <1000>;
 		full-duplex;

+ 5 - 0
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts

@@ -53,6 +53,9 @@
 // MAC0 -> GE Phy
 &dp1 {
 	status = "okay";
+
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 // MAC1 ---SGMII---> QCA8081
@@ -61,6 +64,8 @@
 
 	label = "wan";
 	phy-handle = <&qca8081>;
+	nvmem-cells = <&hw_mac_addr 0>;
+	nvmem-cell-names = "mac-address";
 };
 
 &mdio0 {

+ 0 - 24
target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network

@@ -15,33 +15,9 @@ ipq50xx_setup_interfaces()
 	esac
 }
 
-ipq50xx_setup_macs()
-{
-	local board="$1"
-	local lan_mac=""
-	local wan_mac=""
-	local label_mac=""
-
-	case "$board" in
-	linksys,mx2000|\
-	linksys,mx5500|\
-	linksys,spnmx56)
-		label_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
-		lan_mac=$label_mac
-		wan_mac=$label_mac
-		ucidef_set_network_device_mac eth0 $label_mac
-		;;
-	esac
-
-	[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
-	[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
-	[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
-}
-
 board_config_update
 board=$(board_name)
 ipq50xx_setup_interfaces $board
-ipq50xx_setup_macs $board
 board_config_flush
 
 exit 0