Until now only the RTL930x devices make use of the following notation. phy8: ethernet-phy@8 { compatible = "ethernet-phy-ieee802.3-c22"; phy-is-integrated; reg = <8>; sds = <3>; }; This indicates that the link is driven by a serdes directly without external phy. As the devices have multiple serdes it must be clarified what serdes is responsible for that port. Nevertheless all other devices have the same requirements. E.g. RTL838x usually drives port 24 from serdes 4 and port 26 from serdes 5. All this currently works because the driver has a lot of hardcoded port/serdes mapping. Make the situation better by adding dts helpers that can describe the topology as needed. 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>
241 lines
4.5 KiB
Text
241 lines
4.5 KiB
Text
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
|
|
|
/dts-v1/;
|
|
|
|
#define INTERNAL_PHY_SDS(n, s) \
|
|
phy##n: ethernet-phy@##n { \
|
|
reg = <##n>; \
|
|
compatible = "ethernet-phy-ieee802.3-c22"; \
|
|
phy-is-integrated; \
|
|
sds = <##s>; \
|
|
};
|
|
|
|
/ {
|
|
#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 0x10000>;
|
|
|
|
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>;
|
|
};
|
|
|
|
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;
|
|
|
|
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>;
|
|
};
|
|
|
|
};
|
|
|
|
switchcore@1b000000 {
|
|
compatible = "syscon", "simple-mfd";
|
|
reg = <0x1b000000 0x10000>;
|
|
|
|
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";
|
|
};
|
|
|
|
soc_thermal: thermal {
|
|
compatible = "realtek,rtl9300-thermal";
|
|
#thermal-sensor-cells = <0>;
|
|
};
|
|
};
|
|
|
|
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>;
|
|
};
|
|
};
|
|
|
|
ethernet0: ethernet@1b00a300 {
|
|
compatible = "realtek,rtl838x-eth";
|
|
reg = <0x1b00a300 0x100>;
|
|
|
|
interrupt-parent = <&intc>;
|
|
interrupts = <24 3>;
|
|
|
|
phy-mode = "internal";
|
|
|
|
fixed-link {
|
|
speed = <1000>;
|
|
full-duplex;
|
|
};
|
|
};
|
|
|
|
switch0: switch@1b000000 {
|
|
compatible = "realtek,rtl83xx-switch";
|
|
status = "okay";
|
|
|
|
interrupt-parent = <&intc>;
|
|
interrupts = <23 2>;
|
|
};
|
|
|
|
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";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|