[openwrt/openwrt] rtl839x: fix sfp ports on HPE 1920-48G PoE

LEDE Commits lede-commits at lists.infradead.org
Sun Jun 22 02:13:05 PDT 2025


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

commit a37b47a512a8ad88ee83e9a9f9ef07d9211a53e8
Author: Joe Holden <jwh at zorins.us>
AuthorDate: Sat May 3 15:04:56 2025 +0000

    rtl839x: fix sfp ports on HPE 1920-48G PoE
    
    The 4 sfp ports on the RTL8214FC are actually wired to the gpio expander instead of internal.
    
    Relatively minor changes to the dts are required, simply overriding some of the properties
    inherited from rtl8393_hpe_1920.dtsi.
    
    The speed is reported as 100/full and the media type is incorrect, but the ports pass traffic
    just fine.
    
    Signed-off-by: Joe Holden <jwh at zorins.us>
    Link: https://github.com/openwrt/openwrt/pull/18914
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../linux/realtek/dts/rtl8393_hpe_1920-48g-poe.dts | 91 ++++++++++++++++++++
 target/linux/realtek/dts/rtl8393_hpe_1920-48g.dts  | 96 ++++++++++++++++++++++
 target/linux/realtek/dts/rtl8393_hpe_1920.dtsi     | 86 -------------------
 3 files changed, 187 insertions(+), 86 deletions(-)

diff --git a/target/linux/realtek/dts/rtl8393_hpe_1920-48g-poe.dts b/target/linux/realtek/dts/rtl8393_hpe_1920-48g-poe.dts
index 9765f80d88..e35ba85c35 100644
--- a/target/linux/realtek/dts/rtl8393_hpe_1920-48g-poe.dts
+++ b/target/linux/realtek/dts/rtl8393_hpe_1920-48g-poe.dts
@@ -16,6 +16,97 @@
 		alarm-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
 		#cooling-cells = <2>;
 	};
