From: Carlo Szelinsky Date: Sat, 18 Jul 2026 14:52:34 +0000 (+0200) Subject: realtek: rtl9313: enable PSE on Hasivo S1300WP-8XGT-4S+ X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f728b4af3592ef7beed24499abadfae024ea9879;p=thirdparty%2Fopenwrt.git realtek: rtl9313: enable PSE on Hasivo S1300WP-8XGT-4S+ Wire the two HS104 controllers (0x0d/0x15) on the i2c_sys bus and attach the 8 PoE PHYs via PHY_C45_PSE. Add the STC8 LED MCU (0x4d) with per-port PoE LED triggers, enable LEDS_SYSCON, and pull the PSE and STC8 kmods into the image. Signed-off-by: Carlo Szelinsky Link: https://github.com/openwrt/openwrt/pull/22245 Signed-off-by: Jonas Jelonek --- diff --git a/target/linux/realtek/dts/rtl9313_hasivo_s1300wp-8xgt-4s-plus.dts b/target/linux/realtek/dts/rtl9313_hasivo_s1300wp-8xgt-4s-plus.dts index 8f6cdf4627c..9621fde91cb 100644 --- a/target/linux/realtek/dts/rtl9313_hasivo_s1300wp-8xgt-4s-plus.dts +++ b/target/linux/realtek/dts/rtl9313_hasivo_s1300wp-8xgt-4s-plus.dts @@ -23,6 +23,7 @@ led-failsafe = &led_sys; led-running = &led_sys; led-upgrade = &led_sys; + i2c0 = &i2c_sys; }; chosen { @@ -96,6 +97,162 @@ compatible = "hasivo,mcu-sensor"; }; }; + + pse0: ethernet-pse@d { + compatible = "hasivo,hs104"; + reg = <0x0d>; + poll-interval-ms = <500>; + status = "okay"; + + pse-pis { + #address-cells = <1>; + #size-cells = <0>; + + pse0_pi0: pse-pi@0 { + reg = <0>; + #pse-cells = <0>; + }; + pse0_pi1: pse-pi@1 { + reg = <1>; + #pse-cells = <0>; + }; + pse0_pi2: pse-pi@2 { + reg = <2>; + #pse-cells = <0>; + }; + pse0_pi3: pse-pi@3 { + reg = <3>; + #pse-cells = <0>; + }; + }; + }; + + pse1: ethernet-pse@15 { + compatible = "hasivo,hs104"; + reg = <0x15>; + poll-interval-ms = <500>; + status = "okay"; + + pse-pis { + #address-cells = <1>; + #size-cells = <0>; + + pse1_pi0: pse-pi@0 { + reg = <0>; + #pse-cells = <0>; + }; + pse1_pi1: pse-pi@1 { + reg = <1>; + #pse-cells = <0>; + }; + pse1_pi2: pse-pi@2 { + reg = <2>; + #pse-cells = <0>; + }; + pse1_pi3: pse-pi@3 { + reg = <3>; + #pse-cells = <0>; + }; + }; + }; + + stc8: stc8@4d { + compatible = "hasivo,stc8-mfd", "syscon"; + reg = <0x4d>; + #address-cells = <2>; + #size-cells = <0>; + hasivo,execute-bit = <0x40>; + hasivo,execute-bit-registers = <0x01 0x02>; + status = "okay"; + + led_lan1_poe: led@1,0 { + compatible = "register-bit-led"; + reg = <0x01 0x00>; + mask = <0x08>; + color = ; + function = "poe"; + function-enumerator = <1>; + linux,default-trigger = "pse-0-000d:port0:delivering"; + default-state = "off"; + }; + + led_lan2_poe: led@1,1 { + compatible = "register-bit-led"; + reg = <0x01 0x01>; + mask = <0x04>; + color = ; + function = "poe"; + function-enumerator = <2>; + linux,default-trigger = "pse-0-000d:port1:delivering"; + default-state = "off"; + }; + + led_lan3_poe: led@1,2 { + compatible = "register-bit-led"; + reg = <0x01 0x02>; + mask = <0x02>; + color = ; + function = "poe"; + function-enumerator = <3>; + linux,default-trigger = "pse-0-000d:port2:delivering"; + default-state = "off"; + }; + + led_lan4_poe: led@1,3 { + compatible = "register-bit-led"; + reg = <0x01 0x03>; + mask = <0x01>; + color = ; + function = "poe"; + function-enumerator = <4>; + linux,default-trigger = "pse-0-000d:port3:delivering"; + default-state = "off"; + }; + + led_lan5_poe: led@2,0 { + compatible = "register-bit-led"; + reg = <0x02 0x00>; + mask = <0x08>; + color = ; + function = "poe"; + function-enumerator = <5>; + linux,default-trigger = "pse-0-0015:port0:delivering"; + default-state = "off"; + }; + + led_lan6_poe: led@2,1 { + compatible = "register-bit-led"; + reg = <0x02 0x01>; + mask = <0x04>; + color = ; + function = "poe"; + function-enumerator = <6>; + linux,default-trigger = "pse-0-0015:port1:delivering"; + default-state = "off"; + }; + + led_lan7_poe: led@2,2 { + compatible = "register-bit-led"; + reg = <0x02 0x02>; + mask = <0x02>; + color = ; + function = "poe"; + function-enumerator = <7>; + linux,default-trigger = "pse-0-0015:port2:delivering"; + default-state = "off"; + }; + + led_lan8_poe: led@2,3 { + compatible = "register-bit-led"; + reg = <0x02 0x03>; + mask = <0x01>; + color = ; + function = "poe"; + function-enumerator = <8>; + linux,default-trigger = "pse-0-0015:port3:delivering"; + default-state = "off"; + }; + }; }; leds { @@ -196,10 +353,10 @@ #size-cells = <0>; reg = <0>; - PHY_C45(0, 0) - PHY_C45(8, 1) - PHY_C45(16, 2) - PHY_C45(24, 3) + PHY_C45_PSE(0, 0, pse0_pi0) + PHY_C45_PSE(8, 1, pse0_pi1) + PHY_C45_PSE(16, 2, pse0_pi2) + PHY_C45_PSE(24, 3, pse0_pi3) }; }; @@ -210,10 +367,10 @@ #size-cells = <0>; reg = <4>; - PHY_C45(32, 4) - PHY_C45(40, 5) - PHY_C45(48, 6) - PHY_C45(50, 7) + PHY_C45_PSE(32, 4, pse1_pi0) + PHY_C45_PSE(40, 5, pse1_pi1) + PHY_C45_PSE(48, 6, pse1_pi2) + PHY_C45_PSE(50, 7, pse1_pi3) }; }; diff --git a/target/linux/realtek/image/rtl931x.mk b/target/linux/realtek/image/rtl931x.mk index c3a49385324..083144c3a86 100644 --- a/target/linux/realtek/image/rtl931x.mk +++ b/target/linux/realtek/image/rtl931x.mk @@ -18,7 +18,8 @@ define Device/hasivo_s1300wp-8xgt-4s-plus DEVICE_MODEL := S1300WP-8XGT-4S+ IMAGE_SIZE := 29696k DEVICE_PACKAGES := kmod-phy-realtek kmod-rtc-pcf8563 rtl826x-firmware \ - kmod-hasivo-mcu-wdt kmod-hasivo-mcu-sensor + kmod-hasivo-mcu-wdt kmod-hasivo-mcu-sensor kmod-pse-hasivo-hs104 \ + kmod-mfd-hasivo-stc8 $(Device/kernel-lzma) endef TARGET_DEVICES += hasivo_s1300wp-8xgt-4s-plus diff --git a/target/linux/realtek/rtl931x/config-6.18 b/target/linux/realtek/rtl931x/config-6.18 index 835bce93927..2d4a29badff 100644 --- a/target/linux/realtek/rtl931x/config-6.18 +++ b/target/linux/realtek/rtl931x/config-6.18 @@ -115,6 +115,7 @@ CONFIG_JFFS2_ZLIB=y CONFIG_KMAP_LOCAL=y CONFIG_LEDS_GPIO=y # CONFIG_LEDS_RTL8231 is not set +CONFIG_LEDS_SYSCON=y CONFIG_LIBFDT=y CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_MACH_REALTEK_RTL=y