1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-or-later 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include <dt-bindings/clock/oxsemi,ox810se.h> 9*4882a593Smuzhiyun#include <dt-bindings/reset/oxsemi,ox810se.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun/ { 12*4882a593Smuzhiyun #address-cells = <1>; 13*4882a593Smuzhiyun #size-cells = <1>; 14*4882a593Smuzhiyun compatible = "oxsemi,ox810se"; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun cpus { 17*4882a593Smuzhiyun #address-cells = <0>; 18*4882a593Smuzhiyun #size-cells = <0>; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun cpu { 21*4882a593Smuzhiyun device_type = "cpu"; 22*4882a593Smuzhiyun compatible = "arm,arm926ej-s"; 23*4882a593Smuzhiyun clocks = <&armclk>; 24*4882a593Smuzhiyun }; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun memory { 28*4882a593Smuzhiyun device_type = "memory"; 29*4882a593Smuzhiyun /* Max 256MB @ 0x48000000 */ 30*4882a593Smuzhiyun reg = <0x48000000 0x10000000>; 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun clocks { 34*4882a593Smuzhiyun osc: oscillator { 35*4882a593Smuzhiyun compatible = "fixed-clock"; 36*4882a593Smuzhiyun #clock-cells = <0>; 37*4882a593Smuzhiyun clock-frequency = <25000000>; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun gmacclk: gmacclk { 41*4882a593Smuzhiyun compatible = "fixed-clock"; 42*4882a593Smuzhiyun #clock-cells = <0>; 43*4882a593Smuzhiyun clock-frequency = <125000000>; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun rpsclk: rpsclk { 47*4882a593Smuzhiyun compatible = "fixed-factor-clock"; 48*4882a593Smuzhiyun #clock-cells = <0>; 49*4882a593Smuzhiyun clock-div = <1>; 50*4882a593Smuzhiyun clock-mult = <1>; 51*4882a593Smuzhiyun clocks = <&osc>; 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun pll400: pll400 { 55*4882a593Smuzhiyun compatible = "fixed-clock"; 56*4882a593Smuzhiyun #clock-cells = <0>; 57*4882a593Smuzhiyun clock-frequency = <733333333>; 58*4882a593Smuzhiyun }; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun sysclk: sysclk { 61*4882a593Smuzhiyun compatible = "fixed-factor-clock"; 62*4882a593Smuzhiyun #clock-cells = <0>; 63*4882a593Smuzhiyun clock-div = <4>; 64*4882a593Smuzhiyun clock-mult = <1>; 65*4882a593Smuzhiyun clocks = <&pll400>; 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun armclk: armclk { 69*4882a593Smuzhiyun compatible = "fixed-factor-clock"; 70*4882a593Smuzhiyun #clock-cells = <0>; 71*4882a593Smuzhiyun clock-div = <2>; 72*4882a593Smuzhiyun clock-mult = <1>; 73*4882a593Smuzhiyun clocks = <&pll400>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun soc { 78*4882a593Smuzhiyun #address-cells = <1>; 79*4882a593Smuzhiyun #size-cells = <1>; 80*4882a593Smuzhiyun compatible = "simple-bus"; 81*4882a593Smuzhiyun ranges; 82*4882a593Smuzhiyun interrupt-parent = <&intc>; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun apb-bridge@44000000 { 85*4882a593Smuzhiyun #address-cells = <1>; 86*4882a593Smuzhiyun #size-cells = <1>; 87*4882a593Smuzhiyun compatible = "simple-bus"; 88*4882a593Smuzhiyun ranges = <0 0x44000000 0x1000000>; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun pinctrl: pinctrl { 91*4882a593Smuzhiyun compatible = "oxsemi,ox810se-pinctrl"; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /* Regmap for sys registers */ 94*4882a593Smuzhiyun oxsemi,sys-ctrl = <&sys>; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun pinctrl_uart0: uart0 { 97*4882a593Smuzhiyun uart0a { 98*4882a593Smuzhiyun pins = "gpio31"; 99*4882a593Smuzhiyun function = "fct3"; 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun uart0b { 102*4882a593Smuzhiyun pins = "gpio32"; 103*4882a593Smuzhiyun function = "fct3"; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun pinctrl_uart0_modem: uart0_modem { 108*4882a593Smuzhiyun uart0c { 109*4882a593Smuzhiyun pins = "gpio27"; 110*4882a593Smuzhiyun function = "fct3"; 111*4882a593Smuzhiyun }; 112*4882a593Smuzhiyun uart0d { 113*4882a593Smuzhiyun pins = "gpio28"; 114*4882a593Smuzhiyun function = "fct3"; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun uart0e { 117*4882a593Smuzhiyun pins = "gpio29"; 118*4882a593Smuzhiyun function = "fct3"; 119*4882a593Smuzhiyun }; 120*4882a593Smuzhiyun uart0f { 121*4882a593Smuzhiyun pins = "gpio30"; 122*4882a593Smuzhiyun function = "fct3"; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun uart0g { 125*4882a593Smuzhiyun pins = "gpio33"; 126*4882a593Smuzhiyun function = "fct3"; 127*4882a593Smuzhiyun }; 128*4882a593Smuzhiyun uart0h { 129*4882a593Smuzhiyun pins = "gpio34"; 130*4882a593Smuzhiyun function = "fct3"; 131*4882a593Smuzhiyun }; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun pinctrl_uart1: uart1 { 135*4882a593Smuzhiyun uart1a { 136*4882a593Smuzhiyun pins = "gpio20"; 137*4882a593Smuzhiyun function = "fct3"; 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun uart1b { 140*4882a593Smuzhiyun pins = "gpio22"; 141*4882a593Smuzhiyun function = "fct3"; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun }; 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun pinctrl_uart1_modem: uart1_modem { 146*4882a593Smuzhiyun uart1c { 147*4882a593Smuzhiyun pins = "gpio8"; 148*4882a593Smuzhiyun function = "fct3"; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun uart1d { 151*4882a593Smuzhiyun pins = "gpio9"; 152*4882a593Smuzhiyun function = "fct3"; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun uart1e { 155*4882a593Smuzhiyun pins = "gpio23"; 156*4882a593Smuzhiyun function = "fct3"; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun uart1f { 159*4882a593Smuzhiyun pins = "gpio24"; 160*4882a593Smuzhiyun function = "fct3"; 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun uart1g { 163*4882a593Smuzhiyun pins = "gpio25"; 164*4882a593Smuzhiyun function = "fct3"; 165*4882a593Smuzhiyun }; 166*4882a593Smuzhiyun uart1h { 167*4882a593Smuzhiyun pins = "gpio26"; 168*4882a593Smuzhiyun function = "fct3"; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun }; 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun pinctrl_uart2: uart2 { 173*4882a593Smuzhiyun uart2a { 174*4882a593Smuzhiyun pins = "gpio6"; 175*4882a593Smuzhiyun function = "fct3"; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun uart2b { 178*4882a593Smuzhiyun pins = "gpio7"; 179*4882a593Smuzhiyun function = "fct3"; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun }; 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun pinctrl_uart2_modem: uart2_modem { 184*4882a593Smuzhiyun uart2c { 185*4882a593Smuzhiyun pins = "gpio0"; 186*4882a593Smuzhiyun function = "fct3"; 187*4882a593Smuzhiyun }; 188*4882a593Smuzhiyun uart2d { 189*4882a593Smuzhiyun pins = "gpio1"; 190*4882a593Smuzhiyun function = "fct3"; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun uart2e { 193*4882a593Smuzhiyun pins = "gpio2"; 194*4882a593Smuzhiyun function = "fct3"; 195*4882a593Smuzhiyun }; 196*4882a593Smuzhiyun uart2f { 197*4882a593Smuzhiyun pins = "gpio3"; 198*4882a593Smuzhiyun function = "fct3"; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun uart2g { 201*4882a593Smuzhiyun pins = "gpio4"; 202*4882a593Smuzhiyun function = "fct3"; 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun uart2h { 205*4882a593Smuzhiyun pins = "gpio5"; 206*4882a593Smuzhiyun function = "fct3"; 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun }; 209*4882a593Smuzhiyun }; 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun gpio0: gpio@0 { 212*4882a593Smuzhiyun compatible = "oxsemi,ox810se-gpio"; 213*4882a593Smuzhiyun reg = <0x000000 0x100000>; 214*4882a593Smuzhiyun interrupts = <21>; 215*4882a593Smuzhiyun #gpio-cells = <2>; 216*4882a593Smuzhiyun gpio-controller; 217*4882a593Smuzhiyun interrupt-controller; 218*4882a593Smuzhiyun #interrupt-cells = <2>; 219*4882a593Smuzhiyun ngpios = <32>; 220*4882a593Smuzhiyun oxsemi,gpio-bank = <0>; 221*4882a593Smuzhiyun gpio-ranges = <&pinctrl 0 0 32>; 222*4882a593Smuzhiyun }; 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun gpio1: gpio@100000 { 225*4882a593Smuzhiyun compatible = "oxsemi,ox810se-gpio"; 226*4882a593Smuzhiyun reg = <0x100000 0x100000>; 227*4882a593Smuzhiyun interrupts = <22>; 228*4882a593Smuzhiyun #gpio-cells = <2>; 229*4882a593Smuzhiyun gpio-controller; 230*4882a593Smuzhiyun interrupt-controller; 231*4882a593Smuzhiyun #interrupt-cells = <2>; 232*4882a593Smuzhiyun ngpios = <3>; 233*4882a593Smuzhiyun oxsemi,gpio-bank = <1>; 234*4882a593Smuzhiyun gpio-ranges = <&pinctrl 0 32 3>; 235*4882a593Smuzhiyun }; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun uart0: serial@200000 { 238*4882a593Smuzhiyun compatible = "ns16550a"; 239*4882a593Smuzhiyun reg = <0x200000 0x100000>; 240*4882a593Smuzhiyun clocks = <&sysclk>; 241*4882a593Smuzhiyun interrupts = <23>; 242*4882a593Smuzhiyun reg-shift = <0>; 243*4882a593Smuzhiyun fifo-size = <16>; 244*4882a593Smuzhiyun reg-io-width = <1>; 245*4882a593Smuzhiyun current-speed = <115200>; 246*4882a593Smuzhiyun no-loopback-test; 247*4882a593Smuzhiyun status = "disabled"; 248*4882a593Smuzhiyun resets = <&reset RESET_UART1>; 249*4882a593Smuzhiyun }; 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun uart1: serial@300000 { 252*4882a593Smuzhiyun compatible = "ns16550a"; 253*4882a593Smuzhiyun reg = <0x300000 0x100000>; 254*4882a593Smuzhiyun clocks = <&sysclk>; 255*4882a593Smuzhiyun interrupts = <24>; 256*4882a593Smuzhiyun reg-shift = <0>; 257*4882a593Smuzhiyun fifo-size = <16>; 258*4882a593Smuzhiyun reg-io-width = <1>; 259*4882a593Smuzhiyun current-speed = <115200>; 260*4882a593Smuzhiyun no-loopback-test; 261*4882a593Smuzhiyun status = "disabled"; 262*4882a593Smuzhiyun resets = <&reset RESET_UART2>; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun uart2: serial@900000 { 266*4882a593Smuzhiyun compatible = "ns16550a"; 267*4882a593Smuzhiyun reg = <0x900000 0x100000>; 268*4882a593Smuzhiyun clocks = <&sysclk>; 269*4882a593Smuzhiyun interrupts = <29>; 270*4882a593Smuzhiyun reg-shift = <0>; 271*4882a593Smuzhiyun fifo-size = <16>; 272*4882a593Smuzhiyun reg-io-width = <1>; 273*4882a593Smuzhiyun current-speed = <115200>; 274*4882a593Smuzhiyun no-loopback-test; 275*4882a593Smuzhiyun status = "disabled"; 276*4882a593Smuzhiyun resets = <&reset RESET_UART3>; 277*4882a593Smuzhiyun }; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun uart3: serial@a00000 { 280*4882a593Smuzhiyun compatible = "ns16550a"; 281*4882a593Smuzhiyun reg = <0xa00000 0x100000>; 282*4882a593Smuzhiyun clocks = <&sysclk>; 283*4882a593Smuzhiyun interrupts = <30>; 284*4882a593Smuzhiyun reg-shift = <0>; 285*4882a593Smuzhiyun fifo-size = <16>; 286*4882a593Smuzhiyun reg-io-width = <1>; 287*4882a593Smuzhiyun current-speed = <115200>; 288*4882a593Smuzhiyun no-loopback-test; 289*4882a593Smuzhiyun status = "disabled"; 290*4882a593Smuzhiyun resets = <&reset RESET_UART4>; 291*4882a593Smuzhiyun }; 292*4882a593Smuzhiyun }; 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun apb-bridge@45000000 { 295*4882a593Smuzhiyun #address-cells = <1>; 296*4882a593Smuzhiyun #size-cells = <1>; 297*4882a593Smuzhiyun compatible = "simple-bus"; 298*4882a593Smuzhiyun ranges = <0 0x45000000 0x1000000>; 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun sys: sys-ctrl@0 { 301*4882a593Smuzhiyun compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd"; 302*4882a593Smuzhiyun reg = <0x000000 0x100000>; 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun reset: reset-controller { 305*4882a593Smuzhiyun compatible = "oxsemi,ox810se-reset"; 306*4882a593Smuzhiyun #reset-cells = <1>; 307*4882a593Smuzhiyun }; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun stdclk: stdclk { 310*4882a593Smuzhiyun compatible = "oxsemi,ox810se-stdclk"; 311*4882a593Smuzhiyun #clock-cells = <1>; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun }; 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun rps@300000 { 316*4882a593Smuzhiyun #address-cells = <1>; 317*4882a593Smuzhiyun #size-cells = <1>; 318*4882a593Smuzhiyun compatible = "simple-bus"; 319*4882a593Smuzhiyun ranges = <0 0x300000 0x100000>; 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun intc: interrupt-controller@0 { 322*4882a593Smuzhiyun compatible = "oxsemi,ox810se-rps-irq"; 323*4882a593Smuzhiyun interrupt-controller; 324*4882a593Smuzhiyun reg = <0 0x200>; 325*4882a593Smuzhiyun #interrupt-cells = <1>; 326*4882a593Smuzhiyun valid-mask = <0xffffffff>; 327*4882a593Smuzhiyun clear-mask = <0xffffffff>; 328*4882a593Smuzhiyun }; 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun timer0: timer@200 { 331*4882a593Smuzhiyun compatible = "oxsemi,ox810se-rps-timer"; 332*4882a593Smuzhiyun reg = <0x200 0x40>; 333*4882a593Smuzhiyun clocks = <&rpsclk>; 334*4882a593Smuzhiyun interrupts = <4 5>; 335*4882a593Smuzhiyun }; 336*4882a593Smuzhiyun }; 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun }; 339*4882a593Smuzhiyun}; 340