[openwrt/openwrt] realtek: tl-sg2xxx: read MAC address from nvmem-cells

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 13 00:23:07 PDT 2022


svanheule pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/d55c08739032e906ece6f842f8fac97265018c4f

commit d55c08739032e906ece6f842f8fac97265018c4f
Author: Alexandru Gagniuc <mr.nuke.me at gmail.com>
AuthorDate: Sat Aug 20 18:22:40 2022 -0500

    realtek: tl-sg2xxx: read MAC address from nvmem-cells
    
    The TP-Link RTL83xx based switches have their MAC address programmed
    in the "para" partition. While in theory, the format of this partition
    is dynamic, in practice, the MAC address appears to be located at a
    consistent address. Thus, use nvmem-cells to read this MAC address.
    
    The main MAC is required for deriving the MAC address of the switch
    ports. Instead of reading it via mtd_get_mac_binary(), alias the
    ethernet0 node as the label-mac-device, and use get_mac_label().
    
    Signed-off-by: Alexandru Gagniuc <mr.nuke.me at gmail.com>
---
 target/linux/realtek/base-files/etc/board.d/02_network      |  2 +-
 target/linux/realtek/dts-5.10/rtl8380_tplink_sg2xxx.dtsi    | 11 +++++++++++
 target/linux/realtek/dts-5.10/rtl8393_tplink_sg2452p-v4.dts | 11 +++++++++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network
index 6e0e0e7e03..aacbef77b4 100644
--- a/target/linux/realtek/base-files/etc/board.d/02_network
+++ b/target/linux/realtek/base-files/etc/board.d/02_network
@@ -41,7 +41,7 @@ hpe,1920-24g)
 	;;
 tplink,sg2008p-v1|\
 tplink,sg2452p-v4)
-	label_mac=$(mtd_get_mac_binary para 0xfdff4)
+	label_mac=$(get_mac_label)
 	lan_mac="$label_mac"
 	;;
 *)
diff --git a/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2xxx.dtsi b/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2xxx.dtsi
index 8aa82831ab..20e96af2e7 100644
--- a/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2xxx.dtsi
+++ b/target/linux/realtek/dts-5.10/rtl8380_tplink_sg2xxx.dtsi
@@ -11,6 +11,7 @@
 		led-failsafe = &led_power;
 		led-running = &led_power;
 		led-upgrade = &led_power;
+		label-mac-device = &ethernet0;
 	};
 
 	memory at 0 {
@@ -128,15 +129,25 @@
 				reg = <0x1b00000 0x400000>;
 			};
 			partition at 1f00000 {
+				compatible = "nvmem-cells";
 				label = "para";
 				reg = <0x1f00000 0x100000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
 				read-only;
+
+				factory_macaddr: macaddr at fdff4 {
+					reg = <0xfdff4 0x6>;
+				};
 			};
 		};
 	};
 };
 
 &ethernet0 {
+	nvmem-cells = <&factory_macaddr>;
+	nvmem-cell-names = "mac-address";
+
 	mdio: mdio-bus {
 		compatible = "realtek,rtl838x-mdio";
 		#address-cells = <1>;
diff --git a/target/linux/realtek/dts-5.10/rtl8393_tplink_sg2452p-v4.dts b/target/linux/realtek/dts-5.10/rtl8393_tplink_sg2452p-v4.dts
index 0649c9fb37..b7300cfcbe 100644
--- a/target/linux/realtek/dts-5.10/rtl8393_tplink_sg2452p-v4.dts
+++ b/target/linux/realtek/dts-5.10/rtl8393_tplink_sg2452p-v4.dts
@@ -20,6 +20,7 @@
 		led-failsafe = &led_sys;
 		led-running = &led_sys;
 		led-upgrade = &led_sys;
+		label-mac-device = &ethernet0;
 	};
 
 	chosen {
@@ -261,15 +262,25 @@
 				reg = <0x1b00000 0x400000>;
 			};
 			partition at 1f00000 {
+				compatible = "nvmem-cells";
 				label = "para";
 				reg = <0x1f00000 0x100000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
 				read-only;
+
+				factory_macaddr: macaddr at fdff4 {
+					reg = <0xfdff4 0x6>;
+				};
 			};
 		};
 	};
 };
 
 &ethernet0 {
+	nvmem-cells = <&factory_macaddr>;
+	nvmem-cell-names = "mac-address";
+
 	mdio: mdio-bus {
 		compatible = "realtek,rtl838x-mdio";
 		#address-cells = <1>;




More information about the lede-commits mailing list