// SPDX-License-Identifier: GPL-2.0-or-later OR MIT #include / { #address-cells = <1>; #size-cells = <1>; compatible = "realtek,rtl838x-soc"; cpus { #address-cells = <1>; #size-cells = <0>; frequency = <1000000000>; cpu@0 { compatible = "mti,interaptive"; reg = <0>; }; cpu@1 { compatible = "mti,interaptive"; reg = <1>; }; }; memory@0 { device_type = "memory"; reg = <0x0 0x10000000>; }; aliases { serial0 = &uart0; serial1 = &uart1; }; chosen { bootargs = "earlycon"; stdout-path = "serial0:115200n8"; }; lx_clk: lx_clk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <200000000>; }; cpuclock: cpuclock@0 { #clock-cells = <0>; compatible = "fixed-clock"; /* FIXME: there should be way to detect this */ clock-frequency = <1000000000>; }; cpuintc: cpuintc { compatible = "mti,cpu-interrupt-controller"; #address-cells = <0>; #interrupt-cells = <1>; interrupt-controller; }; gic: interrupt-controller@1ddc0000 { compatible = "mti,gic"; reg = <0x1ddc0000 0x20000>; interrupt-controller; #interrupt-cells = <3>; /* * Declare the interrupt-parent even though the mti,gic * binding doesn't require it, such that the kernel can * figure out that cpu_intc is the root interrupt * controller & should be probed first. */ interrupt-parent = <&cpuintc>; timer { compatible = "mti,gic-timer"; interrupts = ; clocks = <&cpuclock>; }; }; soc: soc { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x18000000 0x10000>; spi0: spi@1200 { status = "okay"; compatible = "realtek,rtl8380-spi"; reg = <0x1200 0x100>; #address-cells = <1>; #size-cells = <0>; }; watchdog0: watchdog@3260 { compatible = "realtek,rtl9310-wdt"; reg = <0x3260 0xc>; realtek,reset-mode = "soc"; clocks = <&lx_clk>; timeout-sec = <30>; interrupt-parent = <&gic>; interrupt-names = "phase1", "phase2"; interrupts = , ; }; gpio0: gpio-controller@3300 { compatible = "realtek,rtl9310-gpio", "realtek,otto-gpio"; reg = <0x3300 0x1c>; gpio-controller; #gpio-cells = <2>; ngpios = <32>; interrupt-controller; #interrupt-cells = <3>; interrupt-parent = <&gic>; interrupts = ; }; uart0: uart@2000 { compatible = "ns16550a"; reg = <0x2000 0x100>; clock-frequency = <200000000>; interrupt-parent = <&gic>; #interrupt-cells = <3>; interrupts = ; reg-io-width = <1>; reg-shift = <2>; fifo-size = <1>; no-loopback-test; }; uart1: uart@2100 { compatible = "ns16550a"; reg = <0x2100 0x100>; clock-frequency = <200000000>; interrupt-parent = <&gic>; #interrupt-cells = <3>; interrupts = ; reg-io-width = <1>; reg-shift = <2>; fifo-size = <1>; no-loopback-test; status = "disabled"; }; }; pinmux: pinmux@1b001358 { compatible = "pinctrl-single"; reg = <0x1b001358 0x4>; pinctrl-single,bit-per-mux; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <0x1>; #pinctrl-cells = <2>; /* Enable GPIO6 and GPIO7, possibly unknown others */ pinmux_disable_jtag: disable_jtag { pinctrl-single,bits = <0x0 0x0 0x8000>; }; /* Controls GPIO0 */ pinmux_disable_sys_led: disable_sys_led { pinctrl-single,bits = <0x0 0x0 0x100>; }; }; ethernet0: ethernet@1b00a300 { status = "okay"; compatible = "realtek,rtl838x-eth"; reg = <0x1b00a300 0x100>; interrupt-parent = <&gic>; #interrupt-cells = <3>; interrupts = ; phy-mode = "internal"; fixed-link { speed = <1000>; full-duplex; }; }; switch0: switch@1b000000 { compatible = "realtek,rtl83xx-switch"; status = "okay"; interrupt-parent = <&gic>; #interrupt-cells = <3>; interrupts = ; }; };