2 * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
5 #include <dt-bindings/gpio/gpio.h>
6 #include "skeleton.dtsi"
13 reg = <0x00000000 0x04000000>,
14 <0x08000000 0x04000000>;
18 compatible = "arm,l210-cache";
19 reg = <0x10210000 0x1000>;
20 interrupt-parent = <&vica>;
27 /* Nomadik system timer */
28 compatible = "st,nomadik-mtu";
29 reg = <0x101e2000 0x1000>;
30 interrupt-parent = <&vica>;
32 clocks = <&timclk>, <&pclk>;
33 clock-names = "timclk", "apb_pclk";
38 reg = <0x101e3000 0x1000>;
39 interrupt-parent = <&vica>;
41 clocks = <&timclk>, <&pclk>;
42 clock-names = "timclk", "apb_pclk";
45 gpio0: gpio@101e4000 {
46 compatible = "st,nomadik-gpio";
47 reg = <0x101e4000 0x80>;
48 interrupt-parent = <&vica>;
51 #interrupt-cells = <2>;
58 gpio1: gpio@101e5000 {
59 compatible = "st,nomadik-gpio";
60 reg = <0x101e5000 0x80>;
61 interrupt-parent = <&vica>;
64 #interrupt-cells = <2>;
71 gpio2: gpio@101e6000 {
72 compatible = "st,nomadik-gpio";
73 reg = <0x101e6000 0x80>;
74 interrupt-parent = <&vica>;
77 #interrupt-cells = <2>;
84 gpio3: gpio@101e7000 {
85 compatible = "st,nomadik-gpio";
86 reg = <0x101e7000 0x80>;
87 interrupt-parent = <&vica>;
90 #interrupt-cells = <2>;
98 compatible = "stericsson,stn8815-pinctrl";
99 /* Pin configurations */
101 uart0_default_mux: uart0_mux {
109 uart1_default_mux: uart1_mux {
117 mmcsd_default_mux: mmcsd_mux {
120 groups = "mmcsd_a_1", "mmcsd_b_1";
123 mmcsd_default_mode: mmcsd_default {
130 /* MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2 */
131 pins = "GPIO10_C11", "GPIO15_A12",
132 "GPIO16_C13", "GPIO23_D15";
136 /* MCCMD, MCDAT3-0, MCMSFBCLK */
137 pins = "GPIO9_A10", "GPIO11_B11",
138 "GPIO12_A11", "GPIO13_C12",
139 "GPIO14_B12", "GPIO24_C15";
145 i2c0_default_mux: i2c0_mux {
151 i2c0_default_mode: i2c0_default {
153 pins = "GPIO62_D3", "GPIO63_D2";
159 i2c1_default_mux: i2c1_mux {
165 i2c1_default_mode: i2c1_default {
167 pins = "GPIO53_L4", "GPIO54_L3";
175 compatible = "stericsson,nomadik-src";
176 reg = <0x101e0000 0x1000>;
179 * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
180 * that is parent of TIMCLK, PLL1 and PLL2
184 compatible = "fixed-clock";
185 clock-frequency = <19200000>;
189 * The 2.4 MHz TIMCLK reference clock is active at
190 * boot time, this is actually the MXTALCLK @19.2 MHz
191 * divided by 8. This clock is used by the timers and
192 * watchdog. See page 105 ff.
194 timclk: timclk@2.4M {
196 compatible = "fixed-factor-clock";
202 /* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
205 compatible = "st,nomadik-pll-clock";
210 /* HCLK divides the PLL1 with 1,2,3 or 4 */
213 compatible = "st,nomadik-hclk-clock";
216 /* The PCLK domain uses HCLK right off */
219 compatible = "fixed-factor-clock";
225 /* PLL2 is usually 864 MHz and divided into a few fixed rates */
228 compatible = "st,nomadik-pll-clock";
232 clk216: clk216@216M {
234 compatible = "fixed-factor-clock";
239 clk108: clk108@108M {
241 compatible = "fixed-factor-clock";
248 compatible = "fixed-factor-clock";
249 /* The data sheet does not say how this is derived */
256 compatible = "fixed-factor-clock";
257 /* The data sheet does not say how this is derived */
264 compatible = "fixed-factor-clock";
270 /* This apparently exists as well */
271 ulpiclk: ulpiclk@60M {
273 compatible = "fixed-clock";
274 clock-frequency = <60000000>;
278 * IP AMBA bus clocks, driving the bus side of the
279 * peripheral clocking, clock gates.
282 hclkdma0: hclkdma0@48M {
284 compatible = "st,nomadik-src-clock";
288 hclksmc: hclksmc@48M {
290 compatible = "st,nomadik-src-clock";
294 hclksdram: hclksdram@48M {
296 compatible = "st,nomadik-src-clock";
300 hclkdma1: hclkdma1@48M {
302 compatible = "st,nomadik-src-clock";
306 hclkclcd: hclkclcd@48M {
308 compatible = "st,nomadik-src-clock";
312 pclkirda: pclkirda@48M {
314 compatible = "st,nomadik-src-clock";
318 pclkssp: pclkssp@48M {
320 compatible = "st,nomadik-src-clock";
324 pclkuart0: pclkuart0@48M {
326 compatible = "st,nomadik-src-clock";
330 pclksdi: pclksdi@48M {
332 compatible = "st,nomadik-src-clock";
336 pclki2c0: pclki2c0@48M {
338 compatible = "st,nomadik-src-clock";
342 pclki2c1: pclki2c1@48M {
344 compatible = "st,nomadik-src-clock";
348 pclkuart1: pclkuart1@48M {
350 compatible = "st,nomadik-src-clock";
354 pclkmsp0: pclkmsp0@48M {
356 compatible = "st,nomadik-src-clock";
360 hclkusb: hclkusb@48M {
362 compatible = "st,nomadik-src-clock";
366 hclkdif: hclkdif@48M {
368 compatible = "st,nomadik-src-clock";
372 hclksaa: hclksaa@48M {
374 compatible = "st,nomadik-src-clock";
378 hclksva: hclksva@48M {
380 compatible = "st,nomadik-src-clock";
384 pclkhsi: pclkhsi@48M {
386 compatible = "st,nomadik-src-clock";
390 pclkxti: pclkxti@48M {
392 compatible = "st,nomadik-src-clock";
396 pclkuart2: pclkuart2@48M {
398 compatible = "st,nomadik-src-clock";
402 pclkmsp1: pclkmsp1@48M {
404 compatible = "st,nomadik-src-clock";
408 pclkmsp2: pclkmsp2@48M {
410 compatible = "st,nomadik-src-clock";
414 pclkowm: pclkowm@48M {
416 compatible = "st,nomadik-src-clock";
420 hclkhpi: hclkhpi@48M {
422 compatible = "st,nomadik-src-clock";
426 pclkske: pclkske@48M {
428 compatible = "st,nomadik-src-clock";
432 pclkhsem: pclkhsem@48M {
434 compatible = "st,nomadik-src-clock";
440 compatible = "st,nomadik-src-clock";
444 hclkhash: hclkhash@48M {
446 compatible = "st,nomadik-src-clock";
450 hclkcryp: hclkcryp@48M {
452 compatible = "st,nomadik-src-clock";
456 pclkmshc: pclkmshc@48M {
458 compatible = "st,nomadik-src-clock";
462 hclkusbm: hclkusbm@48M {
464 compatible = "st,nomadik-src-clock";
468 hclkrng: hclkrng@48M {
470 compatible = "st,nomadik-src-clock";
475 /* IP kernel clocks */
478 compatible = "st,nomadik-src-clock";
480 clocks = <&clk72 &clk48>;
482 irdaclk: irdaclk@48M {
484 compatible = "st,nomadik-src-clock";
488 sspiclk: sspiclk@48M {
490 compatible = "st,nomadik-src-clock";
494 uart0clk: uart0clk@48M {
496 compatible = "st,nomadik-src-clock";
501 /* Also called MCCLK in some documents */
503 compatible = "st,nomadik-src-clock";
507 i2c0clk: i2c0clk@48M {
509 compatible = "st,nomadik-src-clock";
513 i2c1clk: i2c1clk@48M {
515 compatible = "st,nomadik-src-clock";
519 uart1clk: uart1clk@48M {
521 compatible = "st,nomadik-src-clock";
525 mspclk0: mspclk0@48M {
527 compatible = "st,nomadik-src-clock";
533 compatible = "st,nomadik-src-clock";
535 clocks = <&clk48>; /* 48 MHz not ULPI */
539 compatible = "st,nomadik-src-clock";
543 ipi2cclk: ipi2cclk@48M {
545 compatible = "st,nomadik-src-clock";
547 clocks = <&clk48>; /* Guess */
549 ipbmcclk: ipbmcclk@48M {
551 compatible = "st,nomadik-src-clock";
553 clocks = <&clk48>; /* Guess */
555 hsiclkrx: hsiclkrx@216M {
557 compatible = "st,nomadik-src-clock";
561 hsiclktx: hsiclktx@108M {
563 compatible = "st,nomadik-src-clock";
567 uart2clk: uart2clk@48M {
569 compatible = "st,nomadik-src-clock";
573 mspclk1: mspclk1@48M {
575 compatible = "st,nomadik-src-clock";
579 mspclk2: mspclk2@48M {
581 compatible = "st,nomadik-src-clock";
587 compatible = "st,nomadik-src-clock";
589 clocks = <&clk48>; /* Guess */
593 compatible = "st,nomadik-src-clock";
595 clocks = <&clk48>; /* Guess */
599 compatible = "st,nomadik-src-clock";
601 clocks = <&clk48>; /* Guess */
603 pclkmsp3: pclkmsp3@48M {
605 compatible = "st,nomadik-src-clock";
609 mspclk3: mspclk3@48M {
611 compatible = "st,nomadik-src-clock";
615 mshcclk: mshcclk@48M {
617 compatible = "st,nomadik-src-clock";
619 clocks = <&clk48>; /* Guess */
621 usbmclk: usbmclk@48M {
623 compatible = "st,nomadik-src-clock";
625 /* Stated as "48 MHz not ULPI clock" */
628 rngcclk: rngcclk@48M {
630 compatible = "st,nomadik-src-clock";
632 clocks = <&clk48>; /* Guess */
636 /* A NAND flash of 128 MiB */
637 fsmc: flash@40000000 {
638 compatible = "stericsson,fsmc-nand";
639 #address-cells = <1>;
641 reg = <0x10100000 0x1000>, /* FSMC Register*/
642 <0x40000000 0x2000>, /* NAND Base DATA */
643 <0x41000000 0x2000>, /* NAND Base ADDR */
644 <0x40800000 0x2000>; /* NAND Base CMD */
645 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
648 timings = /bits/ 8 <0 0 0 0x10 0x0a 0>;
651 label = "X-Loader(NAND)";
655 label = "MemInit(NAND)";
656 reg = <0x40000 0x40000>;
659 label = "BootLoader(NAND)";
660 reg = <0x80000 0x200000>;
663 label = "Kernel zImage(NAND)";
664 reg = <0x280000 0x300000>;
667 label = "Root Filesystem(NAND)";
668 reg = <0x580000 0x1600000>;
671 label = "User Filesystem(NAND)";
672 reg = <0x1b80000 0x6480000>;
676 /* I2C0 connected to the STw4811 power management chip */
678 compatible = "st,nomadik-i2c", "arm,primecell";
679 reg = <0x101f8000 0x1000>;
680 interrupt-parent = <&vica>;
682 clock-frequency = <100000>;
683 #address-cells = <1>;
685 clocks = <&i2c0clk>, <&pclki2c0>;
686 clock-names = "mclk", "apb_pclk";
687 pinctrl-names = "default";
688 pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
691 compatible = "st,stw4811";
693 vmmc_regulator: vmmc {
694 compatible = "st,stw481x-vmmc";
695 regulator-name = "VMMC";
696 regulator-min-microvolt = <1800000>;
697 regulator-max-microvolt = <3300000>;
702 /* I2C1 connected to various sensors */
704 compatible = "st,nomadik-i2c", "arm,primecell";
705 reg = <0x101f7000 0x1000>;
706 interrupt-parent = <&vica>;
708 clock-frequency = <100000>;
709 #address-cells = <1>;
711 clocks = <&i2c1clk>, <&pclki2c1>;
712 clock-names = "mclk", "apb_pclk";
713 pinctrl-names = "default";
714 pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
717 compatible = "st,camera";
721 compatible = "st,stw5095";
726 compatible = "st,lis3lv02dl-accel";
732 compatible = "arm,amba-bus";
733 #address-cells = <1>;
737 vica: intc@10140000 {
738 compatible = "arm,versatile-vic";
739 interrupt-controller;
740 #interrupt-cells = <1>;
741 reg = <0x10140000 0x20>;
744 vicb: intc@10140020 {
745 compatible = "arm,versatile-vic";
746 interrupt-controller;
747 #interrupt-cells = <1>;
748 reg = <0x10140020 0x20>;
751 uart0: uart@101fd000 {
752 compatible = "arm,pl011", "arm,primecell";
753 reg = <0x101fd000 0x1000>;
754 interrupt-parent = <&vica>;
756 clocks = <&uart0clk>, <&pclkuart0>;
757 clock-names = "uartclk", "apb_pclk";
758 pinctrl-names = "default";
759 pinctrl-0 = <&uart0_default_mux>;
763 uart1: uart@101fb000 {
764 compatible = "arm,pl011", "arm,primecell";
765 reg = <0x101fb000 0x1000>;
766 interrupt-parent = <&vica>;
768 clocks = <&uart1clk>, <&pclkuart1>;
769 clock-names = "uartclk", "apb_pclk";
770 pinctrl-names = "default";
771 pinctrl-0 = <&uart1_default_mux>;
774 uart2: uart@101f2000 {
775 compatible = "arm,pl011", "arm,primecell";
776 reg = <0x101f2000 0x1000>;
777 interrupt-parent = <&vica>;
779 clocks = <&uart2clk>, <&pclkuart2>;
780 clock-names = "uartclk", "apb_pclk";
785 compatible = "arm,primecell";
786 reg = <0x101b0000 0x1000>;
787 clocks = <&rngcclk>, <&hclkrng>;
788 clock-names = "rng", "apb_pclk";
792 compatible = "arm,pl031", "arm,primecell";
793 reg = <0x101e8000 0x1000>;
795 clock-names = "apb_pclk";
796 interrupt-parent = <&vica>;
800 mmcsd: sdi@101f6000 {
801 compatible = "arm,pl18x", "arm,primecell";
802 reg = <0x101f6000 0x1000>;
803 clocks = <&sdiclk>, <&pclksdi>;
804 clock-names = "mclk", "apb_pclk";
805 interrupt-parent = <&vica>;
807 max-frequency = <48000000>;
811 pinctrl-names = "default";
812 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
813 vmmc-supply = <&vmmc_regulator>;