+
+        i2c0: i2c-gpio-0 {
+                compatible = "i2c-gpio";
+                sda-gpios = <&gpio1 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                scl-gpios = <&gpio1 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                i2c-gpio,delay-us = <2>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+        };
+
+        sfp0: sfp-p49 {
+                compatible = "sff,sfp";
+                i2c-bus = <&i2c0>;
+                los-gpio = <&gpio1 22 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&gpio1 21 GPIO_ACTIVE_LOW>;
+                // tx-fault unconnected (TODO?)
+                // tx-disable connected to RTL8214FC (TODO?)
+        };
+
+        i2c1: i2c-gpio-1 {
+                compatible = "i2c-gpio";
+                sda-gpios = <&gpio1 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                scl-gpios = <&gpio1 24 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                i2c-gpio,delay-us = <2>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+        };
+
+        sfp1: sfp-p50 {
+                compatible = "sff,sfp";
+                i2c-bus = <&i2c1>;
+                los-gpio = <&gpio1 26 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&gpio1 25 GPIO_ACTIVE_LOW>;
+                // tx-fault unconnected (TODO?)
+                // tx-disable connected to RTL8214FC (TODO?)
+        };
+
+        i2c2: i2c-gpio-2 {
+                compatible = "i2c-gpio";
+                sda-gpios = <&gpio1 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                scl-gpios = <&gpio1 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                i2c-gpio,delay-us = <2>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+        };
+
+        sfp2: sfp-p51 {
+                compatible = "sff,sfp";
+                i2c-bus = <&i2c2>;
+                los-gpio = <&gpio1 30 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&gpio1 29 GPIO_ACTIVE_LOW>;
+                // tx-fault unconnected (TODO?)
+                // tx-disable connected to RTL8214FC (TODO?)
+        };
+
+        i2c3: i2c-gpio-3 {
+                compatible = "i2c-gpio";
+                sda-gpios = <&gpio1 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                scl-gpios = <&gpio1 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                i2c-gpio,delay-us = <2>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+        };
+
+        sfp3: sfp-p52 {
+                compatible = "sff,sfp";
+                i2c-bus = <&i2c3>;
+                los-gpio = <&gpio1 34 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&gpio1 33 GPIO_ACTIVE_LOW>;
+                // tx-fault unconnected (TODO?)
+                // tx-disable connected to RTL8214FC (TODO?)
+        };
+};
+
+&ethernet0 {
+        mdio: mdio-bus {
+		EXTERNAL_SFP_PHY_FULL(48, 0)
+		EXTERNAL_SFP_PHY_FULL(49, 1)
+		EXTERNAL_SFP_PHY_FULL(50, 2)
+		EXTERNAL_SFP_PHY_FULL(51, 3)
+	};
+};
+
+
+&switch0 {
+	ports {
+		SWITCH_PORT(48, 49, qsgmii)
+		SWITCH_PORT(49, 50, qsgmii)
+		SWITCH_PORT(50, 51, qsgmii)
+		SWITCH_PORT(51, 52, qsgmii)
+	};
 };
 
 &uart1 {
diff --git a/target/linux/realtek/dts/rtl8393_hpe_1920-48g.dts b/target/linux/realtek/dts/rtl8393_hpe_1920-48g.dts
index b6a6a1c433..651ae69864 100644
--- a/target/linux/realtek/dts/rtl8393_hpe_1920-48g.dts
+++ b/target/linux/realtek/dts/rtl8393_hpe_1920-48g.dts
@@ -5,4 +5,100 @@
 / {
 	compatible = "hpe,1920-48g", "realtek,rtl8393-soc";
 	model = "HPE 1920-48G (JG927A)";
+
+	i2c0: i2c-gpio-0 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpio0 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpio0 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+
+	sfp0: sfp-p49 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c0>;
+		los-gpio = <&gpio0 20 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpio = <&gpio0 19 GPIO_ACTIVE_LOW>;
+		// tx-fault unconnected (TODO?)
+		// tx-disable connected to RTL8214FC (TODO?)
+	};
+
+	i2c1: i2c-gpio-1 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpio0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+
+	sfp1: sfp-p50 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c1>;
+		los-gpio = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpio = <&gpio0 12 GPIO_ACTIVE_LOW>;
+		// tx-fault unconnected (TODO?)
+		// tx-disable connected to RTL8214FC (TODO?)
+	};
+
+	// not enabled due to shared I2C clock
+	i2c2: i2c-gpio-2 {
+		status = "disabled";
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpio0 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+
+	sfp2: sfp-p51 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c2>;
+		los-gpio = <&gpio0 23 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpio = <&gpio0 22 GPIO_ACTIVE_LOW>;
+		// tx-fault unconnected (TODO?)
+		// tx-disable connected to RTL8214FC (TODO?)
+	};
+
+	// not enabled due to shared I2C clock
+	i2c3: i2c-gpio-3 {
+		status = "disabled";
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpio0 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+
+	sfp3: sfp-p52 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c3>;
+		los-gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpio = <&gpio0 15 GPIO_ACTIVE_LOW>;
+		// tx-fault unconnected (TODO?)
+		// tx-disable connected to RTL8214FC (TODO?)
+	};
+
+};
+
+&ethernet0 {
+        mdio: mdio-bus {
+		EXTERNAL_SFP_PHY_FULL(48, 1)
+		EXTERNAL_SFP_PHY_FULL(49, 3)
+		EXTERNAL_SFP_PHY_FULL(50, 0)
+		EXTERNAL_SFP_PHY_FULL(51, 2)
+	};
+};
+
+
+&switch0 {
+        ports {
+		SWITCH_PORT(48, 50, qsgmii)
+		SWITCH_PORT(49, 52, qsgmii)
+		SWITCH_PORT(50, 49, qsgmii)
+		SWITCH_PORT(51, 51, qsgmii)
+	};
 };
