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