blob: 7edc5e58a5a5091a1b2667d50e19b3b5cfe8ca0b [file] [log] [blame]
Linus Walleij978577e2013-04-08 11:38:50 +02001/*
2 * Device Tree for the ST-Ericsson U300 Machine and SoC
3 */
4
5/dts-v1/;
6/include/ "skeleton.dtsi"
7
8/ {
9 model = "ST-Ericsson U300";
10 compatible = "stericsson,u300";
11 #address-cells = <1>;
12 #size-cells = <1>;
13
14 chosen {
15 bootargs = "root=/dev/ram0 console=ttyAMA0,115200n8 earlyprintk";
16 };
17
18 aliases {
19 serial0 = &uart0;
20 serial1 = &uart1;
21 };
22
23 memory {
24 reg = <0x48000000 0x03c00000>;
25 };
26
Linus Walleijecf5b392013-04-19 10:51:59 +020027 s365 {
28 compatible = "stericsson,s365";
29 vana15-supply = <&ab3100_ldo_d_reg>;
Linus Walleijcf0ce092013-05-22 16:15:13 +020030 syscon = <&syscon>;
31 };
32
33 syscon: syscon@c0011000 {
34 compatible = "stericsson,u300-syscon";
35 reg = <0xc0011000 0x1000>;
Linus Walleij14c26072013-05-23 11:09:57 +020036 clk32: app_32_clk@32k {
37 #clock-cells = <0>;
38 compatible = "fixed-clock";
39 clock-frequency = <32768>;
40 };
41 pll13: pll13@13M {
42 #clock-cells = <0>;
43 compatible = "fixed-clock";
44 clock-frequency = <13000000>;
45 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +020046 /* Slow bridge clocks under PLL13 */
47 slow_clk: slow_clk@13M {
48 #clock-cells = <0>;
49 compatible = "stericsson,u300-syscon-clk";
50 clock-type = <0>; /* Slow */
51 clock-id = <0>;
52 clocks = <&pll13>;
53 };
54 uart0_clk: uart0_clk@13M {
55 #clock-cells = <0>;
56 compatible = "stericsson,u300-syscon-clk";
57 clock-type = <0>; /* Slow */
58 clock-id = <1>;
59 clocks = <&slow_clk>;
60 };
61 gpio_clk: gpio_clk@13M {
62 #clock-cells = <0>;
63 compatible = "stericsson,u300-syscon-clk";
64 clock-type = <0>; /* Slow */
65 clock-id = <4>;
66 clocks = <&slow_clk>;
67 };
68 rtc_clk: rtc_clk@13M {
69 #clock-cells = <0>;
70 compatible = "stericsson,u300-syscon-clk";
71 clock-type = <0>; /* Slow */
72 clock-id = <6>;
73 clocks = <&slow_clk>;
74 };
75 apptimer_clk: app_tmr_clk@13M {
76 #clock-cells = <0>;
77 compatible = "stericsson,u300-syscon-clk";
78 clock-type = <0>; /* Slow */
79 clock-id = <7>;
80 clocks = <&slow_clk>;
81 };
82 acc_tmr_clk@13M {
83 #clock-cells = <0>;
84 compatible = "stericsson,u300-syscon-clk";
85 clock-type = <0>; /* Slow */
86 clock-id = <8>;
87 clocks = <&slow_clk>;
88 };
Linus Walleij14c26072013-05-23 11:09:57 +020089 pll208: pll208@208M {
90 #clock-cells = <0>;
91 compatible = "fixed-clock";
92 clock-frequency = <208000000>;
93 };
94 app208: app_208_clk@208M {
95 #clock-cells = <0>;
96 compatible = "fixed-factor-clock";
97 clock-div = <1>;
98 clock-mult = <1>;
99 clocks = <&pll208>;
100 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200101 cpu_clk@208M {
102 #clock-cells = <0>;
103 compatible = "stericsson,u300-syscon-clk";
104 clock-type = <2>; /* Rest */
105 clock-id = <3>;
106 clocks = <&app208>;
107 };
Linus Walleij14c26072013-05-23 11:09:57 +0200108 app104: app_104_clk@104M {
109 #clock-cells = <0>;
110 compatible = "fixed-factor-clock";
111 clock-div = <2>;
112 clock-mult = <1>;
113 clocks = <&pll208>;
114 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200115 semi_clk@104M {
116 #clock-cells = <0>;
117 compatible = "stericsson,u300-syscon-clk";
118 clock-type = <2>; /* Rest */
119 clock-id = <9>;
120 clocks = <&app104>;
121 };
Linus Walleij14c26072013-05-23 11:09:57 +0200122 app52: app_52_clk@52M {
123 #clock-cells = <0>;
124 compatible = "fixed-factor-clock";
125 clock-div = <4>;
126 clock-mult = <1>;
127 clocks = <&pll208>;
128 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200129 /* AHB subsystem clocks */
130 ahb_clk: ahb_subsys_clk@52M {
131 #clock-cells = <0>;
132 compatible = "stericsson,u300-syscon-clk";
133 clock-type = <2>; /* Rest */
134 clock-id = <10>;
135 clocks = <&app52>;
136 };
137 intcon_clk@52M {
138 #clock-cells = <0>;
139 compatible = "stericsson,u300-syscon-clk";
140 clock-type = <2>; /* Rest */
141 clock-id = <12>;
142 clocks = <&ahb_clk>;
143 };
144 emif_clk@52M {
145 #clock-cells = <0>;
146 compatible = "stericsson,u300-syscon-clk";
147 clock-type = <2>; /* Rest */
148 clock-id = <5>;
149 clocks = <&ahb_clk>;
150 };
151 dmac_clk: dmac_clk@52M {
152 #clock-cells = <0>;
153 compatible = "stericsson,u300-syscon-clk";
154 clock-type = <2>; /* Rest */
155 clock-id = <4>;
156 clocks = <&app52>;
157 };
158 fsmc_clk: fsmc_clk@52M {
159 #clock-cells = <0>;
160 compatible = "stericsson,u300-syscon-clk";
161 clock-type = <2>; /* Rest */
162 clock-id = <6>;
163 clocks = <&app52>;
164 };
165 xgam_clk: xgam_clk@52M {
166 #clock-cells = <0>;
167 compatible = "stericsson,u300-syscon-clk";
168 clock-type = <2>; /* Rest */
169 clock-id = <8>;
170 clocks = <&app52>;
171 };
Linus Walleij14c26072013-05-23 11:09:57 +0200172 app26: app_26_clk@26M {
173 #clock-cells = <0>;
174 compatible = "fixed-factor-clock";
175 clock-div = <2>;
176 clock-mult = <1>;
177 clocks = <&app52>;
178 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200179 /* Fast bridge clocks */
180 fast_clk: fast_clk@26M {
181 #clock-cells = <0>;
182 compatible = "stericsson,u300-syscon-clk";
183 clock-type = <1>; /* Fast */
184 clock-id = <0>;
185 clocks = <&app26>;
186 };
187 i2c0_clk: i2c0_clk@26M {
188 #clock-cells = <0>;
189 compatible = "stericsson,u300-syscon-clk";
190 clock-type = <1>; /* Fast */
191 clock-id = <1>;
192 clocks = <&fast_clk>;
193 };
194 i2c1_clk: i2c1_clk@26M {
195 #clock-cells = <0>;
196 compatible = "stericsson,u300-syscon-clk";
197 clock-type = <1>; /* Fast */
198 clock-id = <2>;
199 clocks = <&fast_clk>;
200 };
201 mmc_pclk: mmc_p_clk@26M {
202 #clock-cells = <0>;
203 compatible = "stericsson,u300-syscon-clk";
204 clock-type = <1>; /* Fast */
205 clock-id = <5>;
206 clocks = <&fast_clk>;
207 };
208 spi_clk: spi_p_clk@26M {
209 #clock-cells = <0>;
210 compatible = "stericsson,u300-syscon-clk";
211 clock-type = <1>; /* Fast */
212 clock-id = <6>;
213 clocks = <&fast_clk>;
214 };
Linus Walleijecf5b392013-04-19 10:51:59 +0200215 };
216
Linus Walleij978577e2013-04-08 11:38:50 +0200217 timer: timer@c0014000 {
218 compatible = "stericsson,u300-apptimer";
219 reg = <0xc0014000 0x1000>;
220 interrupt-parent = <&vica>;
221 interrupts = <24 25 26 27>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200222 clocks = <&apptimer_clk>;
Linus Walleij978577e2013-04-08 11:38:50 +0200223 };
224
225 gpio: gpio@c0016000 {
226 compatible = "stericsson,gpio-coh901";
227 reg = <0xc0016000 0x1000>;
228 interrupt-parent = <&vicb>;
229 interrupts = <0 1 2 18 21 22 23>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200230 clocks = <&gpio_clk>;
Linus Walleij978577e2013-04-08 11:38:50 +0200231 interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3",
232 "gpio4", "gpio5", "gpio6";
233 interrupt-controller;
234 #interrupt-cells = <2>;
235 gpio-controller;
236 #gpio-cells = <2>;
237 };
238
239 pinctrl: pinctrl@c0011000 {
240 compatible = "stericsson,pinctrl-u300";
241 reg = <0xc0011000 0x1000>;
242 };
243
Linus Walleij63a62ec2013-04-19 12:59:59 +0200244 watchdog: watchdog@c0012000 {
245 compatible = "stericsson,coh901327";
246 reg = <0xc0012000 0x1000>;
247 interrupt-parent = <&vicb>;
248 interrupts = <3>;
Linus Walleij14c26072013-05-23 11:09:57 +0200249 clocks = <&clk32>;
Linus Walleij63a62ec2013-04-19 12:59:59 +0200250 };
251
Linus Walleijae87bb82013-04-19 13:22:57 +0200252 rtc: rtc@c0017000 {
253 compatible = "stericsson,coh901331";
254 reg = <0xc0017000 0x1000>;
255 interrupt-parent = <&vicb>;
256 interrupts = <10>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200257 clocks = <&rtc_clk>;
Linus Walleijae87bb82013-04-19 13:22:57 +0200258 };
259
Linus Walleij39738cc2013-04-19 13:44:25 +0200260 dmac: dma-controller@c00020000 {
261 compatible = "stericsson,coh901318";
262 reg = <0xc0020000 0x1000>;
263 interrupt-parent = <&vica>;
264 interrupts = <2>;
265 #dma-cells = <1>;
266 dma-channels = <40>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200267 clocks = <&dmac_clk>;
Linus Walleij39738cc2013-04-19 13:44:25 +0200268 };
269
Linus Walleijd1346362013-04-22 11:00:02 +0200270 /* A NAND flash of 128 MiB */
271 fsmc: flash@40000000 {
272 compatible = "stericsson,fsmc-nand";
273 #address-cells = <1>;
274 #size-cells = <1>;
275 reg = <0x9f800000 0x1000>, /* FSMC Register*/
276 <0x80000000 0x4000>, /* NAND Base DATA */
277 <0x80020000 0x4000>, /* NAND Base ADDR */
278 <0x80010000 0x4000>; /* NAND Base CMD */
279 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
280 nand-skip-bbtscan;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200281 clocks = <&fsmc_clk>;
Linus Walleijd1346362013-04-22 11:00:02 +0200282
283 partition@0 {
284 label = "boot records";
285 reg = <0x0 0x20000>;
286 };
287 partition@20000 {
288 label = "free";
289 reg = <0x20000 0x7e0000>;
290 };
291 partition@800000 {
292 label = "platform";
293 reg = <0x800000 0xf800000>;
294 };
295 };
296
Linus Walleijc023b8b2013-04-11 15:13:39 +0200297 i2c0: i2c@c0004000 {
298 compatible = "st,ddci2c";
299 reg = <0xc0004000 0x1000>;
300 interrupt-parent = <&vicb>;
301 interrupts = <8>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200302 clocks = <&i2c0_clk>;
Linus Walleijc023b8b2013-04-11 15:13:39 +0200303 #address-cells = <1>;
304 #size-cells = <0>;
Linus Walleijecf5b392013-04-19 10:51:59 +0200305 ab3100: ab3100@0x48 {
306 compatible = "stericsson,ab3100";
307 reg = <0x48>;
308 interrupt-parent = <&vica>;
309 interrupts = <0>; /* EXT0 IRQ */
310 ab3100-regulators {
311 compatible = "stericsson,ab3100-regulators";
312 ab3100_ldo_a_reg: ab3100_ldo_a {
313 regulator-compatible = "ab3100_ldo_a";
314 startup-delay-us = <200>;
315 regulator-always-on;
316 regulator-boot-on;
317 };
318 ab3100_ldo_c_reg: ab3100_ldo_c {
319 regulator-compatible = "ab3100_ldo_c";
320 startup-delay-us = <200>;
321 };
322 ab3100_ldo_d_reg: ab3100_ldo_d {
323 regulator-compatible = "ab3100_ldo_d";
324 startup-delay-us = <200>;
325 };
326 ab3100_ldo_e_reg: ab3100_ldo_e {
327 regulator-compatible = "ab3100_ldo_e";
328 regulator-min-microvolt = <1800000>;
329 regulator-max-microvolt = <1800000>;
330 startup-delay-us = <200>;
331 regulator-always-on;
332 regulator-boot-on;
333 };
334 ab3100_ldo_f_reg: ab3100_ldo_f {
335 regulator-compatible = "ab3100_ldo_f";
336 regulator-min-microvolt = <2500000>;
337 regulator-max-microvolt = <2500000>;
338 startup-delay-us = <600>;
339 regulator-always-on;
340 regulator-boot-on;
341 };
342 ab3100_ldo_g_reg: ab3100_ldo_g {
343 regulator-compatible = "ab3100_ldo_g";
344 regulator-min-microvolt = <1500000>;
345 regulator-max-microvolt = <2850000>;
346 startup-delay-us = <400>;
347 };
348 ab3100_ldo_h_reg: ab3100_ldo_h {
349 regulator-compatible = "ab3100_ldo_h";
350 regulator-min-microvolt = <1200000>;
351 regulator-max-microvolt = <2750000>;
352 startup-delay-us = <200>;
353 };
354 ab3100_ldo_k_reg: ab3100_ldo_k {
355 regulator-compatible = "ab3100_ldo_k";
356 regulator-min-microvolt = <1800000>;
357 regulator-max-microvolt = <2750000>;
358 startup-delay-us = <200>;
359 };
360 ab3100_ext_reg: ab3100_ext {
361 regulator-compatible = "ab3100_ext";
362 };
363 ab3100_buck_reg: ab3100_buck {
364 regulator-compatible = "ab3100_buck";
365 regulator-min-microvolt = <1200000>;
366 regulator-max-microvolt = <1800000>;
367 startup-delay-us = <1000>;
368 regulator-always-on;
369 regulator-boot-on;
370 };
371 };
372 };
Linus Walleijc023b8b2013-04-11 15:13:39 +0200373 };
374
375 i2c1: i2c@c0005000 {
376 compatible = "st,ddci2c";
377 reg = <0xc0005000 0x1000>;
378 interrupt-parent = <&vicb>;
379 interrupts = <9>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200380 clocks = <&i2c1_clk>;
Linus Walleijc023b8b2013-04-11 15:13:39 +0200381 #address-cells = <1>;
382 #size-cells = <0>;
Linus Walleijecf5b392013-04-19 10:51:59 +0200383 fwcam0: fwcam@0x10 {
384 reg = <0x10>;
385 };
386 fwcam1: fwcam@0x5d {
387 reg = <0x5d>;
388 };
Linus Walleijc023b8b2013-04-11 15:13:39 +0200389 };
390
Linus Walleij978577e2013-04-08 11:38:50 +0200391 amba {
392 compatible = "arm,amba-bus";
393 #address-cells = <1>;
394 #size-cells = <1>;
395 ranges;
396
397 vica: interrupt-controller@a0001000 {
398 compatible = "arm,versatile-vic";
399 interrupt-controller;
400 #interrupt-cells = <1>;
401 reg = <0xa0001000 0x20>;
402 };
403
404 vicb: interrupt-controller@a0002000 {
405 compatible = "arm,versatile-vic";
406 interrupt-controller;
407 #interrupt-cells = <1>;
408 reg = <0xa0002000 0x20>;
409 };
410
411 uart0: serial@c0013000 {
412 compatible = "arm,pl011", "arm,primecell";
413 reg = <0xc0013000 0x1000>;
414 interrupt-parent = <&vica>;
415 interrupts = <22>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200416 clocks = <&uart0_clk>, <&uart0_clk>;
417 clock-names = "apb_pclk", "uart0_clk";
Linus Walleijefb9bc22013-05-02 10:38:52 +0200418 dmas = <&dmac 17 &dmac 18>;
419 dma-names = "tx", "rx";
Linus Walleij978577e2013-04-08 11:38:50 +0200420 };
421
422 uart1: serial@c0007000 {
423 compatible = "arm,pl011", "arm,primecell";
424 reg = <0xc0007000 0x1000>;
425 interrupt-parent = <&vicb>;
426 interrupts = <20>;
Linus Walleijefb9bc22013-05-02 10:38:52 +0200427 dmas = <&dmac 38 &dmac 39>;
428 dma-names = "tx", "rx";
Linus Walleij978577e2013-04-08 11:38:50 +0200429 };
Linus Walleijba078d12013-04-10 14:34:00 +0200430
431 mmcsd: mmcsd@c0001000 {
432 compatible = "arm,pl18x", "arm,primecell";
433 reg = <0xc0001000 0x1000>;
434 interrupt-parent = <&vicb>;
435 interrupts = <6 7>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200436 clocks = <&mmc_pclk>;
437 clock-names = "apb_pclk";
Linus Walleijba078d12013-04-10 14:34:00 +0200438 max-frequency = <24000000>;
439 bus-width = <4>; // SD-card slot
440 mmc-cap-mmc-highspeed;
441 mmc-cap-sd-highspeed;
442 cd-gpios = <&gpio 12 0x4>;
443 cd-inverted;
444 vmmc-supply = <&ab3100_ldo_g_reg>;
Linus Walleijefb9bc22013-05-02 10:38:52 +0200445 dmas = <&dmac 14>;
446 dma-names = "rx";
Linus Walleijba078d12013-04-10 14:34:00 +0200447 };
Linus Walleijcf4af862013-04-19 14:56:46 +0200448
449 spi: ssp@c0006000 {
450 compatible = "arm,pl022", "arm,primecell";
451 reg = <0xc0006000 0x1000>;
452 interrupt-parent = <&vica>;
453 interrupts = <23>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200454 clocks = <&spi_clk>, <&spi_clk>;
455 clock-names = "apb_pclk", "spi_clk";
Linus Walleijcf4af862013-04-19 14:56:46 +0200456 dmas = <&dmac 27 &dmac 28>;
457 dma-names = "tx", "rx";
458 num-cs = <3>;
459 #address-cells = <1>;
460 #size-cells = <0>;
Linus Walleij20d4af62013-04-21 21:39:46 +0200461 spi-dummy@1 {
462 compatible = "arm,pl022-dummy";
463 reg = <1>;
464 spi-max-frequency = <20000000>;
465 };
Linus Walleijcf4af862013-04-19 14:56:46 +0200466 };
Linus Walleij978577e2013-04-08 11:38:50 +0200467 };
468};