0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003 * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
0004 */
0005
0006 #include <dt-bindings/gpio/gpio.h>
0007
0008 / {
0009 #address-cells = <1>;
0010 #size-cells = <1>;
0011
0012 memory {
0013 device_type = "memory";
0014 reg = <0x00000000 0x04000000>,
0015 <0x08000000 0x04000000>;
0016 };
0017
0018 L2: cache-controller {
0019 compatible = "arm,l210-cache";
0020 reg = <0x10210000 0x1000>;
0021 interrupt-parent = <&vica>;
0022 interrupts = <30>;
0023 cache-unified;
0024 cache-level = <2>;
0025 cache-size = <131072>;
0026 cache-sets = <512>;
0027 cache-line-size = <32>;
0028 /* At full speed latency must be >=2 */
0029 arm,tag-latency = <8>;
0030 arm,data-latency = <8 8>;
0031 arm,dirty-latency = <8>;
0032 };
0033
0034 mtu0: mtu@101e2000 {
0035 /* Nomadik system timer */
0036 compatible = "st,nomadik-mtu";
0037 reg = <0x101e2000 0x1000>;
0038 interrupt-parent = <&vica>;
0039 interrupts = <4>;
0040 clocks = <&timclk>, <&pclk>;
0041 clock-names = "timclk", "apb_pclk";
0042 };
0043
0044 mtu1: mtu@101e3000 {
0045 /* Secondary timer */
0046 reg = <0x101e3000 0x1000>;
0047 interrupt-parent = <&vica>;
0048 interrupts = <5>;
0049 clocks = <&timclk>, <&pclk>;
0050 clock-names = "timclk", "apb_pclk";
0051 };
0052
0053 gpio0: gpio@101e4000 {
0054 compatible = "st,nomadik-gpio";
0055 reg = <0x101e4000 0x80>;
0056 interrupt-parent = <&vica>;
0057 interrupts = <6>;
0058 interrupt-controller;
0059 #interrupt-cells = <2>;
0060 gpio-controller;
0061 #gpio-cells = <2>;
0062 gpio-bank = <0>;
0063 gpio-ranges = <&pinctrl 0 0 32>;
0064 clocks = <&pclk>;
0065 };
0066
0067 gpio1: gpio@101e5000 {
0068 compatible = "st,nomadik-gpio";
0069 reg = <0x101e5000 0x80>;
0070 interrupt-parent = <&vica>;
0071 interrupts = <7>;
0072 interrupt-controller;
0073 #interrupt-cells = <2>;
0074 gpio-controller;
0075 #gpio-cells = <2>;
0076 gpio-bank = <1>;
0077 gpio-ranges = <&pinctrl 0 32 32>;
0078 clocks = <&pclk>;
0079 };
0080
0081 gpio2: gpio@101e6000 {
0082 compatible = "st,nomadik-gpio";
0083 reg = <0x101e6000 0x80>;
0084 interrupt-parent = <&vica>;
0085 interrupts = <8>;
0086 interrupt-controller;
0087 #interrupt-cells = <2>;
0088 gpio-controller;
0089 #gpio-cells = <2>;
0090 gpio-bank = <2>;
0091 gpio-ranges = <&pinctrl 0 64 32>;
0092 clocks = <&pclk>;
0093 };
0094
0095 gpio3: gpio@101e7000 {
0096 compatible = "st,nomadik-gpio";
0097 reg = <0x101e7000 0x80>;
0098 ngpio = <28>;
0099 interrupt-parent = <&vica>;
0100 interrupts = <9>;
0101 interrupt-controller;
0102 #interrupt-cells = <2>;
0103 gpio-controller;
0104 #gpio-cells = <2>;
0105 gpio-bank = <3>;
0106 gpio-ranges = <&pinctrl 0 96 28>;
0107 clocks = <&pclk>;
0108 };
0109
0110 pinctrl: pinctrl {
0111 compatible = "stericsson,stn8815-pinctrl";
0112 nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
0113 /* Pin configurations */
0114 uart1 {
0115 uart1_default_mux: uart1_mux {
0116 u1_default_mux {
0117 function = "u1";
0118 groups = "u1_a_1";
0119 };
0120 };
0121 };
0122 mmcsd {
0123 mmcsd_default_mux: mmcsd_mux {
0124 mmcsd_default_mux {
0125 function = "mmcsd";
0126 groups = "mmcsd_a_1", "mmcsd_b_1";
0127 };
0128 };
0129 mmcsd_default_mode: mmcsd_default {
0130 mmcsd_default_cfg1 {
0131 /*
0132 * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
0133 * MCCMD, MCDAT3-0, MCMSFBCLK
0134 */
0135 pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
0136 "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
0137 "GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
0138 ste,output = <2>;
0139 };
0140 };
0141 };
0142 i2c0 {
0143 i2c0_default_mux: i2c0_mux {
0144 i2c0_default_mux {
0145 function = "i2c0";
0146 groups = "i2c0_a_1";
0147 };
0148 };
0149 i2c0_default_mode: i2c0_default {
0150 i2c0_default_cfg {
0151 pins = "GPIO62_D3", "GPIO63_D2";
0152 ste,input = <0>;
0153 };
0154 };
0155 };
0156 i2c1 {
0157 i2c1_default_mux: i2c1_mux {
0158 i2c1_default_mux {
0159 function = "i2c1";
0160 groups = "i2c1_a_1";
0161 };
0162 };
0163 i2c1_default_mode: i2c1_default {
0164 i2c1_default_cfg {
0165 pins = "GPIO53_L4", "GPIO54_L3";
0166 ste,input = <0>;
0167 };
0168 };
0169 };
0170 clcd {
0171 /*
0172 * This should be activated to use the additional
0173 * 8 lines for bits 16 thru 23 from the CLCD block.
0174 */
0175 clcd_24bit_mux: clcd_mux {
0176 clcd_24bit_mux {
0177 function = "clcd";
0178 groups = "clcd_16_23_b_1";
0179 };
0180 };
0181 };
0182 };
0183
0184 /* Power Management Unit */
0185 pmu: pmu@101e9000 {
0186 compatible = "stericsson,nomadik-pmu", "syscon";
0187 reg = <0x101e0000 0x1000>;
0188 };
0189
0190 src: src@101e0000 {
0191 compatible = "stericsson,nomadik-src";
0192 reg = <0x101e0000 0x1000>;
0193
0194 /*
0195 * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
0196 * that is parent of TIMCLK, PLL1 and PLL2
0197 */
0198 mxtal: mxtal@19.2M {
0199 #clock-cells = <0>;
0200 compatible = "fixed-clock";
0201 clock-frequency = <19200000>;
0202 };
0203
0204 /*
0205 * The 2.4 MHz TIMCLK reference clock is active at
0206 * boot time, this is actually the MXTALCLK @19.2 MHz
0207 * divided by 8. This clock is used by the timers and
0208 * watchdog. See page 105 ff.
0209 */
0210 timclk: timclk@2.4M {
0211 #clock-cells = <0>;
0212 compatible = "fixed-factor-clock";
0213 clock-div = <8>;
0214 clock-mult = <1>;
0215 clocks = <&mxtal>;
0216 };
0217
0218 /* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
0219 pll1: pll1@0 {
0220 #clock-cells = <0>;
0221 compatible = "st,nomadik-pll-clock";
0222 pll-id = <1>;
0223 clocks = <&mxtal>;
0224 };
0225
0226 /* HCLK divides the PLL1 with 1,2,3 or 4 */
0227 hclk: hclk@0 {
0228 #clock-cells = <0>;
0229 compatible = "st,nomadik-hclk-clock";
0230 clocks = <&pll1>;
0231 };
0232 /* The PCLK domain uses HCLK right off */
0233 pclk: pclk@0 {
0234 #clock-cells = <0>;
0235 compatible = "fixed-factor-clock";
0236 clock-div = <1>;
0237 clock-mult = <1>;
0238 clocks = <&hclk>;
0239 };
0240
0241 /* PLL2 is usually 864 MHz and divided into a few fixed rates */
0242 pll2: pll2@0 {
0243 #clock-cells = <0>;
0244 compatible = "st,nomadik-pll-clock";
0245 pll-id = <2>;
0246 clocks = <&mxtal>;
0247 };
0248 clk216: clk216@216M {
0249 #clock-cells = <0>;
0250 compatible = "fixed-factor-clock";
0251 clock-div = <4>;
0252 clock-mult = <1>;
0253 clocks = <&pll2>;
0254 };
0255 clk108: clk108@108M {
0256 #clock-cells = <0>;
0257 compatible = "fixed-factor-clock";
0258 clock-div = <2>;
0259 clock-mult = <1>;
0260 clocks = <&clk216>;
0261 };
0262 clk72: clk72@72M {
0263 #clock-cells = <0>;
0264 compatible = "fixed-factor-clock";
0265 /* The data sheet does not say how this is derived */
0266 clock-div = <12>;
0267 clock-mult = <1>;
0268 clocks = <&pll2>;
0269 };
0270 clk48: clk48@48M {
0271 #clock-cells = <0>;
0272 compatible = "fixed-factor-clock";
0273 /* The data sheet does not say how this is derived */
0274 clock-div = <18>;
0275 clock-mult = <1>;
0276 clocks = <&pll2>;
0277 };
0278 clk27: clk27@27M {
0279 #clock-cells = <0>;
0280 compatible = "fixed-factor-clock";
0281 clock-div = <4>;
0282 clock-mult = <1>;
0283 clocks = <&clk108>;
0284 };
0285
0286 /* This apparently exists as well */
0287 ulpiclk: ulpiclk@60M {
0288 #clock-cells = <0>;
0289 compatible = "fixed-clock";
0290 clock-frequency = <60000000>;
0291 };
0292
0293 /*
0294 * IP AMBA bus clocks, driving the bus side of the
0295 * peripheral clocking, clock gates.
0296 */
0297
0298 hclkdma0: hclkdma0@48M {
0299 #clock-cells = <0>;
0300 compatible = "st,nomadik-src-clock";
0301 clock-id = <0>;
0302 clocks = <&hclk>;
0303 };
0304 hclksmc: hclksmc@48M {
0305 #clock-cells = <0>;
0306 compatible = "st,nomadik-src-clock";
0307 clock-id = <1>;
0308 clocks = <&hclk>;
0309 };
0310 hclksdram: hclksdram@48M {
0311 #clock-cells = <0>;
0312 compatible = "st,nomadik-src-clock";
0313 clock-id = <2>;
0314 clocks = <&hclk>;
0315 };
0316 hclkdma1: hclkdma1@48M {
0317 #clock-cells = <0>;
0318 compatible = "st,nomadik-src-clock";
0319 clock-id = <3>;
0320 clocks = <&hclk>;
0321 };
0322 hclkclcd: hclkclcd@48M {
0323 #clock-cells = <0>;
0324 compatible = "st,nomadik-src-clock";
0325 clock-id = <4>;
0326 clocks = <&hclk>;
0327 };
0328 pclkirda: pclkirda@48M {
0329 #clock-cells = <0>;
0330 compatible = "st,nomadik-src-clock";
0331 clock-id = <5>;
0332 clocks = <&pclk>;
0333 };
0334 pclkssp: pclkssp@48M {
0335 #clock-cells = <0>;
0336 compatible = "st,nomadik-src-clock";
0337 clock-id = <6>;
0338 clocks = <&pclk>;
0339 };
0340 pclkuart0: pclkuart0@48M {
0341 #clock-cells = <0>;
0342 compatible = "st,nomadik-src-clock";
0343 clock-id = <7>;
0344 clocks = <&pclk>;
0345 };
0346 pclksdi: pclksdi@48M {
0347 #clock-cells = <0>;
0348 compatible = "st,nomadik-src-clock";
0349 clock-id = <8>;
0350 clocks = <&pclk>;
0351 };
0352 pclki2c0: pclki2c0@48M {
0353 #clock-cells = <0>;
0354 compatible = "st,nomadik-src-clock";
0355 clock-id = <9>;
0356 clocks = <&pclk>;
0357 };
0358 pclki2c1: pclki2c1@48M {
0359 #clock-cells = <0>;
0360 compatible = "st,nomadik-src-clock";
0361 clock-id = <10>;
0362 clocks = <&pclk>;
0363 };
0364 pclkuart1: pclkuart1@48M {
0365 #clock-cells = <0>;
0366 compatible = "st,nomadik-src-clock";
0367 clock-id = <11>;
0368 clocks = <&pclk>;
0369 };
0370 pclkmsp0: pclkmsp0@48M {
0371 #clock-cells = <0>;
0372 compatible = "st,nomadik-src-clock";
0373 clock-id = <12>;
0374 clocks = <&pclk>;
0375 };
0376 hclkusb: hclkusb@48M {
0377 #clock-cells = <0>;
0378 compatible = "st,nomadik-src-clock";
0379 clock-id = <13>;
0380 clocks = <&hclk>;
0381 };
0382 hclkdif: hclkdif@48M {
0383 #clock-cells = <0>;
0384 compatible = "st,nomadik-src-clock";
0385 clock-id = <14>;
0386 clocks = <&hclk>;
0387 };
0388 hclksaa: hclksaa@48M {
0389 #clock-cells = <0>;
0390 compatible = "st,nomadik-src-clock";
0391 clock-id = <15>;
0392 clocks = <&hclk>;
0393 };
0394 hclksva: hclksva@48M {
0395 #clock-cells = <0>;
0396 compatible = "st,nomadik-src-clock";
0397 clock-id = <16>;
0398 clocks = <&hclk>;
0399 };
0400 pclkhsi: pclkhsi@48M {
0401 #clock-cells = <0>;
0402 compatible = "st,nomadik-src-clock";
0403 clock-id = <17>;
0404 clocks = <&pclk>;
0405 };
0406 pclkxti: pclkxti@48M {
0407 #clock-cells = <0>;
0408 compatible = "st,nomadik-src-clock";
0409 clock-id = <18>;
0410 clocks = <&pclk>;
0411 };
0412 pclkuart2: pclkuart2@48M {
0413 #clock-cells = <0>;
0414 compatible = "st,nomadik-src-clock";
0415 clock-id = <19>;
0416 clocks = <&pclk>;
0417 };
0418 pclkmsp1: pclkmsp1@48M {
0419 #clock-cells = <0>;
0420 compatible = "st,nomadik-src-clock";
0421 clock-id = <20>;
0422 clocks = <&pclk>;
0423 };
0424 pclkmsp2: pclkmsp2@48M {
0425 #clock-cells = <0>;
0426 compatible = "st,nomadik-src-clock";
0427 clock-id = <21>;
0428 clocks = <&pclk>;
0429 };
0430 pclkowm: pclkowm@48M {
0431 #clock-cells = <0>;
0432 compatible = "st,nomadik-src-clock";
0433 clock-id = <22>;
0434 clocks = <&pclk>;
0435 };
0436 hclkhpi: hclkhpi@48M {
0437 #clock-cells = <0>;
0438 compatible = "st,nomadik-src-clock";
0439 clock-id = <23>;
0440 clocks = <&hclk>;
0441 };
0442 pclkske: pclkske@48M {
0443 #clock-cells = <0>;
0444 compatible = "st,nomadik-src-clock";
0445 clock-id = <24>;
0446 clocks = <&pclk>;
0447 };
0448 pclkhsem: pclkhsem@48M {
0449 #clock-cells = <0>;
0450 compatible = "st,nomadik-src-clock";
0451 clock-id = <25>;
0452 clocks = <&pclk>;
0453 };
0454 hclk3d: hclk3d@48M {
0455 #clock-cells = <0>;
0456 compatible = "st,nomadik-src-clock";
0457 clock-id = <26>;
0458 clocks = <&hclk>;
0459 };
0460 hclkhash: hclkhash@48M {
0461 #clock-cells = <0>;
0462 compatible = "st,nomadik-src-clock";
0463 clock-id = <27>;
0464 clocks = <&hclk>;
0465 };
0466 hclkcryp: hclkcryp@48M {
0467 #clock-cells = <0>;
0468 compatible = "st,nomadik-src-clock";
0469 clock-id = <28>;
0470 clocks = <&hclk>;
0471 };
0472 pclkmshc: pclkmshc@48M {
0473 #clock-cells = <0>;
0474 compatible = "st,nomadik-src-clock";
0475 clock-id = <29>;
0476 clocks = <&pclk>;
0477 };
0478 hclkusbm: hclkusbm@48M {
0479 #clock-cells = <0>;
0480 compatible = "st,nomadik-src-clock";
0481 clock-id = <30>;
0482 clocks = <&hclk>;
0483 };
0484 hclkrng: hclkrng@48M {
0485 #clock-cells = <0>;
0486 compatible = "st,nomadik-src-clock";
0487 clock-id = <31>;
0488 clocks = <&hclk>;
0489 };
0490
0491 /* IP kernel clocks */
0492 clcdclk: clcdclk@0 {
0493 #clock-cells = <0>;
0494 compatible = "st,nomadik-src-clock";
0495 clock-id = <36>;
0496 clocks = <&clk72 &clk48>;
0497 };
0498 irdaclk: irdaclk@48M {
0499 #clock-cells = <0>;
0500 compatible = "st,nomadik-src-clock";
0501 clock-id = <37>;
0502 clocks = <&clk48>;
0503 };
0504 sspiclk: sspiclk@48M {
0505 #clock-cells = <0>;
0506 compatible = "st,nomadik-src-clock";
0507 clock-id = <38>;
0508 clocks = <&clk48>;
0509 };
0510 uart0clk: uart0clk@48M {
0511 #clock-cells = <0>;
0512 compatible = "st,nomadik-src-clock";
0513 clock-id = <39>;
0514 clocks = <&clk48>;
0515 };
0516 sdiclk: sdiclk@48M {
0517 /* Also called MCCLK in some documents */
0518 #clock-cells = <0>;
0519 compatible = "st,nomadik-src-clock";
0520 clock-id = <40>;
0521 clocks = <&clk48>;
0522 };
0523 i2c0clk: i2c0clk@48M {
0524 #clock-cells = <0>;
0525 compatible = "st,nomadik-src-clock";
0526 clock-id = <41>;
0527 clocks = <&clk48>;
0528 };
0529 i2c1clk: i2c1clk@48M {
0530 #clock-cells = <0>;
0531 compatible = "st,nomadik-src-clock";
0532 clock-id = <42>;
0533 clocks = <&clk48>;
0534 };
0535 uart1clk: uart1clk@48M {
0536 #clock-cells = <0>;
0537 compatible = "st,nomadik-src-clock";
0538 clock-id = <43>;
0539 clocks = <&clk48>;
0540 };
0541 mspclk0: mspclk0@48M {
0542 #clock-cells = <0>;
0543 compatible = "st,nomadik-src-clock";
0544 clock-id = <44>;
0545 clocks = <&clk48>;
0546 };
0547 usbclk: usbclk@48M {
0548 #clock-cells = <0>;
0549 compatible = "st,nomadik-src-clock";
0550 clock-id = <45>;
0551 clocks = <&clk48>; /* 48 MHz not ULPI */
0552 };
0553 difclk: difclk@72M {
0554 #clock-cells = <0>;
0555 compatible = "st,nomadik-src-clock";
0556 clock-id = <46>;
0557 clocks = <&clk72>;
0558 };
0559 ipi2cclk: ipi2cclk@48M {
0560 #clock-cells = <0>;
0561 compatible = "st,nomadik-src-clock";
0562 clock-id = <47>;
0563 clocks = <&clk48>; /* Guess */
0564 };
0565 ipbmcclk: ipbmcclk@48M {
0566 #clock-cells = <0>;
0567 compatible = "st,nomadik-src-clock";
0568 clock-id = <48>;
0569 clocks = <&clk48>; /* Guess */
0570 };
0571 hsiclkrx: hsiclkrx@216M {
0572 #clock-cells = <0>;
0573 compatible = "st,nomadik-src-clock";
0574 clock-id = <49>;
0575 clocks = <&clk216>;
0576 };
0577 hsiclktx: hsiclktx@108M {
0578 #clock-cells = <0>;
0579 compatible = "st,nomadik-src-clock";
0580 clock-id = <50>;
0581 clocks = <&clk108>;
0582 };
0583 uart2clk: uart2clk@48M {
0584 #clock-cells = <0>;
0585 compatible = "st,nomadik-src-clock";
0586 clock-id = <51>;
0587 clocks = <&clk48>;
0588 };
0589 mspclk1: mspclk1@48M {
0590 #clock-cells = <0>;
0591 compatible = "st,nomadik-src-clock";
0592 clock-id = <52>;
0593 clocks = <&clk48>;
0594 };
0595 mspclk2: mspclk2@48M {
0596 #clock-cells = <0>;
0597 compatible = "st,nomadik-src-clock";
0598 clock-id = <53>;
0599 clocks = <&clk48>;
0600 };
0601 owmclk: owmclk@48M {
0602 #clock-cells = <0>;
0603 compatible = "st,nomadik-src-clock";
0604 clock-id = <54>;
0605 clocks = <&clk48>; /* Guess */
0606 };
0607 skeclk: skeclk@48M {
0608 #clock-cells = <0>;
0609 compatible = "st,nomadik-src-clock";
0610 clock-id = <56>;
0611 clocks = <&clk48>; /* Guess */
0612 };
0613 x3dclk: x3dclk@48M {
0614 #clock-cells = <0>;
0615 compatible = "st,nomadik-src-clock";
0616 clock-id = <58>;
0617 clocks = <&clk48>; /* Guess */
0618 };
0619 pclkmsp3: pclkmsp3@48M {
0620 #clock-cells = <0>;
0621 compatible = "st,nomadik-src-clock";
0622 clock-id = <59>;
0623 clocks = <&pclk>;
0624 };
0625 mspclk3: mspclk3@48M {
0626 #clock-cells = <0>;
0627 compatible = "st,nomadik-src-clock";
0628 clock-id = <60>;
0629 clocks = <&clk48>;
0630 };
0631 mshcclk: mshcclk@48M {
0632 #clock-cells = <0>;
0633 compatible = "st,nomadik-src-clock";
0634 clock-id = <61>;
0635 clocks = <&clk48>; /* Guess */
0636 };
0637 usbmclk: usbmclk@48M {
0638 #clock-cells = <0>;
0639 compatible = "st,nomadik-src-clock";
0640 clock-id = <62>;
0641 /* Stated as "48 MHz not ULPI clock" */
0642 clocks = <&clk48>;
0643 };
0644 rngcclk: rngcclk@48M {
0645 #clock-cells = <0>;
0646 compatible = "st,nomadik-src-clock";
0647 clock-id = <63>;
0648 clocks = <&clk48>; /* Guess */
0649 };
0650 };
0651
0652 /* A NAND flash of 128 MiB */
0653 fsmc: flash@40000000 {
0654 compatible = "stericsson,fsmc-nand";
0655 #address-cells = <1>;
0656 #size-cells = <1>;
0657 reg = <0x10100000 0x1000>, /* FSMC Register*/
0658 <0x40000000 0x2000>, /* NAND Base DATA */
0659 <0x41000000 0x2000>, /* NAND Base ADDR */
0660 <0x40800000 0x2000>; /* NAND Base CMD */
0661 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
0662 clocks = <&hclksmc>;
0663 status = "okay";
0664
0665 partition@0 {
0666 label = "X-Loader(NAND)";
0667 reg = <0x0 0x40000>;
0668 };
0669 partition@40000 {
0670 label = "MemInit(NAND)";
0671 reg = <0x40000 0x40000>;
0672 };
0673 partition@80000 {
0674 label = "BootLoader(NAND)";
0675 reg = <0x80000 0x200000>;
0676 };
0677 partition@280000 {
0678 label = "Kernel zImage(NAND)";
0679 reg = <0x280000 0x300000>;
0680 };
0681 partition@580000 {
0682 label = "Root Filesystem(NAND)";
0683 reg = <0x580000 0x1600000>;
0684 };
0685 partition@1b80000 {
0686 label = "User Filesystem(NAND)";
0687 reg = <0x1b80000 0x6480000>;
0688 };
0689 };
0690
0691 /* I2C0 connected to the STw4811 power management chip */
0692 i2c0 {
0693 compatible = "st,nomadik-i2c", "arm,primecell";
0694 reg = <0x101f8000 0x1000>;
0695 interrupt-parent = <&vica>;
0696 interrupts = <20>;
0697 clock-frequency = <100000>;
0698 #address-cells = <1>;
0699 #size-cells = <0>;
0700 clocks = <&i2c0clk>, <&pclki2c0>;
0701 clock-names = "mclk", "apb_pclk";
0702 pinctrl-names = "default";
0703 pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
0704
0705 stw4811@2d {
0706 compatible = "st,stw4811";
0707 reg = <0x2d>;
0708 vmmc_regulator: vmmc {
0709 compatible = "st,stw481x-vmmc";
0710 regulator-name = "VMMC";
0711 regulator-min-microvolt = <1800000>;
0712 regulator-max-microvolt = <3300000>;
0713 };
0714 };
0715 };
0716
0717 /* I2C1 connected to various sensors */
0718 i2c1 {
0719 compatible = "st,nomadik-i2c", "arm,primecell";
0720 reg = <0x101f7000 0x1000>;
0721 interrupt-parent = <&vica>;
0722 interrupts = <21>;
0723 clock-frequency = <100000>;
0724 #address-cells = <1>;
0725 #size-cells = <0>;
0726 clocks = <&i2c1clk>, <&pclki2c1>;
0727 clock-names = "mclk", "apb_pclk";
0728 pinctrl-names = "default";
0729 pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
0730
0731 camera@2d {
0732 compatible = "st,camera";
0733 reg = <0x10>;
0734 };
0735 stw5095@1a {
0736 compatible = "st,stw5095";
0737 reg = <0x1a>;
0738 };
0739 };
0740
0741 amba {
0742 compatible = "simple-bus";
0743 #address-cells = <1>;
0744 #size-cells = <1>;
0745 ranges;
0746
0747 clcd@10120000 {
0748 compatible = "arm,pl110", "arm,primecell";
0749 reg = <0x10120000 0x1000>;
0750 interrupt-names = "combined";
0751 interrupts = <14>;
0752 interrupt-parent = <&vica>;
0753 clocks = <&clcdclk>, <&hclkclcd>;
0754 clock-names = "clcdclk", "apb_pclk";
0755 status = "disabled";
0756 };
0757
0758 vica: interrupt-controller@10140000 {
0759 compatible = "arm,versatile-vic";
0760 interrupt-controller;
0761 #interrupt-cells = <1>;
0762 reg = <0x10140000 0x20>;
0763 };
0764
0765 vicb: interrupt-controller@10140020 {
0766 compatible = "arm,versatile-vic";
0767 interrupt-controller;
0768 #interrupt-cells = <1>;
0769 reg = <0x10140020 0x20>;
0770 };
0771
0772 uart0: uart@101fd000 {
0773 compatible = "arm,pl011", "arm,primecell";
0774 reg = <0x101fd000 0x1000>;
0775 interrupt-parent = <&vica>;
0776 interrupts = <12>;
0777 clocks = <&uart0clk>, <&pclkuart0>;
0778 clock-names = "uartclk", "apb_pclk";
0779 status = "disabled";
0780 dmas = <&dmac0 14 1>,
0781 <&dmac0 15 1>;
0782 dma-names = "rx", "tx";
0783 };
0784
0785 uart1: uart@101fb000 {
0786 compatible = "arm,pl011", "arm,primecell";
0787 reg = <0x101fb000 0x1000>;
0788 interrupt-parent = <&vica>;
0789 interrupts = <17>;
0790 clocks = <&uart1clk>, <&pclkuart1>;
0791 clock-names = "uartclk", "apb_pclk";
0792 pinctrl-names = "default";
0793 pinctrl-0 = <&uart1_default_mux>;
0794 dmas = <&dmac1 22 1>,
0795 <&dmac1 23 1>;
0796 dma-names = "rx", "tx";
0797 };
0798
0799 uart2: uart@101f2000 {
0800 compatible = "arm,pl011", "arm,primecell";
0801 reg = <0x101f2000 0x1000>;
0802 interrupt-parent = <&vica>;
0803 interrupts = <28>;
0804 clocks = <&uart2clk>, <&pclkuart2>;
0805 clock-names = "uartclk", "apb_pclk";
0806 status = "disabled";
0807 dmas = <&dmac1 30 1>,
0808 <&dmac1 31 1>;
0809 dma-names = "rx", "tx";
0810 };
0811
0812 rng: rng@101b0000 {
0813 compatible = "arm,primecell";
0814 reg = <0x101b0000 0x1000>;
0815 clocks = <&rngcclk>, <&hclkrng>;
0816 clock-names = "rng", "apb_pclk";
0817 };
0818
0819 rtc: rtc@101e8000 {
0820 compatible = "arm,pl031", "arm,primecell";
0821 reg = <0x101e8000 0x1000>;
0822 clocks = <&pclk>;
0823 clock-names = "apb_pclk";
0824 interrupt-parent = <&vica>;
0825 interrupts = <10>;
0826 };
0827
0828 mmcsd: mmc@101f6000 {
0829 compatible = "arm,pl18x", "arm,primecell";
0830 reg = <0x101f6000 0x1000>;
0831 clocks = <&sdiclk>, <&pclksdi>;
0832 clock-names = "mclk", "apb_pclk";
0833 interrupt-parent = <&vica>;
0834 interrupts = <22>;
0835 max-frequency = <400000>;
0836 bus-width = <4>;
0837 cap-mmc-highspeed;
0838 cap-sd-highspeed;
0839 full-pwr-cycle;
0840 /*
0841 * The STw4811 circuit used with the Nomadik strictly
0842 * requires that all of these signal direction pins be
0843 * routed and used for its 4-bit levelshifter.
0844 */
0845 st,sig-dir-dat0;
0846 st,sig-dir-dat2;
0847 st,sig-dir-dat31;
0848 st,sig-dir-cmd;
0849 st,sig-pin-fbclk;
0850 pinctrl-names = "default";
0851 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
0852 vmmc-supply = <&vmmc_regulator>;
0853 };
0854
0855 dmac0: dma-controller@10130000 {
0856 compatible = "arm,pl080", "arm,primecell";
0857 reg = <0x10130000 0x1000>;
0858 interrupt-parent = <&vica>;
0859 interrupts = <15>;
0860 clocks = <&hclkdma0>;
0861 clock-names = "apb_pclk";
0862 lli-bus-interface-ahb1;
0863 lli-bus-interface-ahb2;
0864 mem-bus-interface-ahb2;
0865 memcpy-burst-size = <256>;
0866 memcpy-bus-width = <32>;
0867 #dma-cells = <2>;
0868 };
0869 dmac1: dma-controller@10150000 {
0870 compatible = "arm,pl080", "arm,primecell";
0871 reg = <0x10150000 0x1000>;
0872 interrupt-parent = <&vica>;
0873 interrupts = <13>;
0874 clocks = <&hclkdma1>;
0875 clock-names = "apb_pclk";
0876 lli-bus-interface-ahb1;
0877 lli-bus-interface-ahb2;
0878 mem-bus-interface-ahb2;
0879 memcpy-burst-size = <256>;
0880 memcpy-bus-width = <32>;
0881 #dma-cells = <2>;
0882 };
0883 };
0884 };