]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
realtek: add PoE support for XS1930-12HP 21728/head 23222/head
authorJonas Jelonek <jelonek.jonas@gmail.com>
Mon, 18 May 2026 21:30:31 +0000 (21:30 +0000)
committerJonas Jelonek <jelonek.jonas@gmail.com>
Tue, 14 Jul 2026 21:45:30 +0000 (23:45 +0200)
Add support for PoE functionality using the realtek-pse-mcu driver
(kmod-pse-realtek-mcu-i2c) interfacing the on-board PoE MCU and RTL8239
PSE chips.

This doesn't include any support for PoE-related LEDs.

Link: https://github.com/openwrt/openwrt/pull/23222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
target/linux/realtek/dts/rtl9313_zyxel_xs1930-12hp.dts
target/linux/realtek/image/rtl931x.mk

index ec0197e1c4f6897642475ff0a93155b77b0bd1af..972fb2d348fedb7d5d15ad5124e964dfed985ca6 100644 (file)
                        gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
                };
        };
+
+       poe_power: regulator-poe {
+               compatible = "regulator-fixed";
+               regulator-name = "poe-power";
+               gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 };
 
 &led_set {
 &led_sys_green { gpios = <&gpio0 23 GPIO_ACTIVE_LOW>; };
 &led_sys_red { gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; };
 
-&gpio0 {
-       poe_enable_hog {
-               gpio-hog;
-               gpios = <10 GPIO_ACTIVE_HIGH>;
-               output-high;
-               line-name = "poe-enable";
-       };
-};
-
 &i2c_mst1 {
-       /* PoE management MCU sits here */
-       i2c3: i2c@3 { reg = <3>; };
+       i2c3: i2c@3 {
+               reg = <3>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pse: ethernet-pse@20 {
+                       compatible = "zyxel,xs1930-12hp-pse", "realtek,pse-mcu-gen2-smbus";
+                       reg = <0x20>;
+
+                       enable-gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
+                       power-supply = <&poe_power>;
+
+                       pse-pis {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               pse_pi0: pse-pi@0 {
+                                       reg = <0>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi1: pse-pi@1 {
+                                       reg = <1>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi2: pse-pi@2 {
+                                       reg = <2>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi3: pse-pi@3 {
+                                       reg = <3>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi4: pse-pi@4 {
+                                       reg = <4>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi5: pse-pi@5 {
+                                       reg = <5>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi6: pse-pi@6 {
+                                       reg = <6>;
+                                       #pse-cells = <0>;
+                               };
+                               pse_pi7: pse-pi@7 {
+                                       reg = <7>;
+                                       #pse-cells = <0>;
+                               };
+                       };
+               };
+       };
 };
 
 &mdio_ctrl {
        PHY_C45(53, 8)  /* AQR113C */
 };
 
+&phy0 { pses = <&pse_pi0>; };
+&phy8 { pses = <&pse_pi1>; };
+&phy16 { pses = <&pse_pi2>; };
+&phy24 { pses = <&pse_pi3>; };
+&phy32 { pses = <&pse_pi4>; };
+&phy40 { pses = <&pse_pi5>; };
+&phy48 { pses = <&pse_pi6>; };
+&phy50 { pses = <&pse_pi7>; };
+
 &switch0 {
        ethernet-ports {
                /* Copper ports behind AQR113C */
index 076d91a24a8448d098025bfa44c72578cb782017..a0abeecff0d93130f08a222f3e0acf81a99026fc 100644 (file)
@@ -102,5 +102,6 @@ TARGET_DEVICES += zyxel_xs1930-12f
 define Device/zyxel_xs1930-12hp
   DEVICE_MODEL := XS1930-12HP
   $(Device/zyxel_xs1930)
+  DEVICE_PACKAGES += kmod-pse-realtek-mcu-i2c
 endef
 TARGET_DEVICES += zyxel_xs1930-12hp