1
1
openwrt/target/linux/realtek/dts/rtl930x.dtsi
Markus Stockhausen 82ddc472d7 realtek: dts: convert to upstream switch notation
There is currently a difference how upstream and downstream define
the switch in the dts. Downstream holds the switch as a member
node below a root switchcore parent. Upstream uses the switch as
the parent.

Upstream:

  ethernet-switch@1b000000 {
    mdio-controller@ca00 { };
    ethernet { };
    ethernet-ports { };
  }

Downstream:

  switchcore@1b000000 {
    ethernet-switch {
      ethernet-ports { };
    };
    mdio-controller@ca00 { };
    ethernet { };
  }

Align downstream to upstream and merge the ethernet-switch into
the parent node. For this to work adapt the port lookup in the MDIO
and PCS driver.

Remark! With this commit the boot process will give the spurious
error message "rtl838x_eth 1b000000.ethernet-switch:ethernet eth0:
Failed to create a device link to DSA switch 1b000000.ethernet-switch"
This comes from the fact that the switch is the parent of the ethernet
device. Thus a link back from ethernet device to the switch is no
longer possible. Testing shows that the error is just cosmetic.

Link: https://github.com/openwrt/openwrt/pull/23599
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-06-01 19:15:51 +02:00

408 lines
7.9 KiB
Plaintext

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "macros.dtsi"
/dts-v1/;
/ {
#address-cells = <1>;
#size-cells = <1>;
compatible = "realtek,rtl838x-soc";
cpus {
#address-cells = <1>;
#size-cells = <0>;
frequency = <800000000>;
cpu@0 {
compatible = "mips,mips34Kc";
reg = <0>;
};
};
memory@0 {
device_type = "memory";
reg = <0x0 0x8000000>;
};
aliases {
serial0 = &uart0;
serial1 = &uart1;
};
chosen {
bootargs = "earlycon";
stdout-path = "serial0:115200n8";
};
cpuintc: cpuintc {
compatible = "mti,cpu-interrupt-controller";
#address-cells = <0>;
#interrupt-cells = <1>;
interrupt-controller;
};
lx_clk: lx_clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <175000000>;
};
soc: soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x18000000 0x20000>;
ecc0: ecc@1a600 {
compatible = "realtek,rtl9301-ecc";
reg = <0x1a600 0x54>;
status = "disabled";
};
intc: interrupt-controller@3000 {
compatible = "realtek,rtl9300-intc", "realtek,rtl-intc";
reg = <0x3000 0x18>, <0x3018 0x18>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&cpuintc>;
interrupts = <2>, <3>, <4>, <5>, <6>, <7>;
};
snand: spi@1a400 {
compatible = "realtek,rtl9301-snand";
reg = <0x1a400 0x44>;
interrupt-parent = <&intc>;
interrupts = <19 2>;
clocks = <&lx_clk>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
spi0: spi@1200 {
compatible = "realtek,rtl8380-spi";
reg = <0x1200 0x100>;
#address-cells = <1>;
#size-cells = <0>;
};
timer0: timer@3200 {
compatible = "realtek,rtl930x-timer", "realtek,otto-timer";
reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
<0x3230 0x10>, <0x3240 0x10>;
interrupt-parent = <&intc>;
interrupts = <7 4>, <8 4>, <9 4>, <10 4>, <11 4>;
clocks = <&lx_clk>;
};
uart0: uart@2000 {
compatible = "ns16550a";
reg = <0x2000 0x100>;
clocks = <&lx_clk>;
interrupt-parent = <&intc>;
interrupts = <30 1>;
reg-io-width = <1>;
reg-shift = <2>;
fifo-size = <1>;
no-loopback-test;
};
uart1: uart@2100 {
compatible = "ns16550a";
reg = <0x2100 0x100>;
clocks = <&lx_clk>;
interrupt-parent = <&intc>;
interrupts = <31 0>;
reg-io-width = <1>;
reg-shift = <2>;
fifo-size = <1>;
no-loopback-test;
pinctrl-0 = <&pinmux_enable_uart1>;
pinctrl-names = "default";
status = "disabled";
};
watchdog0: watchdog@3260 {
compatible = "realtek,rtl9300-wdt";
reg = <0x3260 0xc>;
realtek,reset-mode = "soc";
clocks = <&lx_clk>;
timeout-sec = <30>;
interrupt-parent = <&intc>;
interrupt-names = "phase1", "phase2";
interrupts = <5 4>, <6 4>;
};
gpio0: gpio-controller@3300 {
compatible = "realtek,rtl9300-gpio", "realtek,otto-gpio";
reg = <0x3300 0x1c>, <0x3338 0x8>;
gpio-controller;
#gpio-cells = <2>;
ngpios = <24>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&intc>;
interrupts = <13 1>;
};
};
switch0: ethernet-switch@1b000000 {
compatible = "realtek,rtl9301-switch", "realtek,otto-switch", "syscon", "simple-mfd";
reg = <0x1b000000 0x10000>;
interrupt-parent = <&intc>;
interrupts = <23 2>;
#address-cells = <1>;
#size-cells = <1>;
ethernet0: ethernet {
compatible = "realtek,rtl9301-eth";
interrupt-parent = <&intc>;
interrupts = <24 3>;
#interrupt-cells = <1>;
phy-mode = "internal";
fixed-link {
speed = <1000>;
full-duplex;
};
};
i2c_mst1: i2c@36c {
compatible = "realtek,rtl9301-i2c";
reg = <0x36c 0x18>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
i2c_mst2: i2c@388 {
compatible = "realtek,rtl9301-i2c";
reg = <0x388 0x18>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
mdio_ctrl: mdio-controller {
compatible = "realtek,rtl9301-mdio", "realtek,otto-mdio";
#address-cells = <1>;
#size-cells = <0>;
mdio_bus0: mdio-bus@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
};
mdio_bus1: mdio-bus@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
};
mdio_bus2: mdio-bus@2 {
reg = <2>;
#address-cells = <1>;
#size-cells = <0>;
};
mdio_bus3: mdio-bus@3 {
reg = <3>;
#address-cells = <1>;
#size-cells = <0>;
};
};
mdio_aux: mdio-aux {
compatible = "realtek,rtl9300-aux-mdio";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&pinmux_gpio_mdio_en>;
pinctrl-names = "default";
status = "disabled";
};
mdio_serdes: mdio-serdes {
compatible = "realtek,rtl9301-serdes-mdio", "realtek,otto-serdes-mdio";
};
pcs {
compatible = "realtek,rtl9301-pcs", "realtek,otto-pcs";
#address-cells = <1>;
#size-cells = <0>;
serdes0: serdes@0 {
reg = <0>;
#pcs-cells = <1>;
};
serdes1: serdes@1 {
reg = <1>;
#pcs-cells = <1>;
};
serdes2: serdes@2 {
reg = <2>;
#pcs-cells = <1>;
};
serdes3: serdes@3 {
reg = <3>;
#pcs-cells = <1>;
};
serdes4: serdes@4 {
reg = <4>;
#pcs-cells = <1>;
};
serdes5: serdes@5 {
reg = <5>;
#pcs-cells = <1>;
};
serdes6: serdes@6 {
reg = <6>;
#pcs-cells = <1>;
};
serdes7: serdes@7 {
reg = <7>;
#pcs-cells = <1>;
};
serdes8: serdes@8 {
reg = <8>;
#pcs-cells = <1>;
};
serdes9: serdes@9 {
reg = <9>;
#pcs-cells = <1>;
};
serdes10: serdes@10 {
reg = <10>;
#pcs-cells = <1>;
};
serdes11: serdes@11 {
reg = <11>;
#pcs-cells = <1>;
};
};
soc_thermal: thermal {
compatible = "realtek,rtl9300-thermal";
#thermal-sensor-cells = <0>;
};
};
pinmux@1b000200 {
compatible = "pinctrl-single";
reg = <0x1b000200 0x4>;
pinctrl-single,bit-per-mux;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0x1>;
#pinctrl-cells = <2>;
/* Enable GPIO 19 */
pinmux_disable_led_sync: disable-led-sync {
pinctrl-single,bits = <0x0 0x0 0x800>;
};
pinmux_enable_led_sync: enable-led-sync {
pinctrl-single,bits = <0x0 0x800 0x800>;
};
/* Enable GPIO 18 */
pinmux_disable_usb_led: disable-usb-led {
pinctrl-single,bits = <0x0 0x0 0x400>;
};
pinmux_enable_usb_led: enable-usb-led {
pinctrl-single,bits = <0x0 0x400 0x400>;
};
/* Disable SLV SPI CS - freeing any associated GPIOs */
pinmux_disable_slv_spi_cs: disable-slv-spi-cs {
pinctrl-single,bits = <0x0 0x0 0x3E0>;
};
/* Disable SLV SPI SDO - freeing any associated GPIOs */
pinmux_disable_slv_spi_sdo: disable-slv-spi-sdo {
pinctrl-single,bits = <0x0 0x0 0x1F>;
};
};
pinmux@1b000204 {
compatible = "pinctrl-single";
reg = <0x1b000204 0x4>;
pinctrl-single,bit-per-mux;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0x1>;
#pinctrl-cells = <2>;
pinmux_enable_uart1: enable-uart1 {
pinctrl-single,bits = <0x0 0x1 0x3>;
};
};
pinmux@1b00c600 {
compatible = "pinctrl-single";
reg = <0x1b00c600 0x4>;
pinctrl-single,bit-per-mux;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0x1>;
#pinctrl-cells = <2>;
pinmux_gpio_mdio_en: gpio-mdio-en {
pinctrl-single,bits = <0x0 0x100 0x100>;
};
};
pinmux_led: pinmux@1b00cc00 {
compatible = "pinctrl-single";
reg = <0x1b00cc00 0x4>;
pinctrl-single,bit-per-mux;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0x1>;
#pinctrl-cells = <2>;
/* enable GPIO 0 */
pinmux_disable_sys_led: disable_sys_led {
pinctrl-single,bits = <0x0 0x0 0x1000>;
};
};
thermal_zones: thermal-zones {
cpu-thermal {
polling-delay-passive = <1000>;
polling-delay = <1000>;
coefficients = <1000 0>;
thermal-sensors = <&soc_thermal>;
trips {
critical {
temperature = <105000>;
hysteresis = <2000>;
type = "critical";
};
};
};
};
};