From: Markus Stockhausen Date: Tue, 20 May 2025 07:37:10 +0000 (-0400) Subject: realtek: add dts helper for internal phy with serdes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5703ca465cc1ac6ed354627a38b654dd68b9ec9e;p=thirdparty%2Fopenwrt.git realtek: add dts helper for internal phy with serdes Until now only the RTL930x devices make use of the following notation. phy8: ethernet-phy@8 { compatible = "ethernet-phy-ieee802.3-c22"; phy-is-integrated; reg = <8>; sds = <3>; }; This indicates that the link is driven by a serdes directly without external phy. As the devices have multiple serdes it must be clarified what serdes is responsible for that port. Nevertheless all other devices have the same requirements. E.g. RTL838x usually drives port 24 from serdes 4 and port 26 from serdes 5. All this currently works because the driver has a lot of hardcoded port/serdes mapping. Make the situation better by adding dts helpers that can describe the topology as needed. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/18851 Signed-off-by: Robert Marko --- diff --git a/target/linux/realtek/dts/rtl838x.dtsi b/target/linux/realtek/dts/rtl838x.dtsi index 8f44de8bdcf..035ff029c9a 100644 --- a/target/linux/realtek/dts/rtl838x.dtsi +++ b/target/linux/realtek/dts/rtl838x.dtsi @@ -16,6 +16,14 @@ phy-is-integrated; \ }; +#define INTERNAL_PHY_SDS(n, s) \ + phy##n: ethernet-phy@##n { \ + reg = <##n>; \ + compatible = "ethernet-phy-ieee802.3-c22"; \ + phy-is-integrated; \ + sds = <##s>; \ + }; + #define EXTERNAL_PHY(n) \ phy##n: ethernet-phy@##n { \ reg = <##n>; \ diff --git a/target/linux/realtek/dts/rtl839x.dtsi b/target/linux/realtek/dts/rtl839x.dtsi index 98c69a5d34b..29458269faf 100644 --- a/target/linux/realtek/dts/rtl839x.dtsi +++ b/target/linux/realtek/dts/rtl839x.dtsi @@ -15,6 +15,14 @@ phy-is-integrated; \ }; +#define INTERNAL_PHY_SDS(n, s) \ + phy##n: ethernet-phy@##n { \ + reg = <##n>; \ + compatible = "ethernet-phy-ieee802.3-c22"; \ + phy-is-integrated; \ + sds = <##s>; \ + }; + #define EXTERNAL_PHY(n) \ phy##n: ethernet-phy@##n { \ reg = <##n>; \ diff --git a/target/linux/realtek/dts/rtl930x.dtsi b/target/linux/realtek/dts/rtl930x.dtsi index 34d1ede54c9..947f0d9be5f 100644 --- a/target/linux/realtek/dts/rtl930x.dtsi +++ b/target/linux/realtek/dts/rtl930x.dtsi @@ -2,6 +2,14 @@ /dts-v1/; +#define INTERNAL_PHY_SDS(n, s) \ + phy##n: ethernet-phy@##n { \ + reg = <##n>; \ + compatible = "ethernet-phy-ieee802.3-c22"; \ + phy-is-integrated; \ + sds = <##s>; \ + }; + / { #address-cells = <1>; #size-cells = <1>; diff --git a/target/linux/realtek/dts/rtl931x.dtsi b/target/linux/realtek/dts/rtl931x.dtsi index 7ecfd2a0c6e..c7feef4724a 100644 --- a/target/linux/realtek/dts/rtl931x.dtsi +++ b/target/linux/realtek/dts/rtl931x.dtsi @@ -2,6 +2,16 @@ #include +/dts-v1/; + +#define INTERNAL_PHY_SDS(n, s) \ + phy##n: ethernet-phy@##n { \ + reg = <##n>; \ + compatible = "ethernet-phy-ieee802.3-c22"; \ + phy-is-integrated; \ + sds = <##s>; \ + }; + / { #address-cells = <1>; #size-cells = <1>;