difos/target/linux/realtek/dts/rtl9303_tplink_tl-st1008f_v2.dts
Markus Stockhausen 761b5d3906 realtek: make use of serdes helper for TP-Link TL-ST1008F v2.0
Use the new INTERNAL_PHY_SDS() helper to describe the SFP ports. For
this device it is only a substitution of the existing DTS configuration.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/18851
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-22 16:37:33 +02:00

399 lines
7.4 KiB
Text

// SPDX-License-Identifier: GPL-2.0-or-later
#include "rtl930x.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
/ {
compatible = "tplink,tl-st1008f,v2", "realtek,rtl930x-soc";
model = "TP-Link TL-ST1008F v2.0";
memory@0 {
device_type = "memory";
reg = <0x00000000 0x10000000>, /* first 256 MiB */
<0x20000000 0x10000000>; /* remaining 256 MiB */
};
chosen {
stdout-path = "serial0:115200n8";
};
keys {
compatible = "gpio-keys";
m1 {
label = "M1";
gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
debounce-interval = <50>;
linux,code = <BTN_0>;
linux,input-type = <EV_SW>;
};
m2 {
label = "M2";
gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
debounce-interval = <50>;
linux,code = <BTN_1>;
linux,input-type = <EV_SW>;
};
m3 {
label = "M3";
gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
debounce-interval = <50>;
linux,code = <BTN_2>;
linux,input-type = <EV_SW>;
};
};
led_set {
compatible = "realtek,rtl9300-leds";
active-high;
led_set0 = <0x0ba0 0x0a08 0x0a01>;
};
i2c_gpio {
compatible = "i2c-gpio";
#address-cells = <1>;
#size-cells = <0>;
i2c-gpio,delay-us = <2>;
scl-gpios = <&gpio0 22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
sda-gpios = <&gpio0 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
gpioexp0: i2c@38 {
reg = <0x38>;
compatible = "nxp,pca9534";
gpio-controller;
#gpio-cells = <2>;
};
};
i2c_main: i2c@1b00036c {
compatible = "realtek,rtl9300-i2c";
reg = <0x1b00036c 0x3c>;
#address-cells = <1>;
#size-cells = <0>;
scl-pin = <8>;
sda-pin = <9>;
clock-frequency = <100000>;
};
i2c-mux {
compatible = "realtek,i2c-mux-rtl9300";
i2c-parent = <&i2c_main>;
#address-cells = <1>;
#size-cells = <0>;
i2c0: i2c@0 {
reg = <0>;
scl-pin = <8>;
sda-pin = <9>;
};
i2c1: i2c@1 {
reg = <1>;
scl-pin = <8>;
sda-pin = <10>;
};
i2c2: i2c@2 {
reg = <2>;
scl-pin = <8>;
sda-pin = <11>;
};
i2c3: i2c@3 {
reg = <3>;
scl-pin = <8>;
sda-pin = <12>;
};
i2c4: i2c@4 {
reg = <4>;
scl-pin = <8>;
sda-pin = <13>;
};
i2c5: i2c@5 {
reg = <5>;
scl-pin = <8>;
sda-pin = <14>;
};
i2c6: i2c@6 {
reg = <6>;
scl-pin = <8>;
sda-pin = <15>;
};
i2c7: i2c@7 {
reg = <7>;
scl-pin = <8>;
sda-pin = <16>;
};
};
sfp0: sfp-p1 {
compatible = "sff,sfp";
i2c-bus = <&i2c0>;
mod-def0-gpio = <&gpio0 0 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 0 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <2900>;
#thermal-sensor-cells = <0>;
};
sfp1: sfp-p2 {
compatible = "sff,sfp";
i2c-bus = <&i2c1>;
mod-def0-gpio = <&gpio0 1 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 1 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <1500>;
#thermal-sensor-cells = <0>;
};
sfp2: sfp-p3 {
compatible = "sff,sfp";
i2c-bus = <&i2c2>;
mod-def0-gpio = <&gpio0 2 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 2 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <1500>;
#thermal-sensor-cells = <0>;
};
sfp3: sfp-p4 {
compatible = "sff,sfp";
i2c-bus = <&i2c3>;
mod-def0-gpio = <&gpio0 3 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 3 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <2000>;
#thermal-sensor-cells = <0>;
};
sfp4: sfp-p5 {
compatible = "sff,sfp";
i2c-bus = <&i2c4>;
mod-def0-gpio = <&gpio0 4 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 4 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <2000>;
#thermal-sensor-cells = <0>;
};
sfp5: sfp-p6 {
compatible = "sff,sfp";
i2c-bus = <&i2c5>;
mod-def0-gpio = <&gpio0 5 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 5 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <1500>;
#thermal-sensor-cells = <0>;
};
sfp6: sfp-p7 {
compatible = "sff,sfp";
i2c-bus = <&i2c6>;
mod-def0-gpio = <&gpio0 6 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 6 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <1500>;
#thermal-sensor-cells = <0>;
};
sfp7: sfp-p8 {
compatible = "sff,sfp";
i2c-bus = <&i2c7>;
mod-def0-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpioexp0 7 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <2900>;
#thermal-sensor-cells = <0>;
};
watchdog {
compatible = "linux,wdt-gpio";
gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
hw_algo = "toggle";
hw_margin_ms = <1200>;
always-running;
};
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <100000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0xe0000>;
read-only;
};
partition@e0000 {
label = "u-boot-env";
reg = <0xe0000 0x10000>;
};
partition@f0000 {
label = "u-boot-env2";
reg = <0xf0000 0x10000>;
read-only;
};
partition@100000 {
label = "jffs2-cfg";
reg = <0x100000 0x100000>;
};
partition@200000 {
label = "jffs2-log";
reg = <0x200000 0x100000>;
};
partition@300000 {
compatible = "openwrt,uimage", "denx,uimage";
reg = <0x300000 0x1d00000>;
label = "firmware";
openwrt,ih-magic = <0x93030000>;
};
};
};
};
&ethernet0 {
mdio: mdio-bus {
compatible = "realtek,rtl838x-mdio";
regmap = <&ethernet0>;
#address-cells = <1>;
#size-cells = <0>;
INTERNAL_PHY_SDS(0, 2)
INTERNAL_PHY_SDS(8, 3)
INTERNAL_PHY_SDS(16, 4)
INTERNAL_PHY_SDS(20, 5)
INTERNAL_PHY_SDS(24, 6)
INTERNAL_PHY_SDS(25, 7)
INTERNAL_PHY_SDS(26, 8)
INTERNAL_PHY_SDS(27, 9)
};
};
&switch0 {
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = "lan1";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy0>;
sfp = <&sfp0>;
managed = "in-band-status";
led-set = <0>;
};
port@8 {
reg = <8>;
label = "lan2";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy8>;
sfp = <&sfp1>;
managed = "in-band-status";
led-set = <0>;
};
port@10 {
reg = <16>;
label = "lan3";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy16>;
sfp = <&sfp2>;
managed = "in-band-status";
led-set = <0>;
};
port@14 {
reg = <20>;
label = "lan4";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy20>;
sfp = <&sfp3>;
managed = "in-band-status";
led-set = <0>;
};
port@18 {
reg = <24>;
label = "lan5";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy24>;
sfp = <&sfp4>;
managed = "in-band-status";
led-set = <0>;
};
port@19 {
reg = <25>;
label = "lan6";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy25>;
sfp = <&sfp5>;
managed = "in-band-status";
led-set = <0>;
};
port@1a {
reg = <26>;
label = "lan7";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy26>;
sfp = <&sfp6>;
managed = "in-band-status";
led-set = <0>;
};
port@1b {
reg = <27>;
label = "lan8";
phy-mode = "10gbase-r";
pseudo-phy-handle = <&phy27>;
sfp = <&sfp7>;
managed = "in-band-status";
led-set = <0>;
};
port@1c {
ethernet = <&ethernet0>;
reg = <28>;
phy-mode = "internal";
fixed-link {
speed = <10000>;
full-duplex;
};
};
};
};
&thermal_zones {
sfp-thermal {
polling-delay-passive = <10000>;
polling-delay = <10000>;
thermal-sensors = <&sfp0>, <&sfp1>, <&sfp2>, <&sfp3>, <&sfp4>, <&sfp5>, <&sfp6>, <&sfp7>;
trips {
sfp-crit {
temperature = <110000>;
hysteresis = <1000>;
type = "critical";
};
};
};
};