Loading...
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
4 */
5
6#include <dt-bindings/gpio/gpio.h>
7#include "skeleton.dtsi"
8
9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12
13 memory {
14 reg = <0x00000000 0x04000000>,
15 <0x08000000 0x04000000>;
16 };
17
18 L2: l2-cache {
19 compatible = "arm,l210-cache";
20 reg = <0x10210000 0x1000>;
21 interrupt-parent = <&vica>;
22 interrupts = <30>;
23 cache-unified;
24 cache-level = <2>;
25 cache-size = <131072>;
26 cache-sets = <512>;
27 cache-line-size = <32>;
28 /* At full speed latency must be >=2 */
29 arm,tag-latency = <8>;
30 arm,data-latency = <8 8>;
31 arm,dirty-latency = <8>;
32 };
33
34 mtu0: mtu@101e2000 {
35 /* Nomadik system timer */
36 compatible = "st,nomadik-mtu";
37 reg = <0x101e2000 0x1000>;
38 interrupt-parent = <&vica>;
39 interrupts = <4>;
40 clocks = <&timclk>, <&pclk>;
41 clock-names = "timclk", "apb_pclk";
42 };
43
44 mtu1: mtu@101e3000 {
45 /* Secondary timer */
46 reg = <0x101e3000 0x1000>;
47 interrupt-parent = <&vica>;
48 interrupts = <5>;
49 clocks = <&timclk>, <&pclk>;
50 clock-names = "timclk", "apb_pclk";
51 };
52
53 gpio0: gpio@101e4000 {
54 compatible = "st,nomadik-gpio";
55 reg = <0x101e4000 0x80>;
56 interrupt-parent = <&vica>;
57 interrupts = <6>;
58 interrupt-controller;
59 #interrupt-cells = <2>;
60 gpio-controller;
61 #gpio-cells = <2>;
62 gpio-bank = <0>;
63 gpio-ranges = <&pinctrl 0 0 32>;
64 clocks = <&pclk>;
65 };
66
67 gpio1: gpio@101e5000 {
68 compatible = "st,nomadik-gpio";
69 reg = <0x101e5000 0x80>;
70 interrupt-parent = <&vica>;
71 interrupts = <7>;
72 interrupt-controller;
73 #interrupt-cells = <2>;
74 gpio-controller;
75 #gpio-cells = <2>;
76 gpio-bank = <1>;
77 gpio-ranges = <&pinctrl 0 32 32>;
78 clocks = <&pclk>;
79 };
80
81 gpio2: gpio@101e6000 {
82 compatible = "st,nomadik-gpio";
83 reg = <0x101e6000 0x80>;
84 interrupt-parent = <&vica>;
85 interrupts = <8>;
86 interrupt-controller;
87 #interrupt-cells = <2>;
88 gpio-controller;
89 #gpio-cells = <2>;
90 gpio-bank = <2>;
91 gpio-ranges = <&pinctrl 0 64 32>;
92 clocks = <&pclk>;
93 };
94
95 gpio3: gpio@101e7000 {
96 compatible = "st,nomadik-gpio";
97 reg = <0x101e7000 0x80>;
98 ngpio = <28>;
99 interrupt-parent = <&vica>;
100 interrupts = <9>;
101 interrupt-controller;
102 #interrupt-cells = <2>;
103 gpio-controller;
104 #gpio-cells = <2>;
105 gpio-bank = <3>;
106 gpio-ranges = <&pinctrl 0 96 28>;
107 clocks = <&pclk>;
108 };
109
110 pinctrl: pinctrl {
111 compatible = "stericsson,stn8815-pinctrl";
112 nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
113 /* Pin configurations */
114 uart1 {
115 uart1_default_mux: uart1_mux {
116 u1_default_mux {
117 function = "u1";
118 groups = "u1_a_1";
119 };
120 };
121 };
122 mmcsd {
123 mmcsd_default_mux: mmcsd_mux {
124 mmcsd_default_mux {
125 function = "mmcsd";
126 groups = "mmcsd_a_1", "mmcsd_b_1";
127 };
128 };
129 mmcsd_default_mode: mmcsd_default {
130 mmcsd_default_cfg1 {
131 /*
132 * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
133 * MCCMD, MCDAT3-0, MCMSFBCLK
134 */
135 pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
136 "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
137 "GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
138 ste,output = <2>;
139 };
140 };
141 };
142 i2c0 {
143 i2c0_default_mux: i2c0_mux {
144 i2c0_default_mux {
145 function = "i2c0";
146 groups = "i2c0_a_1";
147 };
148 };
149 i2c0_default_mode: i2c0_default {
150 i2c0_default_cfg {
151 pins = "GPIO62_D3", "GPIO63_D2";
152 ste,input = <0>;
153 };
154 };
155 };
156 i2c1 {
157 i2c1_default_mux: i2c1_mux {
158 i2c1_default_mux {
159 function = "i2c1";
160 groups = "i2c1_a_1";
161 };
162 };
163 i2c1_default_mode: i2c1_default {
164 i2c1_default_cfg {
165 pins = "GPIO53_L4", "GPIO54_L3";
166 ste,input = <0>;
167 };
168 };
169 };
170 clcd {
171 /*
172 * This should be activated to use the additional
173 * 8 lines for bits 16 thru 23 from the CLCD block.
174 */
175 clcd_24bit_mux: clcd_mux {
176 clcd_24bit_mux {
177 function = "clcd";
178 groups = "clcd_16_23_b_1";
179 };
180 };
181 };
182 };
183
184 /* Power Management Unit */
185 pmu: pmu@101e9000 {
186 compatible = "stericsson,nomadik-pmu", "syscon";
187 reg = <0x101e0000 0x1000>;
188 };
189
190 src: src@101e0000 {
191 compatible = "stericsson,nomadik-src";
192 reg = <0x101e0000 0x1000>;
193
194 /*
195 * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
196 * that is parent of TIMCLK, PLL1 and PLL2
197 */
198 mxtal: mxtal@19.2M {
199 #clock-cells = <0>;
200 compatible = "fixed-clock";
201 clock-frequency = <19200000>;
202 };
203
204 /*
205 * The 2.4 MHz TIMCLK reference clock is active at
206 * boot time, this is actually the MXTALCLK @19.2 MHz
207 * divided by 8. This clock is used by the timers and
208 * watchdog. See page 105 ff.
209 */
210 timclk: timclk@2.4M {
211 #clock-cells = <0>;
212 compatible = "fixed-factor-clock";
213 clock-div = <8>;
214 clock-mult = <1>;
215 clocks = <&mxtal>;
216 };
217
218 /* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
219 pll1: pll1@0 {
220 #clock-cells = <0>;
221 compatible = "st,nomadik-pll-clock";
222 pll-id = <1>;
223 clocks = <&mxtal>;
224 };
225
226 /* HCLK divides the PLL1 with 1,2,3 or 4 */
227 hclk: hclk@0 {
228 #clock-cells = <0>;
229 compatible = "st,nomadik-hclk-clock";
230 clocks = <&pll1>;
231 };
232 /* The PCLK domain uses HCLK right off */
233 pclk: pclk@0 {
234 #clock-cells = <0>;
235 compatible = "fixed-factor-clock";
236 clock-div = <1>;
237 clock-mult = <1>;
238 clocks = <&hclk>;
239 };
240
241 /* PLL2 is usually 864 MHz and divided into a few fixed rates */
242 pll2: pll2@0 {
243 #clock-cells = <0>;
244 compatible = "st,nomadik-pll-clock";
245 pll-id = <2>;
246 clocks = <&mxtal>;
247 };
248 clk216: clk216@216M {
249 #clock-cells = <0>;
250 compatible = "fixed-factor-clock";
251 clock-div = <4>;
252 clock-mult = <1>;
253 clocks = <&pll2>;
254 };
255 clk108: clk108@108M {
256 #clock-cells = <0>;
257 compatible = "fixed-factor-clock";
258 clock-div = <2>;
259 clock-mult = <1>;
260 clocks = <&clk216>;
261 };
262 clk72: clk72@72M {
263 #clock-cells = <0>;
264 compatible = "fixed-factor-clock";
265 /* The data sheet does not say how this is derived */
266 clock-div = <12>;
267 clock-mult = <1>;
268 clocks = <&pll2>;
269 };
270 clk48: clk48@48M {
271 #clock-cells = <0>;
272 compatible = "fixed-factor-clock";
273 /* The data sheet does not say how this is derived */
274 clock-div = <18>;
275 clock-mult = <1>;
276 clocks = <&pll2>;
277 };
278 clk27: clk27@27M {
279 #clock-cells = <0>;
280 compatible = "fixed-factor-clock";
281 clock-div = <4>;
282 clock-mult = <1>;
283 clocks = <&clk108>;
284 };
285
286 /* This apparently exists as well */
287 ulpiclk: ulpiclk@60M {
288 #clock-cells = <0>;
289 compatible = "fixed-clock";
290 clock-frequency = <60000000>;
291 };
292
293 /*
294 * IP AMBA bus clocks, driving the bus side of the
295 * peripheral clocking, clock gates.
296 */
297
298 hclkdma0: hclkdma0@48M {
299 #clock-cells = <0>;
300 compatible = "st,nomadik-src-clock";
301 clock-id = <0>;
302 clocks = <&hclk>;
303 };
304 hclksmc: hclksmc@48M {
305 #clock-cells = <0>;
306 compatible = "st,nomadik-src-clock";
307 clock-id = <1>;
308 clocks = <&hclk>;
309 };
310 hclksdram: hclksdram@48M {
311 #clock-cells = <0>;
312 compatible = "st,nomadik-src-clock";
313 clock-id = <2>;
314 clocks = <&hclk>;
315 };
316 hclkdma1: hclkdma1@48M {
317 #clock-cells = <0>;
318 compatible = "st,nomadik-src-clock";
319 clock-id = <3>;
320 clocks = <&hclk>;
321 };
322 hclkclcd: hclkclcd@48M {
323 #clock-cells = <0>;
324 compatible = "st,nomadik-src-clock";
325 clock-id = <4>;
326 clocks = <&hclk>;
327 };
328 pclkirda: pclkirda@48M {
329 #clock-cells = <0>;
330 compatible = "st,nomadik-src-clock";
331 clock-id = <5>;
332 clocks = <&pclk>;
333 };
334 pclkssp: pclkssp@48M {
335 #clock-cells = <0>;
336 compatible = "st,nomadik-src-clock";
337 clock-id = <6>;
338 clocks = <&pclk>;
339 };
340 pclkuart0: pclkuart0@48M {
341 #clock-cells = <0>;
342 compatible = "st,nomadik-src-clock";
343 clock-id = <7>;
344 clocks = <&pclk>;
345 };
346 pclksdi: pclksdi@48M {
347 #clock-cells = <0>;
348 compatible = "st,nomadik-src-clock";
349 clock-id = <8>;
350 clocks = <&pclk>;
351 };
352 pclki2c0: pclki2c0@48M {
353 #clock-cells = <0>;
354 compatible = "st,nomadik-src-clock";
355 clock-id = <9>;
356 clocks = <&pclk>;
357 };
358 pclki2c1: pclki2c1@48M {
359 #clock-cells = <0>;
360 compatible = "st,nomadik-src-clock";
361 clock-id = <10>;
362 clocks = <&pclk>;
363 };
364 pclkuart1: pclkuart1@48M {
365 #clock-cells = <0>;
366 compatible = "st,nomadik-src-clock";
367 clock-id = <11>;
368 clocks = <&pclk>;
369 };
370 pclkmsp0: pclkmsp0@48M {
371 #clock-cells = <0>;
372 compatible = "st,nomadik-src-clock";
373 clock-id = <12>;
374 clocks = <&pclk>;
375 };
376 hclkusb: hclkusb@48M {
377 #clock-cells = <0>;
378 compatible = "st,nomadik-src-clock";
379 clock-id = <13>;
380 clocks = <&hclk>;
381 };
382 hclkdif: hclkdif@48M {
383 #clock-cells = <0>;
384 compatible = "st,nomadik-src-clock";
385 clock-id = <14>;
386 clocks = <&hclk>;
387 };
388 hclksaa: hclksaa@48M {
389 #clock-cells = <0>;
390 compatible = "st,nomadik-src-clock";
391 clock-id = <15>;
392 clocks = <&hclk>;
393 };
394 hclksva: hclksva@48M {
395 #clock-cells = <0>;
396 compatible = "st,nomadik-src-clock";
397 clock-id = <16>;
398 clocks = <&hclk>;
399 };
400 pclkhsi: pclkhsi@48M {
401 #clock-cells = <0>;
402 compatible = "st,nomadik-src-clock";
403 clock-id = <17>;
404 clocks = <&pclk>;
405 };
406 pclkxti: pclkxti@48M {
407 #clock-cells = <0>;
408 compatible = "st,nomadik-src-clock";
409 clock-id = <18>;
410 clocks = <&pclk>;
411 };
412 pclkuart2: pclkuart2@48M {
413 #clock-cells = <0>;
414 compatible = "st,nomadik-src-clock";
415 clock-id = <19>;
416 clocks = <&pclk>;
417 };
418 pclkmsp1: pclkmsp1@48M {
419 #clock-cells = <0>;
420 compatible = "st,nomadik-src-clock";
421 clock-id = <20>;
422 clocks = <&pclk>;
423 };
424 pclkmsp2: pclkmsp2@48M {
425 #clock-cells = <0>;
426 compatible = "st,nomadik-src-clock";
427 clock-id = <21>;
428 clocks = <&pclk>;
429 };
430 pclkowm: pclkowm@48M {
431 #clock-cells = <0>;
432 compatible = "st,nomadik-src-clock";
433 clock-id = <22>;
434 clocks = <&pclk>;
435 };
436 hclkhpi: hclkhpi@48M {
437 #clock-cells = <0>;
438 compatible = "st,nomadik-src-clock";
439 clock-id = <23>;
440 clocks = <&hclk>;
441 };
442 pclkske: pclkske@48M {
443 #clock-cells = <0>;
444 compatible = "st,nomadik-src-clock";
445 clock-id = <24>;
446 clocks = <&pclk>;
447 };
448 pclkhsem: pclkhsem@48M {
449 #clock-cells = <0>;
450 compatible = "st,nomadik-src-clock";
451 clock-id = <25>;
452 clocks = <&pclk>;
453 };
454 hclk3d: hclk3d@48M {
455 #clock-cells = <0>;
456 compatible = "st,nomadik-src-clock";
457 clock-id = <26>;
458 clocks = <&hclk>;
459 };
460 hclkhash: hclkhash@48M {
461 #clock-cells = <0>;
462 compatible = "st,nomadik-src-clock";
463 clock-id = <27>;
464 clocks = <&hclk>;
465 };
466 hclkcryp: hclkcryp@48M {
467 #clock-cells = <0>;
468 compatible = "st,nomadik-src-clock";
469 clock-id = <28>;
470 clocks = <&hclk>;
471 };
472 pclkmshc: pclkmshc@48M {
473 #clock-cells = <0>;
474 compatible = "st,nomadik-src-clock";
475 clock-id = <29>;
476 clocks = <&pclk>;
477 };
478 hclkusbm: hclkusbm@48M {
479 #clock-cells = <0>;
480 compatible = "st,nomadik-src-clock";
481 clock-id = <30>;
482 clocks = <&hclk>;
483 };
484 hclkrng: hclkrng@48M {
485 #clock-cells = <0>;
486 compatible = "st,nomadik-src-clock";
487 clock-id = <31>;
488 clocks = <&hclk>;
489 };
490
491 /* IP kernel clocks */
492 clcdclk: clcdclk@0 {
493 #clock-cells = <0>;
494 compatible = "st,nomadik-src-clock";
495 clock-id = <36>;
496 clocks = <&clk72 &clk48>;
497 };
498 irdaclk: irdaclk@48M {
499 #clock-cells = <0>;
500 compatible = "st,nomadik-src-clock";
501 clock-id = <37>;
502 clocks = <&clk48>;
503 };
504 sspiclk: sspiclk@48M {
505 #clock-cells = <0>;
506 compatible = "st,nomadik-src-clock";
507 clock-id = <38>;
508 clocks = <&clk48>;
509 };
510 uart0clk: uart0clk@48M {
511 #clock-cells = <0>;
512 compatible = "st,nomadik-src-clock";
513 clock-id = <39>;
514 clocks = <&clk48>;
515 };
516 sdiclk: sdiclk@48M {
517 /* Also called MCCLK in some documents */
518 #clock-cells = <0>;
519 compatible = "st,nomadik-src-clock";
520 clock-id = <40>;
521 clocks = <&clk48>;
522 };
523 i2c0clk: i2c0clk@48M {
524 #clock-cells = <0>;
525 compatible = "st,nomadik-src-clock";
526 clock-id = <41>;
527 clocks = <&clk48>;
528 };
529 i2c1clk: i2c1clk@48M {
530 #clock-cells = <0>;
531 compatible = "st,nomadik-src-clock";
532 clock-id = <42>;
533 clocks = <&clk48>;
534 };
535 uart1clk: uart1clk@48M {
536 #clock-cells = <0>;
537 compatible = "st,nomadik-src-clock";
538 clock-id = <43>;
539 clocks = <&clk48>;
540 };
541 mspclk0: mspclk0@48M {
542 #clock-cells = <0>;
543 compatible = "st,nomadik-src-clock";
544 clock-id = <44>;
545 clocks = <&clk48>;
546 };
547 usbclk: usbclk@48M {
548 #clock-cells = <0>;
549 compatible = "st,nomadik-src-clock";
550 clock-id = <45>;
551 clocks = <&clk48>; /* 48 MHz not ULPI */
552 };
553 difclk: difclk@72M {
554 #clock-cells = <0>;
555 compatible = "st,nomadik-src-clock";
556 clock-id = <46>;
557 clocks = <&clk72>;
558 };
559 ipi2cclk: ipi2cclk@48M {
560 #clock-cells = <0>;
561 compatible = "st,nomadik-src-clock";
562 clock-id = <47>;
563 clocks = <&clk48>; /* Guess */
564 };
565 ipbmcclk: ipbmcclk@48M {
566 #clock-cells = <0>;
567 compatible = "st,nomadik-src-clock";
568 clock-id = <48>;
569 clocks = <&clk48>; /* Guess */
570 };
571 hsiclkrx: hsiclkrx@216M {
572 #clock-cells = <0>;
573 compatible = "st,nomadik-src-clock";
574 clock-id = <49>;
575 clocks = <&clk216>;
576 };
577 hsiclktx: hsiclktx@108M {
578 #clock-cells = <0>;
579 compatible = "st,nomadik-src-clock";
580 clock-id = <50>;
581 clocks = <&clk108>;
582 };
583 uart2clk: uart2clk@48M {
584 #clock-cells = <0>;
585 compatible = "st,nomadik-src-clock";
586 clock-id = <51>;
587 clocks = <&clk48>;
588 };
589 mspclk1: mspclk1@48M {
590 #clock-cells = <0>;
591 compatible = "st,nomadik-src-clock";
592 clock-id = <52>;
593 clocks = <&clk48>;
594 };
595 mspclk2: mspclk2@48M {
596 #clock-cells = <0>;
597 compatible = "st,nomadik-src-clock";
598 clock-id = <53>;
599 clocks = <&clk48>;
600 };
601 owmclk: owmclk@48M {
602 #clock-cells = <0>;
603 compatible = "st,nomadik-src-clock";
604 clock-id = <54>;
605 clocks = <&clk48>; /* Guess */
606 };
607 skeclk: skeclk@48M {
608 #clock-cells = <0>;
609 compatible = "st,nomadik-src-clock";
610 clock-id = <56>;
611 clocks = <&clk48>; /* Guess */
612 };
613 x3dclk: x3dclk@48M {
614 #clock-cells = <0>;
615 compatible = "st,nomadik-src-clock";
616 clock-id = <58>;
617 clocks = <&clk48>; /* Guess */
618 };
619 pclkmsp3: pclkmsp3@48M {
620 #clock-cells = <0>;
621 compatible = "st,nomadik-src-clock";
622 clock-id = <59>;
623 clocks = <&pclk>;
624 };
625 mspclk3: mspclk3@48M {
626 #clock-cells = <0>;
627 compatible = "st,nomadik-src-clock";
628 clock-id = <60>;
629 clocks = <&clk48>;
630 };
631 mshcclk: mshcclk@48M {
632 #clock-cells = <0>;
633 compatible = "st,nomadik-src-clock";
634 clock-id = <61>;
635 clocks = <&clk48>; /* Guess */
636 };
637 usbmclk: usbmclk@48M {
638 #clock-cells = <0>;
639 compatible = "st,nomadik-src-clock";
640 clock-id = <62>;
641 /* Stated as "48 MHz not ULPI clock" */
642 clocks = <&clk48>;
643 };
644 rngcclk: rngcclk@48M {
645 #clock-cells = <0>;
646 compatible = "st,nomadik-src-clock";
647 clock-id = <63>;
648 clocks = <&clk48>; /* Guess */
649 };
650 };
651
652 /* A NAND flash of 128 MiB */
653 fsmc: flash@40000000 {
654 compatible = "stericsson,fsmc-nand";
655 #address-cells = <1>;
656 #size-cells = <1>;
657 reg = <0x10100000 0x1000>, /* FSMC Register*/
658 <0x40000000 0x2000>, /* NAND Base DATA */
659 <0x41000000 0x2000>, /* NAND Base ADDR */
660 <0x40800000 0x2000>; /* NAND Base CMD */
661 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
662 clocks = <&hclksmc>;
663 status = "okay";
664 timings = /bits/ 8 <0 0 0 0x10 0x0a 0>;
665
666 partition@0 {
667 label = "X-Loader(NAND)";
668 reg = <0x0 0x40000>;
669 };
670 partition@40000 {
671 label = "MemInit(NAND)";
672 reg = <0x40000 0x40000>;
673 };
674 partition@80000 {
675 label = "BootLoader(NAND)";
676 reg = <0x80000 0x200000>;
677 };
678 partition@280000 {
679 label = "Kernel zImage(NAND)";
680 reg = <0x280000 0x300000>;
681 };
682 partition@580000 {
683 label = "Root Filesystem(NAND)";
684 reg = <0x580000 0x1600000>;
685 };
686 partition@1b80000 {
687 label = "User Filesystem(NAND)";
688 reg = <0x1b80000 0x6480000>;
689 };
690 };
691
692 /* I2C0 connected to the STw4811 power management chip */
693 i2c0 {
694 compatible = "st,nomadik-i2c", "arm,primecell";
695 reg = <0x101f8000 0x1000>;
696 interrupt-parent = <&vica>;
697 interrupts = <20>;
698 clock-frequency = <100000>;
699 #address-cells = <1>;
700 #size-cells = <0>;
701 clocks = <&i2c0clk>, <&pclki2c0>;
702 clock-names = "mclk", "apb_pclk";
703 pinctrl-names = "default";
704 pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
705
706 stw4811@2d {
707 compatible = "st,stw4811";
708 reg = <0x2d>;
709 vmmc_regulator: vmmc {
710 compatible = "st,stw481x-vmmc";
711 regulator-name = "VMMC";
712 regulator-min-microvolt = <1800000>;
713 regulator-max-microvolt = <3300000>;
714 };
715 };
716 };
717
718 /* I2C1 connected to various sensors */
719 i2c1 {
720 compatible = "st,nomadik-i2c", "arm,primecell";
721 reg = <0x101f7000 0x1000>;
722 interrupt-parent = <&vica>;
723 interrupts = <21>;
724 clock-frequency = <100000>;
725 #address-cells = <1>;
726 #size-cells = <0>;
727 clocks = <&i2c1clk>, <&pclki2c1>;
728 clock-names = "mclk", "apb_pclk";
729 pinctrl-names = "default";
730 pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
731
732 camera@2d {
733 compatible = "st,camera";
734 reg = <0x10>;
735 };
736 stw5095@1a {
737 compatible = "st,stw5095";
738 reg = <0x1a>;
739 };
740 };
741
742 amba {
743 compatible = "simple-bus";
744 #address-cells = <1>;
745 #size-cells = <1>;
746 ranges;
747
748 clcd@10120000 {
749 compatible = "arm,pl110", "arm,primecell";
750 reg = <0x10120000 0x1000>;
751 interrupt-names = "combined";
752 interrupts = <14>;
753 interrupt-parent = <&vica>;
754 clocks = <&clcdclk>, <&hclkclcd>;
755 clock-names = "clcdclk", "apb_pclk";
756 status = "disabled";
757 };
758
759 vica: intc@10140000 {
760 compatible = "arm,versatile-vic";
761 interrupt-controller;
762 #interrupt-cells = <1>;
763 reg = <0x10140000 0x20>;
764 };
765
766 vicb: intc@10140020 {
767 compatible = "arm,versatile-vic";
768 interrupt-controller;
769 #interrupt-cells = <1>;
770 reg = <0x10140020 0x20>;
771 };
772
773 uart0: uart@101fd000 {
774 compatible = "arm,pl011", "arm,primecell";
775 reg = <0x101fd000 0x1000>;
776 interrupt-parent = <&vica>;
777 interrupts = <12>;
778 clocks = <&uart0clk>, <&pclkuart0>;
779 clock-names = "uartclk", "apb_pclk";
780 status = "disabled";
781 dmas = <&dmac0 14 1>,
782 <&dmac0 15 1>;
783 dma-names = "rx", "tx";
784 };
785
786 uart1: uart@101fb000 {
787 compatible = "arm,pl011", "arm,primecell";
788 reg = <0x101fb000 0x1000>;
789 interrupt-parent = <&vica>;
790 interrupts = <17>;
791 clocks = <&uart1clk>, <&pclkuart1>;
792 clock-names = "uartclk", "apb_pclk";
793 pinctrl-names = "default";
794 pinctrl-0 = <&uart1_default_mux>;
795 dmas = <&dmac1 22 1>,
796 <&dmac1 23 1>;
797 dma-names = "rx", "tx";
798 };
799
800 uart2: uart@101f2000 {
801 compatible = "arm,pl011", "arm,primecell";
802 reg = <0x101f2000 0x1000>;
803 interrupt-parent = <&vica>;
804 interrupts = <28>;
805 clocks = <&uart2clk>, <&pclkuart2>;
806 clock-names = "uartclk", "apb_pclk";
807 status = "disabled";
808 dmas = <&dmac1 30 1>,
809 <&dmac1 31 1>;
810 dma-names = "rx", "tx";
811 };
812
813 rng: rng@101b0000 {
814 compatible = "arm,primecell";
815 reg = <0x101b0000 0x1000>;
816 clocks = <&rngcclk>, <&hclkrng>;
817 clock-names = "rng", "apb_pclk";
818 };
819
820 rtc: rtc@101e8000 {
821 compatible = "arm,pl031", "arm,primecell";
822 reg = <0x101e8000 0x1000>;
823 clocks = <&pclk>;
824 clock-names = "apb_pclk";
825 interrupt-parent = <&vica>;
826 interrupts = <10>;
827 };
828
829 mmcsd: sdi@101f6000 {
830 compatible = "arm,pl18x", "arm,primecell";
831 reg = <0x101f6000 0x1000>;
832 clocks = <&sdiclk>, <&pclksdi>;
833 clock-names = "mclk", "apb_pclk";
834 interrupt-parent = <&vica>;
835 interrupts = <22>;
836 max-frequency = <400000>;
837 bus-width = <4>;
838 cap-mmc-highspeed;
839 cap-sd-highspeed;
840 full-pwr-cycle;
841 /*
842 * The STw4811 circuit used with the Nomadik strictly
843 * requires that all of these signal direction pins be
844 * routed and used for its 4-bit levelshifter.
845 */
846 st,sig-dir-dat0;
847 st,sig-dir-dat2;
848 st,sig-dir-dat31;
849 st,sig-dir-cmd;
850 st,sig-pin-fbclk;
851 pinctrl-names = "default";
852 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
853 vmmc-supply = <&vmmc_regulator>;
854 };
855
856 dmac0: dma-controller@10130000 {
857 compatible = "arm,pl080", "arm,primecell";
858 reg = <0x10130000 0x1000>;
859 interrupt-parent = <&vica>;
860 interrupts = <15>;
861 clocks = <&hclkdma0>;
862 clock-names = "apb_pclk";
863 lli-bus-interface-ahb1;
864 lli-bus-interface-ahb2;
865 mem-bus-interface-ahb2;
866 memcpy-burst-size = <256>;
867 memcpy-bus-width = <32>;
868 #dma-cells = <2>;
869 };
870 dmac1: dma-controller@10150000 {
871 compatible = "arm,pl080", "arm,primecell";
872 reg = <0x10150000 0x1000>;
873 interrupt-parent = <&vica>;
874 interrupts = <13>;
875 clocks = <&hclkdma1>;
876 clock-names = "apb_pclk";
877 lli-bus-interface-ahb1;
878 lli-bus-interface-ahb2;
879 mem-bus-interface-ahb2;
880 memcpy-burst-size = <256>;
881 memcpy-bus-width = <32>;
882 #dma-cells = <2>;
883 };
884 };
885};
1/*
2 * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
3 */
4
5#include <dt-bindings/gpio/gpio.h>
6#include "skeleton.dtsi"
7
8/ {
9 #address-cells = <1>;
10 #size-cells = <1>;
11
12 memory {
13 reg = <0x00000000 0x04000000>,
14 <0x08000000 0x04000000>;
15 };
16
17 L2: l2-cache {
18 compatible = "arm,l210-cache";
19 reg = <0x10210000 0x1000>;
20 interrupt-parent = <&vica>;
21 interrupts = <30>;
22 cache-unified;
23 cache-level = <2>;
24 cache-size = <131072>;
25 cache-sets = <512>;
26 cache-line-size = <32>;
27 /* At full speed latency must be >=2 */
28 arm,tag-latency = <8>;
29 arm,data-latency = <8 8>;
30 arm,dirty-latency = <8>;
31 };
32
33 mtu0: mtu@101e2000 {
34 /* Nomadik system timer */
35 compatible = "st,nomadik-mtu";
36 reg = <0x101e2000 0x1000>;
37 interrupt-parent = <&vica>;
38 interrupts = <4>;
39 clocks = <&timclk>, <&pclk>;
40 clock-names = "timclk", "apb_pclk";
41 };
42
43 mtu1: mtu@101e3000 {
44 /* Secondary timer */
45 reg = <0x101e3000 0x1000>;
46 interrupt-parent = <&vica>;
47 interrupts = <5>;
48 clocks = <&timclk>, <&pclk>;
49 clock-names = "timclk", "apb_pclk";
50 };
51
52 gpio0: gpio@101e4000 {
53 compatible = "st,nomadik-gpio";
54 reg = <0x101e4000 0x80>;
55 interrupt-parent = <&vica>;
56 interrupts = <6>;
57 interrupt-controller;
58 #interrupt-cells = <2>;
59 gpio-controller;
60 #gpio-cells = <2>;
61 gpio-bank = <0>;
62 gpio-ranges = <&pinctrl 0 0 32>;
63 clocks = <&pclk>;
64 };
65
66 gpio1: gpio@101e5000 {
67 compatible = "st,nomadik-gpio";
68 reg = <0x101e5000 0x80>;
69 interrupt-parent = <&vica>;
70 interrupts = <7>;
71 interrupt-controller;
72 #interrupt-cells = <2>;
73 gpio-controller;
74 #gpio-cells = <2>;
75 gpio-bank = <1>;
76 gpio-ranges = <&pinctrl 0 32 32>;
77 clocks = <&pclk>;
78 };
79
80 gpio2: gpio@101e6000 {
81 compatible = "st,nomadik-gpio";
82 reg = <0x101e6000 0x80>;
83 interrupt-parent = <&vica>;
84 interrupts = <8>;
85 interrupt-controller;
86 #interrupt-cells = <2>;
87 gpio-controller;
88 #gpio-cells = <2>;
89 gpio-bank = <2>;
90 gpio-ranges = <&pinctrl 0 64 32>;
91 clocks = <&pclk>;
92 };
93
94 gpio3: gpio@101e7000 {
95 compatible = "st,nomadik-gpio";
96 reg = <0x101e7000 0x80>;
97 ngpio = <28>;
98 interrupt-parent = <&vica>;
99 interrupts = <9>;
100 interrupt-controller;
101 #interrupt-cells = <2>;
102 gpio-controller;
103 #gpio-cells = <2>;
104 gpio-bank = <3>;
105 gpio-ranges = <&pinctrl 0 96 28>;
106 clocks = <&pclk>;
107 };
108
109 pinctrl: pinctrl {
110 compatible = "stericsson,stn8815-pinctrl";
111 nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
112 /* Pin configurations */
113 uart1 {
114 uart1_default_mux: uart1_mux {
115 u1_default_mux {
116 function = "u1";
117 groups = "u1_a_1";
118 };
119 };
120 };
121 mmcsd {
122 mmcsd_default_mux: mmcsd_mux {
123 mmcsd_default_mux {
124 function = "mmcsd";
125 groups = "mmcsd_a_1", "mmcsd_b_1";
126 };
127 };
128 mmcsd_default_mode: mmcsd_default {
129 mmcsd_default_cfg1 {
130 /*
131 * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
132 * MCCMD, MCDAT3-0, MCMSFBCLK
133 */
134 pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
135 "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
136 "GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
137 ste,output = <2>;
138 };
139 };
140 };
141 i2c0 {
142 i2c0_default_mux: i2c0_mux {
143 i2c0_default_mux {
144 function = "i2c0";
145 groups = "i2c0_a_1";
146 };
147 };
148 i2c0_default_mode: i2c0_default {
149 i2c0_default_cfg {
150 pins = "GPIO62_D3", "GPIO63_D2";
151 ste,input = <0>;
152 };
153 };
154 };
155 i2c1 {
156 i2c1_default_mux: i2c1_mux {
157 i2c1_default_mux {
158 function = "i2c1";
159 groups = "i2c1_a_1";
160 };
161 };
162 i2c1_default_mode: i2c1_default {
163 i2c1_default_cfg {
164 pins = "GPIO53_L4", "GPIO54_L3";
165 ste,input = <0>;
166 };
167 };
168 };
169 };
170
171 src: src@101e0000 {
172 compatible = "stericsson,nomadik-src";
173 reg = <0x101e0000 0x1000>;
174
175 /*
176 * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
177 * that is parent of TIMCLK, PLL1 and PLL2
178 */
179 mxtal: mxtal@19.2M {
180 #clock-cells = <0>;
181 compatible = "fixed-clock";
182 clock-frequency = <19200000>;
183 };
184
185 /*
186 * The 2.4 MHz TIMCLK reference clock is active at
187 * boot time, this is actually the MXTALCLK @19.2 MHz
188 * divided by 8. This clock is used by the timers and
189 * watchdog. See page 105 ff.
190 */
191 timclk: timclk@2.4M {
192 #clock-cells = <0>;
193 compatible = "fixed-factor-clock";
194 clock-div = <8>;
195 clock-mult = <1>;
196 clocks = <&mxtal>;
197 };
198
199 /* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
200 pll1: pll1@0 {
201 #clock-cells = <0>;
202 compatible = "st,nomadik-pll-clock";
203 pll-id = <1>;
204 clocks = <&mxtal>;
205 };
206
207 /* HCLK divides the PLL1 with 1,2,3 or 4 */
208 hclk: hclk@0 {
209 #clock-cells = <0>;
210 compatible = "st,nomadik-hclk-clock";
211 clocks = <&pll1>;
212 };
213 /* The PCLK domain uses HCLK right off */
214 pclk: pclk@0 {
215 #clock-cells = <0>;
216 compatible = "fixed-factor-clock";
217 clock-div = <1>;
218 clock-mult = <1>;
219 clocks = <&hclk>;
220 };
221
222 /* PLL2 is usually 864 MHz and divided into a few fixed rates */
223 pll2: pll2@0 {
224 #clock-cells = <0>;
225 compatible = "st,nomadik-pll-clock";
226 pll-id = <2>;
227 clocks = <&mxtal>;
228 };
229 clk216: clk216@216M {
230 #clock-cells = <0>;
231 compatible = "fixed-factor-clock";
232 clock-div = <4>;
233 clock-mult = <1>;
234 clocks = <&pll2>;
235 };
236 clk108: clk108@108M {
237 #clock-cells = <0>;
238 compatible = "fixed-factor-clock";
239 clock-div = <2>;
240 clock-mult = <1>;
241 clocks = <&clk216>;
242 };
243 clk72: clk72@72M {
244 #clock-cells = <0>;
245 compatible = "fixed-factor-clock";
246 /* The data sheet does not say how this is derived */
247 clock-div = <12>;
248 clock-mult = <1>;
249 clocks = <&pll2>;
250 };
251 clk48: clk48@48M {
252 #clock-cells = <0>;
253 compatible = "fixed-factor-clock";
254 /* The data sheet does not say how this is derived */
255 clock-div = <18>;
256 clock-mult = <1>;
257 clocks = <&pll2>;
258 };
259 clk27: clk27@27M {
260 #clock-cells = <0>;
261 compatible = "fixed-factor-clock";
262 clock-div = <4>;
263 clock-mult = <1>;
264 clocks = <&clk108>;
265 };
266
267 /* This apparently exists as well */
268 ulpiclk: ulpiclk@60M {
269 #clock-cells = <0>;
270 compatible = "fixed-clock";
271 clock-frequency = <60000000>;
272 };
273
274 /*
275 * IP AMBA bus clocks, driving the bus side of the
276 * peripheral clocking, clock gates.
277 */
278
279 hclkdma0: hclkdma0@48M {
280 #clock-cells = <0>;
281 compatible = "st,nomadik-src-clock";
282 clock-id = <0>;
283 clocks = <&hclk>;
284 };
285 hclksmc: hclksmc@48M {
286 #clock-cells = <0>;
287 compatible = "st,nomadik-src-clock";
288 clock-id = <1>;
289 clocks = <&hclk>;
290 };
291 hclksdram: hclksdram@48M {
292 #clock-cells = <0>;
293 compatible = "st,nomadik-src-clock";
294 clock-id = <2>;
295 clocks = <&hclk>;
296 };
297 hclkdma1: hclkdma1@48M {
298 #clock-cells = <0>;
299 compatible = "st,nomadik-src-clock";
300 clock-id = <3>;
301 clocks = <&hclk>;
302 };
303 hclkclcd: hclkclcd@48M {
304 #clock-cells = <0>;
305 compatible = "st,nomadik-src-clock";
306 clock-id = <4>;
307 clocks = <&hclk>;
308 };
309 pclkirda: pclkirda@48M {
310 #clock-cells = <0>;
311 compatible = "st,nomadik-src-clock";
312 clock-id = <5>;
313 clocks = <&pclk>;
314 };
315 pclkssp: pclkssp@48M {
316 #clock-cells = <0>;
317 compatible = "st,nomadik-src-clock";
318 clock-id = <6>;
319 clocks = <&pclk>;
320 };
321 pclkuart0: pclkuart0@48M {
322 #clock-cells = <0>;
323 compatible = "st,nomadik-src-clock";
324 clock-id = <7>;
325 clocks = <&pclk>;
326 };
327 pclksdi: pclksdi@48M {
328 #clock-cells = <0>;
329 compatible = "st,nomadik-src-clock";
330 clock-id = <8>;
331 clocks = <&pclk>;
332 };
333 pclki2c0: pclki2c0@48M {
334 #clock-cells = <0>;
335 compatible = "st,nomadik-src-clock";
336 clock-id = <9>;
337 clocks = <&pclk>;
338 };
339 pclki2c1: pclki2c1@48M {
340 #clock-cells = <0>;
341 compatible = "st,nomadik-src-clock";
342 clock-id = <10>;
343 clocks = <&pclk>;
344 };
345 pclkuart1: pclkuart1@48M {
346 #clock-cells = <0>;
347 compatible = "st,nomadik-src-clock";
348 clock-id = <11>;
349 clocks = <&pclk>;
350 };
351 pclkmsp0: pclkmsp0@48M {
352 #clock-cells = <0>;
353 compatible = "st,nomadik-src-clock";
354 clock-id = <12>;
355 clocks = <&pclk>;
356 };
357 hclkusb: hclkusb@48M {
358 #clock-cells = <0>;
359 compatible = "st,nomadik-src-clock";
360 clock-id = <13>;
361 clocks = <&hclk>;
362 };
363 hclkdif: hclkdif@48M {
364 #clock-cells = <0>;
365 compatible = "st,nomadik-src-clock";
366 clock-id = <14>;
367 clocks = <&hclk>;
368 };
369 hclksaa: hclksaa@48M {
370 #clock-cells = <0>;
371 compatible = "st,nomadik-src-clock";
372 clock-id = <15>;
373 clocks = <&hclk>;
374 };
375 hclksva: hclksva@48M {
376 #clock-cells = <0>;
377 compatible = "st,nomadik-src-clock";
378 clock-id = <16>;
379 clocks = <&hclk>;
380 };
381 pclkhsi: pclkhsi@48M {
382 #clock-cells = <0>;
383 compatible = "st,nomadik-src-clock";
384 clock-id = <17>;
385 clocks = <&pclk>;
386 };
387 pclkxti: pclkxti@48M {
388 #clock-cells = <0>;
389 compatible = "st,nomadik-src-clock";
390 clock-id = <18>;
391 clocks = <&pclk>;
392 };
393 pclkuart2: pclkuart2@48M {
394 #clock-cells = <0>;
395 compatible = "st,nomadik-src-clock";
396 clock-id = <19>;
397 clocks = <&pclk>;
398 };
399 pclkmsp1: pclkmsp1@48M {
400 #clock-cells = <0>;
401 compatible = "st,nomadik-src-clock";
402 clock-id = <20>;
403 clocks = <&pclk>;
404 };
405 pclkmsp2: pclkmsp2@48M {
406 #clock-cells = <0>;
407 compatible = "st,nomadik-src-clock";
408 clock-id = <21>;
409 clocks = <&pclk>;
410 };
411 pclkowm: pclkowm@48M {
412 #clock-cells = <0>;
413 compatible = "st,nomadik-src-clock";
414 clock-id = <22>;
415 clocks = <&pclk>;
416 };
417 hclkhpi: hclkhpi@48M {
418 #clock-cells = <0>;
419 compatible = "st,nomadik-src-clock";
420 clock-id = <23>;
421 clocks = <&hclk>;
422 };
423 pclkske: pclkske@48M {
424 #clock-cells = <0>;
425 compatible = "st,nomadik-src-clock";
426 clock-id = <24>;
427 clocks = <&pclk>;
428 };
429 pclkhsem: pclkhsem@48M {
430 #clock-cells = <0>;
431 compatible = "st,nomadik-src-clock";
432 clock-id = <25>;
433 clocks = <&pclk>;
434 };
435 hclk3d: hclk3d@48M {
436 #clock-cells = <0>;
437 compatible = "st,nomadik-src-clock";
438 clock-id = <26>;
439 clocks = <&hclk>;
440 };
441 hclkhash: hclkhash@48M {
442 #clock-cells = <0>;
443 compatible = "st,nomadik-src-clock";
444 clock-id = <27>;
445 clocks = <&hclk>;
446 };
447 hclkcryp: hclkcryp@48M {
448 #clock-cells = <0>;
449 compatible = "st,nomadik-src-clock";
450 clock-id = <28>;
451 clocks = <&hclk>;
452 };
453 pclkmshc: pclkmshc@48M {
454 #clock-cells = <0>;
455 compatible = "st,nomadik-src-clock";
456 clock-id = <29>;
457 clocks = <&pclk>;
458 };
459 hclkusbm: hclkusbm@48M {
460 #clock-cells = <0>;
461 compatible = "st,nomadik-src-clock";
462 clock-id = <30>;
463 clocks = <&hclk>;
464 };
465 hclkrng: hclkrng@48M {
466 #clock-cells = <0>;
467 compatible = "st,nomadik-src-clock";
468 clock-id = <31>;
469 clocks = <&hclk>;
470 };
471
472 /* IP kernel clocks */
473 clcdclk: clcdclk@0 {
474 #clock-cells = <0>;
475 compatible = "st,nomadik-src-clock";
476 clock-id = <36>;
477 clocks = <&clk72 &clk48>;
478 };
479 irdaclk: irdaclk@48M {
480 #clock-cells = <0>;
481 compatible = "st,nomadik-src-clock";
482 clock-id = <37>;
483 clocks = <&clk48>;
484 };
485 sspiclk: sspiclk@48M {
486 #clock-cells = <0>;
487 compatible = "st,nomadik-src-clock";
488 clock-id = <38>;
489 clocks = <&clk48>;
490 };
491 uart0clk: uart0clk@48M {
492 #clock-cells = <0>;
493 compatible = "st,nomadik-src-clock";
494 clock-id = <39>;
495 clocks = <&clk48>;
496 };
497 sdiclk: sdiclk@48M {
498 /* Also called MCCLK in some documents */
499 #clock-cells = <0>;
500 compatible = "st,nomadik-src-clock";
501 clock-id = <40>;
502 clocks = <&clk48>;
503 };
504 i2c0clk: i2c0clk@48M {
505 #clock-cells = <0>;
506 compatible = "st,nomadik-src-clock";
507 clock-id = <41>;
508 clocks = <&clk48>;
509 };
510 i2c1clk: i2c1clk@48M {
511 #clock-cells = <0>;
512 compatible = "st,nomadik-src-clock";
513 clock-id = <42>;
514 clocks = <&clk48>;
515 };
516 uart1clk: uart1clk@48M {
517 #clock-cells = <0>;
518 compatible = "st,nomadik-src-clock";
519 clock-id = <43>;
520 clocks = <&clk48>;
521 };
522 mspclk0: mspclk0@48M {
523 #clock-cells = <0>;
524 compatible = "st,nomadik-src-clock";
525 clock-id = <44>;
526 clocks = <&clk48>;
527 };
528 usbclk: usbclk@48M {
529 #clock-cells = <0>;
530 compatible = "st,nomadik-src-clock";
531 clock-id = <45>;
532 clocks = <&clk48>; /* 48 MHz not ULPI */
533 };
534 difclk: difclk@72M {
535 #clock-cells = <0>;
536 compatible = "st,nomadik-src-clock";
537 clock-id = <46>;
538 clocks = <&clk72>;
539 };
540 ipi2cclk: ipi2cclk@48M {
541 #clock-cells = <0>;
542 compatible = "st,nomadik-src-clock";
543 clock-id = <47>;
544 clocks = <&clk48>; /* Guess */
545 };
546 ipbmcclk: ipbmcclk@48M {
547 #clock-cells = <0>;
548 compatible = "st,nomadik-src-clock";
549 clock-id = <48>;
550 clocks = <&clk48>; /* Guess */
551 };
552 hsiclkrx: hsiclkrx@216M {
553 #clock-cells = <0>;
554 compatible = "st,nomadik-src-clock";
555 clock-id = <49>;
556 clocks = <&clk216>;
557 };
558 hsiclktx: hsiclktx@108M {
559 #clock-cells = <0>;
560 compatible = "st,nomadik-src-clock";
561 clock-id = <50>;
562 clocks = <&clk108>;
563 };
564 uart2clk: uart2clk@48M {
565 #clock-cells = <0>;
566 compatible = "st,nomadik-src-clock";
567 clock-id = <51>;
568 clocks = <&clk48>;
569 };
570 mspclk1: mspclk1@48M {
571 #clock-cells = <0>;
572 compatible = "st,nomadik-src-clock";
573 clock-id = <52>;
574 clocks = <&clk48>;
575 };
576 mspclk2: mspclk2@48M {
577 #clock-cells = <0>;
578 compatible = "st,nomadik-src-clock";
579 clock-id = <53>;
580 clocks = <&clk48>;
581 };
582 owmclk: owmclk@48M {
583 #clock-cells = <0>;
584 compatible = "st,nomadik-src-clock";
585 clock-id = <54>;
586 clocks = <&clk48>; /* Guess */
587 };
588 skeclk: skeclk@48M {
589 #clock-cells = <0>;
590 compatible = "st,nomadik-src-clock";
591 clock-id = <56>;
592 clocks = <&clk48>; /* Guess */
593 };
594 x3dclk: x3dclk@48M {
595 #clock-cells = <0>;
596 compatible = "st,nomadik-src-clock";
597 clock-id = <58>;
598 clocks = <&clk48>; /* Guess */
599 };
600 pclkmsp3: pclkmsp3@48M {
601 #clock-cells = <0>;
602 compatible = "st,nomadik-src-clock";
603 clock-id = <59>;
604 clocks = <&pclk>;
605 };
606 mspclk3: mspclk3@48M {
607 #clock-cells = <0>;
608 compatible = "st,nomadik-src-clock";
609 clock-id = <60>;
610 clocks = <&clk48>;
611 };
612 mshcclk: mshcclk@48M {
613 #clock-cells = <0>;
614 compatible = "st,nomadik-src-clock";
615 clock-id = <61>;
616 clocks = <&clk48>; /* Guess */
617 };
618 usbmclk: usbmclk@48M {
619 #clock-cells = <0>;
620 compatible = "st,nomadik-src-clock";
621 clock-id = <62>;
622 /* Stated as "48 MHz not ULPI clock" */
623 clocks = <&clk48>;
624 };
625 rngcclk: rngcclk@48M {
626 #clock-cells = <0>;
627 compatible = "st,nomadik-src-clock";
628 clock-id = <63>;
629 clocks = <&clk48>; /* Guess */
630 };
631 };
632
633 /* A NAND flash of 128 MiB */
634 fsmc: flash@40000000 {
635 compatible = "stericsson,fsmc-nand";
636 #address-cells = <1>;
637 #size-cells = <1>;
638 reg = <0x10100000 0x1000>, /* FSMC Register*/
639 <0x40000000 0x2000>, /* NAND Base DATA */
640 <0x41000000 0x2000>, /* NAND Base ADDR */
641 <0x40800000 0x2000>; /* NAND Base CMD */
642 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
643 clocks = <&hclksmc>;
644 status = "okay";
645 timings = /bits/ 8 <0 0 0 0x10 0x0a 0>;
646
647 partition@0 {
648 label = "X-Loader(NAND)";
649 reg = <0x0 0x40000>;
650 };
651 partition@40000 {
652 label = "MemInit(NAND)";
653 reg = <0x40000 0x40000>;
654 };
655 partition@80000 {
656 label = "BootLoader(NAND)";
657 reg = <0x80000 0x200000>;
658 };
659 partition@280000 {
660 label = "Kernel zImage(NAND)";
661 reg = <0x280000 0x300000>;
662 };
663 partition@580000 {
664 label = "Root Filesystem(NAND)";
665 reg = <0x580000 0x1600000>;
666 };
667 partition@1b80000 {
668 label = "User Filesystem(NAND)";
669 reg = <0x1b80000 0x6480000>;
670 };
671 };
672
673 /* I2C0 connected to the STw4811 power management chip */
674 i2c0 {
675 compatible = "st,nomadik-i2c", "arm,primecell";
676 reg = <0x101f8000 0x1000>;
677 interrupt-parent = <&vica>;
678 interrupts = <20>;
679 clock-frequency = <100000>;
680 #address-cells = <1>;
681 #size-cells = <0>;
682 clocks = <&i2c0clk>, <&pclki2c0>;
683 clock-names = "mclk", "apb_pclk";
684 pinctrl-names = "default";
685 pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
686
687 stw4811@2d {
688 compatible = "st,stw4811";
689 reg = <0x2d>;
690 vmmc_regulator: vmmc {
691 compatible = "st,stw481x-vmmc";
692 regulator-name = "VMMC";
693 regulator-min-microvolt = <1800000>;
694 regulator-max-microvolt = <3300000>;
695 };
696 };
697 };
698
699 /* I2C1 connected to various sensors */
700 i2c1 {
701 compatible = "st,nomadik-i2c", "arm,primecell";
702 reg = <0x101f7000 0x1000>;
703 interrupt-parent = <&vica>;
704 interrupts = <21>;
705 clock-frequency = <100000>;
706 #address-cells = <1>;
707 #size-cells = <0>;
708 clocks = <&i2c1clk>, <&pclki2c1>;
709 clock-names = "mclk", "apb_pclk";
710 pinctrl-names = "default";
711 pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
712
713 camera@2d {
714 compatible = "st,camera";
715 reg = <0x10>;
716 };
717 stw5095@1a {
718 compatible = "st,stw5095";
719 reg = <0x1a>;
720 };
721 };
722
723 amba {
724 compatible = "simple-bus";
725 #address-cells = <1>;
726 #size-cells = <1>;
727 ranges;
728
729 vica: intc@10140000 {
730 compatible = "arm,versatile-vic";
731 interrupt-controller;
732 #interrupt-cells = <1>;
733 reg = <0x10140000 0x20>;
734 };
735
736 vicb: intc@10140020 {
737 compatible = "arm,versatile-vic";
738 interrupt-controller;
739 #interrupt-cells = <1>;
740 reg = <0x10140020 0x20>;
741 };
742
743 uart0: uart@101fd000 {
744 compatible = "arm,pl011", "arm,primecell";
745 reg = <0x101fd000 0x1000>;
746 interrupt-parent = <&vica>;
747 interrupts = <12>;
748 clocks = <&uart0clk>, <&pclkuart0>;
749 clock-names = "uartclk", "apb_pclk";
750 status = "disabled";
751 };
752
753 uart1: uart@101fb000 {
754 compatible = "arm,pl011", "arm,primecell";
755 reg = <0x101fb000 0x1000>;
756 interrupt-parent = <&vica>;
757 interrupts = <17>;
758 clocks = <&uart1clk>, <&pclkuart1>;
759 clock-names = "uartclk", "apb_pclk";
760 pinctrl-names = "default";
761 pinctrl-0 = <&uart1_default_mux>;
762 };
763
764 uart2: uart@101f2000 {
765 compatible = "arm,pl011", "arm,primecell";
766 reg = <0x101f2000 0x1000>;
767 interrupt-parent = <&vica>;
768 interrupts = <28>;
769 clocks = <&uart2clk>, <&pclkuart2>;
770 clock-names = "uartclk", "apb_pclk";
771 status = "disabled";
772 };
773
774 rng: rng@101b0000 {
775 compatible = "arm,primecell";
776 reg = <0x101b0000 0x1000>;
777 clocks = <&rngcclk>, <&hclkrng>;
778 clock-names = "rng", "apb_pclk";
779 };
780
781 rtc: rtc@101e8000 {
782 compatible = "arm,pl031", "arm,primecell";
783 reg = <0x101e8000 0x1000>;
784 clocks = <&pclk>;
785 clock-names = "apb_pclk";
786 interrupt-parent = <&vica>;
787 interrupts = <10>;
788 };
789
790 mmcsd: sdi@101f6000 {
791 compatible = "arm,pl18x", "arm,primecell";
792 reg = <0x101f6000 0x1000>;
793 clocks = <&sdiclk>, <&pclksdi>;
794 clock-names = "mclk", "apb_pclk";
795 interrupt-parent = <&vica>;
796 interrupts = <22>;
797 max-frequency = <400000>;
798 bus-width = <4>;
799 cap-mmc-highspeed;
800 cap-sd-highspeed;
801 full-pwr-cycle;
802 /*
803 * The STw4811 circuit used with the Nomadik strictly
804 * requires that all of these signal direction pins be
805 * routed and used for its 4-bit levelshifter.
806 */
807 st,sig-dir-dat0;
808 st,sig-dir-dat2;
809 st,sig-dir-dat31;
810 st,sig-dir-cmd;
811 st,sig-pin-fbclk;
812 pinctrl-names = "default";
813 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
814 vmmc-supply = <&vmmc_regulator>;
815 };
816 };
817};