diff --git a/target/linux/realtek/dts/rtl9303_hasivo_s600wp-5gt-2sx-se.dts b/target/linux/realtek/dts/rtl9303_hasivo_s600wp-5gt-2sx-se.dts index 2aedd7ec85..41a894d57c 100644 --- a/target/linux/realtek/dts/rtl9303_hasivo_s600wp-5gt-2sx-se.dts +++ b/target/linux/realtek/dts/rtl9303_hasivo_s600wp-5gt-2sx-se.dts @@ -22,6 +22,9 @@ led-running = &led_sys; led-upgrade = &led_sys; label-mac-device = ðernet0; + i2c0 = &i2c_scl23_sda22; + i2c1 = &i2c_sfp0; + i2c2 = &i2c_sfp1; }; chosen { @@ -81,11 +84,7 @@ (RTL93XX_LED_SET_NONE)>; }; - /* - * TODO: I2C bus to the on-board HS104 PSE controller (PoE). - * Defined here for documentation/future use; currently unused - * because PSE/PoE support for this board is not yet wired up. - */ + /* I2C bus to the on-board HS104 PSE controller (PoE) and STC8 LED MCU. */ i2c_scl23_sda22: i2c-scl23-sda22 { compatible = "i2c-gpio"; #address-cells = <1>; @@ -93,6 +92,90 @@ scl-gpios = <&gpio0 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio0 22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + clock-frequency = <100000>; + + 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>; + }; + }; + }; + + 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"; + }; + }; }; i2c_sfp0: i2c-sfp0 { @@ -226,10 +309,10 @@ &mdio_bus0 { /* External RTL8221B PHYs */ - PHY_C45(0, 1) - PHY_C45(8, 2) - PHY_C45(16, 3) - PHY_C45(20, 4) + PHY_C45_PSE(0, 1, pse0_pi0) + PHY_C45_PSE(8, 2, pse0_pi1) + PHY_C45_PSE(16, 3, pse0_pi2) + PHY_C45_PSE(20, 4, pse0_pi3) }; &mdio_bus1 { diff --git a/target/linux/realtek/image/rtl930x.mk b/target/linux/realtek/image/rtl930x.mk index a5313eaeac..5d06c58706 100644 --- a/target/linux/realtek/image/rtl930x.mk +++ b/target/linux/realtek/image/rtl930x.mk @@ -76,6 +76,7 @@ define Device/hasivo_s600wp-5gt-2sx-se SOC := rtl9303 DEVICE_VENDOR := Hasivo DEVICE_MODEL := S600WP-5GT-2SX-SE + DEVICE_PACKAGES := kmod-pse-hasivo-hs104 kmod-mfd-hasivo-stc8 IMAGE_SIZE := 12288k $(Device/kernel-lzma) endef