0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003 * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC
0004 *
0005 * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
0006 */
0007
0008 #include <dt-bindings/clock/oxsemi,ox810se.h>
0009 #include <dt-bindings/reset/oxsemi,ox810se.h>
0010
0011 / {
0012 #address-cells = <1>;
0013 #size-cells = <1>;
0014 compatible = "oxsemi,ox810se";
0015
0016 cpus {
0017 #address-cells = <0>;
0018 #size-cells = <0>;
0019
0020 cpu {
0021 device_type = "cpu";
0022 compatible = "arm,arm926ej-s";
0023 clocks = <&armclk>;
0024 };
0025 };
0026
0027 memory {
0028 device_type = "memory";
0029 /* Max 256MB @ 0x48000000 */
0030 reg = <0x48000000 0x10000000>;
0031 };
0032
0033 clocks {
0034 osc: oscillator {
0035 compatible = "fixed-clock";
0036 #clock-cells = <0>;
0037 clock-frequency = <25000000>;
0038 };
0039
0040 gmacclk: gmacclk {
0041 compatible = "fixed-clock";
0042 #clock-cells = <0>;
0043 clock-frequency = <125000000>;
0044 };
0045
0046 rpsclk: rpsclk {
0047 compatible = "fixed-factor-clock";
0048 #clock-cells = <0>;
0049 clock-div = <1>;
0050 clock-mult = <1>;
0051 clocks = <&osc>;
0052 };
0053
0054 pll400: pll400 {
0055 compatible = "fixed-clock";
0056 #clock-cells = <0>;
0057 clock-frequency = <733333333>;
0058 };
0059
0060 sysclk: sysclk {
0061 compatible = "fixed-factor-clock";
0062 #clock-cells = <0>;
0063 clock-div = <4>;
0064 clock-mult = <1>;
0065 clocks = <&pll400>;
0066 };
0067
0068 armclk: armclk {
0069 compatible = "fixed-factor-clock";
0070 #clock-cells = <0>;
0071 clock-div = <2>;
0072 clock-mult = <1>;
0073 clocks = <&pll400>;
0074 };
0075 };
0076
0077 soc {
0078 #address-cells = <1>;
0079 #size-cells = <1>;
0080 compatible = "simple-bus";
0081 ranges;
0082 interrupt-parent = <&intc>;
0083
0084 etha: ethernet@40400000 {
0085 compatible = "oxsemi,ox810se-dwmac", "snps,dwmac";
0086 reg = <0x40400000 0x2000>;
0087 interrupts = <8>;
0088 interrupt-names = "macirq";
0089 mac-address = [000000000000]; /* Filled in by U-Boot */
0090 phy-mode = "rgmii";
0091
0092 clocks = <&stdclk 6>, <&gmacclk>;
0093 clock-names = "gmac", "stmmaceth";
0094 resets = <&reset 6>;
0095
0096 /* Regmap for sys registers */
0097 oxsemi,sys-ctrl = <&sys>;
0098
0099 status = "disabled";
0100 };
0101
0102 apb-bridge@44000000 {
0103 #address-cells = <1>;
0104 #size-cells = <1>;
0105 compatible = "simple-bus";
0106 ranges = <0 0x44000000 0x1000000>;
0107
0108 pinctrl: pinctrl {
0109 compatible = "oxsemi,ox810se-pinctrl";
0110
0111 /* Regmap for sys registers */
0112 oxsemi,sys-ctrl = <&sys>;
0113
0114 pinctrl_uart0: uart0 {
0115 uart0a {
0116 pins = "gpio31";
0117 function = "fct3";
0118 };
0119 uart0b {
0120 pins = "gpio32";
0121 function = "fct3";
0122 };
0123 };
0124
0125 pinctrl_uart0_modem: uart0_modem {
0126 uart0c {
0127 pins = "gpio27";
0128 function = "fct3";
0129 };
0130 uart0d {
0131 pins = "gpio28";
0132 function = "fct3";
0133 };
0134 uart0e {
0135 pins = "gpio29";
0136 function = "fct3";
0137 };
0138 uart0f {
0139 pins = "gpio30";
0140 function = "fct3";
0141 };
0142 uart0g {
0143 pins = "gpio33";
0144 function = "fct3";
0145 };
0146 uart0h {
0147 pins = "gpio34";
0148 function = "fct3";
0149 };
0150 };
0151
0152 pinctrl_uart1: uart1 {
0153 uart1a {
0154 pins = "gpio20";
0155 function = "fct3";
0156 };
0157 uart1b {
0158 pins = "gpio22";
0159 function = "fct3";
0160 };
0161 };
0162
0163 pinctrl_uart1_modem: uart1_modem {
0164 uart1c {
0165 pins = "gpio8";
0166 function = "fct3";
0167 };
0168 uart1d {
0169 pins = "gpio9";
0170 function = "fct3";
0171 };
0172 uart1e {
0173 pins = "gpio23";
0174 function = "fct3";
0175 };
0176 uart1f {
0177 pins = "gpio24";
0178 function = "fct3";
0179 };
0180 uart1g {
0181 pins = "gpio25";
0182 function = "fct3";
0183 };
0184 uart1h {
0185 pins = "gpio26";
0186 function = "fct3";
0187 };
0188 };
0189
0190 pinctrl_uart2: uart2 {
0191 uart2a {
0192 pins = "gpio6";
0193 function = "fct3";
0194 };
0195 uart2b {
0196 pins = "gpio7";
0197 function = "fct3";
0198 };
0199 };
0200
0201 pinctrl_uart2_modem: uart2_modem {
0202 uart2c {
0203 pins = "gpio0";
0204 function = "fct3";
0205 };
0206 uart2d {
0207 pins = "gpio1";
0208 function = "fct3";
0209 };
0210 uart2e {
0211 pins = "gpio2";
0212 function = "fct3";
0213 };
0214 uart2f {
0215 pins = "gpio3";
0216 function = "fct3";
0217 };
0218 uart2g {
0219 pins = "gpio4";
0220 function = "fct3";
0221 };
0222 uart2h {
0223 pins = "gpio5";
0224 function = "fct3";
0225 };
0226 };
0227 };
0228
0229 gpio0: gpio@0 {
0230 compatible = "oxsemi,ox810se-gpio";
0231 reg = <0x000000 0x100000>;
0232 interrupts = <21>;
0233 #gpio-cells = <2>;
0234 gpio-controller;
0235 interrupt-controller;
0236 #interrupt-cells = <2>;
0237 ngpios = <32>;
0238 oxsemi,gpio-bank = <0>;
0239 gpio-ranges = <&pinctrl 0 0 32>;
0240 };
0241
0242 gpio1: gpio@100000 {
0243 compatible = "oxsemi,ox810se-gpio";
0244 reg = <0x100000 0x100000>;
0245 interrupts = <22>;
0246 #gpio-cells = <2>;
0247 gpio-controller;
0248 interrupt-controller;
0249 #interrupt-cells = <2>;
0250 ngpios = <3>;
0251 oxsemi,gpio-bank = <1>;
0252 gpio-ranges = <&pinctrl 0 32 3>;
0253 };
0254
0255 uart0: serial@200000 {
0256 compatible = "ns16550a";
0257 reg = <0x200000 0x100000>;
0258 clocks = <&sysclk>;
0259 interrupts = <23>;
0260 reg-shift = <0>;
0261 fifo-size = <16>;
0262 reg-io-width = <1>;
0263 current-speed = <115200>;
0264 no-loopback-test;
0265 status = "disabled";
0266 resets = <&reset RESET_UART1>;
0267 };
0268
0269 uart1: serial@300000 {
0270 compatible = "ns16550a";
0271 reg = <0x300000 0x100000>;
0272 clocks = <&sysclk>;
0273 interrupts = <24>;
0274 reg-shift = <0>;
0275 fifo-size = <16>;
0276 reg-io-width = <1>;
0277 current-speed = <115200>;
0278 no-loopback-test;
0279 status = "disabled";
0280 resets = <&reset RESET_UART2>;
0281 };
0282
0283 uart2: serial@900000 {
0284 compatible = "ns16550a";
0285 reg = <0x900000 0x100000>;
0286 clocks = <&sysclk>;
0287 interrupts = <29>;
0288 reg-shift = <0>;
0289 fifo-size = <16>;
0290 reg-io-width = <1>;
0291 current-speed = <115200>;
0292 no-loopback-test;
0293 status = "disabled";
0294 resets = <&reset RESET_UART3>;
0295 };
0296
0297 uart3: serial@a00000 {
0298 compatible = "ns16550a";
0299 reg = <0xa00000 0x100000>;
0300 clocks = <&sysclk>;
0301 interrupts = <30>;
0302 reg-shift = <0>;
0303 fifo-size = <16>;
0304 reg-io-width = <1>;
0305 current-speed = <115200>;
0306 no-loopback-test;
0307 status = "disabled";
0308 resets = <&reset RESET_UART4>;
0309 };
0310 };
0311
0312 apb-bridge@45000000 {
0313 #address-cells = <1>;
0314 #size-cells = <1>;
0315 compatible = "simple-bus";
0316 ranges = <0 0x45000000 0x1000000>;
0317
0318 sys: sys-ctrl@0 {
0319 compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd";
0320 reg = <0x000000 0x100000>;
0321
0322 reset: reset-controller {
0323 compatible = "oxsemi,ox810se-reset";
0324 #reset-cells = <1>;
0325 };
0326
0327 stdclk: stdclk {
0328 compatible = "oxsemi,ox810se-stdclk";
0329 #clock-cells = <1>;
0330 };
0331 };
0332
0333 rps@300000 {
0334 #address-cells = <1>;
0335 #size-cells = <1>;
0336 compatible = "simple-bus";
0337 ranges = <0 0x300000 0x100000>;
0338
0339 intc: interrupt-controller@0 {
0340 compatible = "oxsemi,ox810se-rps-irq";
0341 interrupt-controller;
0342 reg = <0 0x200>;
0343 #interrupt-cells = <1>;
0344 valid-mask = <0xffffffff>;
0345 clear-mask = <0xffffffff>;
0346 };
0347
0348 timer0: timer@200 {
0349 compatible = "oxsemi,ox810se-rps-timer";
0350 reg = <0x200 0x40>;
0351 clocks = <&rpsclk>;
0352 interrupts = <4 5>;
0353 };
0354 };
0355 };
0356 };
0357 };