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>;
24 cache-size = <131072>;
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>;
34 /* Nomadik system timer */
35 compatible = "st,nomadik-mtu";
36 reg = <0x101e2000 0x1000>;
37 interrupt-parent = <&vica>;
39 clocks = <&timclk>, <&pclk>;
40 clock-names = "timclk", "apb_pclk";
45 reg = <0x101e3000 0x1000>;
46 interrupt-parent = <&vica>;
48 clocks = <&timclk>, <&pclk>;
49 clock-names = "timclk", "apb_pclk";
52 gpio0: gpio@101e4000 {
53 compatible = "st,nomadik-gpio";
54 reg = <0x101e4000 0x80>;
55 interrupt-parent = <&vica>;
58 #interrupt-cells = <2>;
62 gpio-ranges = <&pinctrl 0 0 32>;
66 gpio1: gpio@101e5000 {
67 compatible = "st,nomadik-gpio";
68 reg = <0x101e5000 0x80>;
69 interrupt-parent = <&vica>;
72 #interrupt-cells = <2>;
76 gpio-ranges = <&pinctrl 0 32 32>;
80 gpio2: gpio@101e6000 {
81 compatible = "st,nomadik-gpio";
82 reg = <0x101e6000 0x80>;
83 interrupt-parent = <&vica>;
86 #interrupt-cells = <2>;
90 gpio-ranges = <&pinctrl 0 64 32>;
94 gpio3: gpio@101e7000 {
95 compatible = "st,nomadik-gpio";
96 reg = <0x101e7000 0x80>;
98 interrupt-parent = <&vica>;
100 interrupt-controller;
101 #interrupt-cells = <2>;
105 gpio-ranges = <&pinctrl 0 96 28>;
110 compatible = "stericsson,stn8815-pinctrl";
111 nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
112 /* Pin configurations */
114 uart1_default_mux: uart1_mux {
122 mmcsd_default_mux: mmcsd_mux {
125 groups = "mmcsd_a_1", "mmcsd_b_1";
128 mmcsd_default_mode: mmcsd_default {
131 * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
132 * MCCMD, MCDAT3-0, MCMSFBCLK
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";
142 i2c0_default_mux: i2c0_mux {
148 i2c0_default_mode: i2c0_default {
150 pins = "GPIO62_D3", "GPIO63_D2";
156 i2c1_default_mux: i2c1_mux {
162 i2c1_default_mode: i2c1_default {
164 pins = "GPIO53_L4", "GPIO54_L3";
171 * This should be activated to use the additional
172 * 8 lines for bits 16 thru 23 from the CLCD block.
174 clcd_24bit_mux: clcd_mux {
177 groups = "clcd_16_23_b_1";
183 /* Power Management Unit */
185 compatible = "stericsson,nomadik-pmu", "syscon";
186 reg = <0x101e0000 0x1000>;
190 compatible = "stericsson,nomadik-src";
191 reg = <0x101e0000 0x1000>;
194 * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
195 * that is parent of TIMCLK, PLL1 and PLL2
199 compatible = "fixed-clock";
200 clock-frequency = <19200000>;
204 * The 2.4 MHz TIMCLK reference clock is active at
205 * boot time, this is actually the MXTALCLK @19.2 MHz
206 * divided by 8. This clock is used by the timers and
207 * watchdog. See page 105 ff.
209 timclk: timclk@2.4M {
211 compatible = "fixed-factor-clock";
217 /* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
220 compatible = "st,nomadik-pll-clock";
225 /* HCLK divides the PLL1 with 1,2,3 or 4 */
228 compatible = "st,nomadik-hclk-clock";
231 /* The PCLK domain uses HCLK right off */
234 compatible = "fixed-factor-clock";
240 /* PLL2 is usually 864 MHz and divided into a few fixed rates */
243 compatible = "st,nomadik-pll-clock";
247 clk216: clk216@216M {
249 compatible = "fixed-factor-clock";
254 clk108: clk108@108M {
256 compatible = "fixed-factor-clock";
263 compatible = "fixed-factor-clock";
264 /* The data sheet does not say how this is derived */
271 compatible = "fixed-factor-clock";
272 /* The data sheet does not say how this is derived */
279 compatible = "fixed-factor-clock";
285 /* This apparently exists as well */
286 ulpiclk: ulpiclk@60M {
288 compatible = "fixed-clock";
289 clock-frequency = <60000000>;
293 * IP AMBA bus clocks, driving the bus side of the
294 * peripheral clocking, clock gates.
297 hclkdma0: hclkdma0@48M {
299 compatible = "st,nomadik-src-clock";
303 hclksmc: hclksmc@48M {
305 compatible = "st,nomadik-src-clock";
309 hclksdram: hclksdram@48M {
311 compatible = "st,nomadik-src-clock";
315 hclkdma1: hclkdma1@48M {
317 compatible = "st,nomadik-src-clock";
321 hclkclcd: hclkclcd@48M {
323 compatible = "st,nomadik-src-clock";
327 pclkirda: pclkirda@48M {
329 compatible = "st,nomadik-src-clock";
333 pclkssp: pclkssp@48M {
335 compatible = "st,nomadik-src-clock";
339 pclkuart0: pclkuart0@48M {
341 compatible = "st,nomadik-src-clock";
345 pclksdi: pclksdi@48M {
347 compatible = "st,nomadik-src-clock";
351 pclki2c0: pclki2c0@48M {
353 compatible = "st,nomadik-src-clock";
357 pclki2c1: pclki2c1@48M {
359 compatible = "st,nomadik-src-clock";
363 pclkuart1: pclkuart1@48M {
365 compatible = "st,nomadik-src-clock";
369 pclkmsp0: pclkmsp0@48M {
371 compatible = "st,nomadik-src-clock";
375 hclkusb: hclkusb@48M {
377 compatible = "st,nomadik-src-clock";
381 hclkdif: hclkdif@48M {
383 compatible = "st,nomadik-src-clock";
387 hclksaa: hclksaa@48M {
389 compatible = "st,nomadik-src-clock";
393 hclksva: hclksva@48M {
395 compatible = "st,nomadik-src-clock";
399 pclkhsi: pclkhsi@48M {
401 compatible = "st,nomadik-src-clock";
405 pclkxti: pclkxti@48M {
407 compatible = "st,nomadik-src-clock";
411 pclkuart2: pclkuart2@48M {
413 compatible = "st,nomadik-src-clock";
417 pclkmsp1: pclkmsp1@48M {
419 compatible = "st,nomadik-src-clock";
423 pclkmsp2: pclkmsp2@48M {
425 compatible = "st,nomadik-src-clock";
429 pclkowm: pclkowm@48M {
431 compatible = "st,nomadik-src-clock";
435 hclkhpi: hclkhpi@48M {
437 compatible = "st,nomadik-src-clock";
441 pclkske: pclkske@48M {
443 compatible = "st,nomadik-src-clock";
447 pclkhsem: pclkhsem@48M {
449 compatible = "st,nomadik-src-clock";
455 compatible = "st,nomadik-src-clock";
459 hclkhash: hclkhash@48M {
461 compatible = "st,nomadik-src-clock";
465 hclkcryp: hclkcryp@48M {
467 compatible = "st,nomadik-src-clock";
471 pclkmshc: pclkmshc@48M {
473 compatible = "st,nomadik-src-clock";
477 hclkusbm: hclkusbm@48M {
479 compatible = "st,nomadik-src-clock";
483 hclkrng: hclkrng@48M {
485 compatible = "st,nomadik-src-clock";
490 /* IP kernel clocks */
493 compatible = "st,nomadik-src-clock";
495 clocks = <&clk72 &clk48>;
497 irdaclk: irdaclk@48M {
499 compatible = "st,nomadik-src-clock";
503 sspiclk: sspiclk@48M {
505 compatible = "st,nomadik-src-clock";
509 uart0clk: uart0clk@48M {
511 compatible = "st,nomadik-src-clock";
516 /* Also called MCCLK in some documents */
518 compatible = "st,nomadik-src-clock";
522 i2c0clk: i2c0clk@48M {
524 compatible = "st,nomadik-src-clock";
528 i2c1clk: i2c1clk@48M {
530 compatible = "st,nomadik-src-clock";
534 uart1clk: uart1clk@48M {
536 compatible = "st,nomadik-src-clock";
540 mspclk0: mspclk0@48M {
542 compatible = "st,nomadik-src-clock";
548 compatible = "st,nomadik-src-clock";
550 clocks = <&clk48>; /* 48 MHz not ULPI */
554 compatible = "st,nomadik-src-clock";
558 ipi2cclk: ipi2cclk@48M {
560 compatible = "st,nomadik-src-clock";
562 clocks = <&clk48>; /* Guess */
564 ipbmcclk: ipbmcclk@48M {
566 compatible = "st,nomadik-src-clock";
568 clocks = <&clk48>; /* Guess */
570 hsiclkrx: hsiclkrx@216M {
572 compatible = "st,nomadik-src-clock";
576 hsiclktx: hsiclktx@108M {
578 compatible = "st,nomadik-src-clock";
582 uart2clk: uart2clk@48M {
584 compatible = "st,nomadik-src-clock";
588 mspclk1: mspclk1@48M {
590 compatible = "st,nomadik-src-clock";
594 mspclk2: mspclk2@48M {
596 compatible = "st,nomadik-src-clock";
602 compatible = "st,nomadik-src-clock";
604 clocks = <&clk48>; /* Guess */
608 compatible = "st,nomadik-src-clock";
610 clocks = <&clk48>; /* Guess */
614 compatible = "st,nomadik-src-clock";
616 clocks = <&clk48>; /* Guess */
618 pclkmsp3: pclkmsp3@48M {
620 compatible = "st,nomadik-src-clock";
624 mspclk3: mspclk3@48M {
626 compatible = "st,nomadik-src-clock";
630 mshcclk: mshcclk@48M {
632 compatible = "st,nomadik-src-clock";
634 clocks = <&clk48>; /* Guess */
636 usbmclk: usbmclk@48M {
638 compatible = "st,nomadik-src-clock";
640 /* Stated as "48 MHz not ULPI clock" */
643 rngcclk: rngcclk@48M {
645 compatible = "st,nomadik-src-clock";
647 clocks = <&clk48>; /* Guess */
651 /* A NAND flash of 128 MiB */
652 fsmc: flash@40000000 {
653 compatible = "stericsson,fsmc-nand";
654 #address-cells = <1>;
656 reg = <0x10100000 0x1000>, /* FSMC Register*/
657 <0x40000000 0x2000>, /* NAND Base DATA */
658 <0x41000000 0x2000>, /* NAND Base ADDR */
659 <0x40800000 0x2000>; /* NAND Base CMD */
660 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
663 timings = /bits/ 8 <0 0 0 0x10 0x0a 0>;
666 label = "X-Loader(NAND)";
670 label = "MemInit(NAND)";
671 reg = <0x40000 0x40000>;
674 label = "BootLoader(NAND)";
675 reg = <0x80000 0x200000>;
678 label = "Kernel zImage(NAND)";
679 reg = <0x280000 0x300000>;
682 label = "Root Filesystem(NAND)";
683 reg = <0x580000 0x1600000>;
686 label = "User Filesystem(NAND)";
687 reg = <0x1b80000 0x6480000>;
691 /* I2C0 connected to the STw4811 power management chip */
693 compatible = "st,nomadik-i2c", "arm,primecell";
694 reg = <0x101f8000 0x1000>;
695 interrupt-parent = <&vica>;
697 clock-frequency = <100000>;
698 #address-cells = <1>;
700 clocks = <&i2c0clk>, <&pclki2c0>;
701 clock-names = "mclk", "apb_pclk";
702 pinctrl-names = "default";
703 pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
706 compatible = "st,stw4811";
708 vmmc_regulator: vmmc {
709 compatible = "st,stw481x-vmmc";
710 regulator-name = "VMMC";
711 regulator-min-microvolt = <1800000>;
712 regulator-max-microvolt = <3300000>;
717 /* I2C1 connected to various sensors */
719 compatible = "st,nomadik-i2c", "arm,primecell";
720 reg = <0x101f7000 0x1000>;
721 interrupt-parent = <&vica>;
723 clock-frequency = <100000>;
724 #address-cells = <1>;
726 clocks = <&i2c1clk>, <&pclki2c1>;
727 clock-names = "mclk", "apb_pclk";
728 pinctrl-names = "default";
729 pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
732 compatible = "st,camera";
736 compatible = "st,stw5095";
742 compatible = "simple-bus";
743 #address-cells = <1>;
748 compatible = "arm,pl110", "arm,primecell";
749 reg = <0x10120000 0x1000>;
750 interrupt-names = "combined";
752 clocks = <&clcdclk>, <&hclkclcd>;
753 clock-names = "clcdclk", "apb_pclk";
757 vica: intc@10140000 {
758 compatible = "arm,versatile-vic";
759 interrupt-controller;
760 #interrupt-cells = <1>;
761 reg = <0x10140000 0x20>;
764 vicb: intc@10140020 {
765 compatible = "arm,versatile-vic";
766 interrupt-controller;
767 #interrupt-cells = <1>;
768 reg = <0x10140020 0x20>;
771 uart0: uart@101fd000 {
772 compatible = "arm,pl011", "arm,primecell";
773 reg = <0x101fd000 0x1000>;
774 interrupt-parent = <&vica>;
776 clocks = <&uart0clk>, <&pclkuart0>;
777 clock-names = "uartclk", "apb_pclk";
779 dmas = <&dmac0 14 1>,
781 dma-names = "rx", "tx";
784 uart1: uart@101fb000 {
785 compatible = "arm,pl011", "arm,primecell";
786 reg = <0x101fb000 0x1000>;
787 interrupt-parent = <&vica>;
789 clocks = <&uart1clk>, <&pclkuart1>;
790 clock-names = "uartclk", "apb_pclk";
791 pinctrl-names = "default";
792 pinctrl-0 = <&uart1_default_mux>;
793 dmas = <&dmac1 22 1>,
795 dma-names = "rx", "tx";
798 uart2: uart@101f2000 {
799 compatible = "arm,pl011", "arm,primecell";
800 reg = <0x101f2000 0x1000>;
801 interrupt-parent = <&vica>;
803 clocks = <&uart2clk>, <&pclkuart2>;
804 clock-names = "uartclk", "apb_pclk";
806 dmas = <&dmac1 30 1>,
808 dma-names = "rx", "tx";
812 compatible = "arm,primecell";
813 reg = <0x101b0000 0x1000>;
814 clocks = <&rngcclk>, <&hclkrng>;
815 clock-names = "rng", "apb_pclk";
819 compatible = "arm,pl031", "arm,primecell";
820 reg = <0x101e8000 0x1000>;
822 clock-names = "apb_pclk";
823 interrupt-parent = <&vica>;
827 mmcsd: sdi@101f6000 {
828 compatible = "arm,pl18x", "arm,primecell";
829 reg = <0x101f6000 0x1000>;
830 clocks = <&sdiclk>, <&pclksdi>;
831 clock-names = "mclk", "apb_pclk";
832 interrupt-parent = <&vica>;
834 max-frequency = <400000>;
840 * The STw4811 circuit used with the Nomadik strictly
841 * requires that all of these signal direction pins be
842 * routed and used for its 4-bit levelshifter.
849 pinctrl-names = "default";
850 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
851 vmmc-supply = <&vmmc_regulator>;
854 dmac0: dma-controller@10130000 {
855 compatible = "arm,pl080", "arm,primecell";
856 reg = <0x10130000 0x1000>;
857 interrupt-parent = <&vica>;
859 clocks = <&hclkdma0>;
860 clock-names = "apb_pclk";
861 lli-bus-interface-ahb1;
862 lli-bus-interface-ahb2;
863 mem-bus-interface-ahb2;
864 memcpy-burst-size = <256>;
865 memcpy-bus-width = <32>;
868 dmac1: dma-controller@10150000 {
869 compatible = "arm,pl080", "arm,primecell";
870 reg = <0x10150000 0x1000>;
871 interrupt-parent = <&vica>;
873 clocks = <&hclkdma1>;
874 clock-names = "apb_pclk";
875 lli-bus-interface-ahb1;
876 lli-bus-interface-ahb2;
877 mem-bus-interface-ahb2;
878 memcpy-burst-size = <256>;
879 memcpy-bus-width = <32>;