diff --git a/target/linux/realtek/dts/rtl8393_hpe_1920.dtsi b/target/linux/realtek/dts/rtl8393_hpe_1920.dtsi
index 8af34be9a8..2db74b1075 100644
--- a/target/linux/realtek/dts/rtl8393_hpe_1920.dtsi
+++ b/target/linux/realtek/dts/rtl8393_hpe_1920.dtsi
@@ -22,82 +22,6 @@
 			gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
 		};
 	};
-
-	i2c0: i2c-gpio-0 {
-		compatible = "i2c-gpio";
-		sda-gpios = <&gpio0 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		scl-gpios = <&gpio0 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		i2c-gpio,delay-us = <2>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
-
-	sfp0: sfp-p49 {
-		compatible = "sff,sfp";
-		i2c-bus = <&i2c0>;
-		los-gpio = <&gpio0 20 GPIO_ACTIVE_HIGH>;
-		mod-def0-gpio = <&gpio0 19 GPIO_ACTIVE_LOW>;
-		// tx-fault unconnected (TODO?)
-		// tx-disable connected to RTL8214FC (TODO?)
-	};
-
-	i2c1: i2c-gpio-1 {
-		compatible = "i2c-gpio";
-		sda-gpios = <&gpio0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		scl-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		i2c-gpio,delay-us = <2>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
-
-	sfp1: sfp-p50 {
-		compatible = "sff,sfp";
-		i2c-bus = <&i2c1>;
-		los-gpio = <&gpio0 13 GPIO_ACTIVE_HIGH>;
-		mod-def0-gpio = <&gpio0 12 GPIO_ACTIVE_LOW>;
-		// tx-fault unconnected (TODO?)
-		// tx-disable connected to RTL8214FC (TODO?)
-	};
-
-	// not enabled due to shared I2C clock
-	i2c2: i2c-gpio-2 {
-		status = "disabled";
-		compatible = "i2c-gpio";
-		sda-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		scl-gpios = <&gpio0 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		i2c-gpio,delay-us = <2>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
-
-	sfp2: sfp-p51 {
-		compatible = "sff,sfp";
-		i2c-bus = <&i2c2>;
-		los-gpio = <&gpio0 23 GPIO_ACTIVE_HIGH>;
-		mod-def0-gpio = <&gpio0 22 GPIO_ACTIVE_LOW>;
-		// tx-fault unconnected (TODO?)
-		// tx-disable connected to RTL8214FC (TODO?)
-	};
-
-	// not enabled due to shared I2C clock
-	i2c3: i2c-gpio-3 {
-		status = "disabled";
-		compatible = "i2c-gpio";
-		sda-gpios = <&gpio0 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		scl-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-		i2c-gpio,delay-us = <2>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
-
-	sfp3: sfp-p52 {
-		compatible = "sff,sfp";
-		i2c-bus = <&i2c3>;
-		los-gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>;
-		mod-def0-gpio = <&gpio0 15 GPIO_ACTIVE_LOW>;
-		// tx-fault unconnected (TODO?)
-		// tx-disable connected to RTL8214FC (TODO?)
-	};
 };
 
 &ethernet0 {
@@ -160,11 +84,6 @@
 		EXTERNAL_PHY(45)
 		EXTERNAL_PHY(46)
 		EXTERNAL_PHY(47)
-
-		EXTERNAL_SFP_PHY_FULL(48, 1)
-		EXTERNAL_SFP_PHY_FULL(49, 3)
-		EXTERNAL_SFP_PHY_FULL(50, 0)
-		EXTERNAL_SFP_PHY_FULL(51, 2)
 	};
 };
 
@@ -227,11 +146,6 @@
 		SWITCH_PORT(46, 47, qsgmii)
 		SWITCH_PORT(47, 48, qsgmii)
 
-		SWITCH_PORT(48, 50, qsgmii)
-		SWITCH_PORT(49, 52, qsgmii)
-		SWITCH_PORT(50, 49, qsgmii)
-		SWITCH_PORT(51, 51, qsgmii)
-
 		port at 52 {
 			ethernet = <&ethernet0>;
 			reg = <52>;




More information about the lede-commits mailing list