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