2 * Copyright (c) 2012 The FreeBSD Foundation
5 * This software was developed by Semihalf under sponsorship from
6 * the FreeBSD Foundation.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * Freescale i.MX515 Device Tree Source.
49 compatible = "ARM,MCIMX515";
51 d-cache-line-size = <32>;
52 i-cache-line-size = <32>;
53 d-cache-size = <0x8000>;
54 i-cache-size = <0x8000>;
55 /* TODO: describe L2 cache also */
56 timebase-frequency = <0>;
58 clock-frequency = <0>;
63 compatible = "simple-bus";
67 /* This reflects CPU decode windows setup. */
70 tzic: tz-interrupt-controller@e0000000 {
71 compatible = "fsl,imx51-tzic", "fsl,tzic";
73 #interrupt-cells = <1>;
74 reg = <0xe0000000 0x00004000>;
77 * 60000000 60000FFF 4K Debug ROM
78 * 60001000 60001FFF 4K ETB
79 * 60002000 60002FFF 4K ETM
80 * 60003000 60003FFF 4K TPIU
81 * 60004000 60004FFF 4K CTI0
82 * 60005000 60005FFF 4K CTI1
83 * 60006000 60006FFF 4K CTI2
84 * 60007000 60007FFF 4K CTI3
85 * 60008000 60008FFF 4K Cortex Debug Unit
87 * E0000000 E0003FFF 0x4000 TZIC
92 compatible = "simple-bus";
95 interrupt-parent = <&tzic>;
96 ranges = <0x70000000 0x70000000 0x14000000>;
98 aips@70000000 { /* AIPS1 */
99 compatible = "fsl,aips-bus", "simple-bus";
100 #address-cells = <1>;
102 interrupt-parent = <&tzic>;
105 /* Required by many devices, so better to stay first */
106 /* 73FD4000 0x4000 CCM */
108 compatible = "fsl,imx51-ccm";
109 /* 83F80000 0x4000 DPLLIP1 */
110 /* 83F84000 0x4000 DPLLIP2 */
111 /* 83F88000 0x4000 DPLLIP3 */
112 reg = <0x73fd4000 0x4000
116 interrupt-parent = <&tzic>;
117 interrupts = <71 72>;
122 * GPIO modules moved up - to have it attached for
123 * drivers which rely on GPIO
125 /* 73F84000 0x4000 GPIO1 */
126 gpio1: gpio@73f84000 {
127 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
128 reg = <0x73f84000 0x4000>;
129 interrupt-parent = <&tzic>;
130 interrupts = <50 51 42 43 44 45 46 47 48 49>;
131 /* TODO: use <> also */
134 interrupt-controller;
135 #interrupt-cells = <1>;
138 /* 73F88000 0x4000 GPIO2 */
139 gpio2: gpio@73f88000 {
140 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
141 reg = <0x73f88000 0x4000>;
142 interrupt-parent = <&tzic>;
143 interrupts = <52 53>;
146 interrupt-controller;
147 #interrupt-cells = <1>;
150 /* 73F8C000 0x4000 GPIO3 */
151 gpio3: gpio@73f8c000 {
152 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
153 reg = <0x73f8c000 0x4000>;
154 interrupt-parent = <&tzic>;
155 interrupts = <54 55>;
158 interrupt-controller;
159 #interrupt-cells = <1>;
162 /* 73F90000 0x4000 GPIO4 */
163 gpio4: gpio@73f90000 {
164 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
165 reg = <0x73f90000 0x4000>;
166 interrupt-parent = <&tzic>;
167 interrupts = <56 57>;
170 interrupt-controller;
171 #interrupt-cells = <1>;
175 compatible = "fsl,spba-bus", "simple-bus";
176 #address-cells = <1>;
178 interrupt-parent = <&tzic>;
181 /* 70004000 0x4000 ESDHC 1 */
183 compatible = "fsl,imx51-esdhc";
184 reg = <0x70004000 0x4000>;
185 interrupt-parent = <&tzic>; interrupts = <1>;
189 /* 70008000 0x4000 ESDHC 2 */
191 compatible = "fsl,imx51-esdhc";
192 reg = <0x70008000 0x4000>;
193 interrupt-parent = <&tzic>; interrupts = <2>;
197 /* 7000C000 0x4000 UART 3 */
198 uart3: serial@7000c000 {
199 compatible = "fsl,imx51-uart", "fsl,imx-uart";
200 reg = <0x7000c000 0x4000>;
201 interrupt-parent = <&tzic>; interrupts = <33>;
205 /* 70010000 0x4000 eCSPI1 */
207 #address-cells = <1>;
209 compatible = "fsl,imx51-ecspi";
210 reg = <0x70010000 0x4000>;
211 interrupt-parent = <&tzic>; interrupts = <36>;
215 /* 70014000 0x4000 SSI2 irq30 */
217 compatible = "fsl,imx51-ssi";
218 reg = <0x70014000 0x4000>;
219 interrupt-parent = <&tzic>; interrupts = <30>;
223 /* 70020000 0x4000 ESDHC 3 */
225 compatible = "fsl,imx51-esdhc";
226 reg = <0x70020000 0x4000>;
227 interrupt-parent = <&tzic>; interrupts = <3>;
231 /* 70024000 0x4000 ESDHC 4 */
233 compatible = "fsl,imx51-esdhc";
234 reg = <0x70024000 0x4000>;
235 interrupt-parent = <&tzic>; interrupts = <4>;
239 /* 70028000 0x4000 SPDIF */
242 /* 70030000 0x4000 PATA (PORT UDMA) irq70 */
244 /* 70034000 0x4000 SLM */
245 /* 70038000 0x4000 HSI2C */ /* 64 HS-I2C */
246 /* 7003C000 0x4000 SPBA */
250 compatible = "usb-nop-xceiv";
254 usbotg: usb@73f80000 {
255 compatible = "fsl,imx51-usb", "fsl,imx27-usb";
256 reg = <0x73f80000 0x0200>;
258 fsl,usbmisc = <&usbmisc 0>;
259 fsl,usbphy = <&usbphy0>;
263 usbh1: usb@73f80200 {
264 compatible = "fsl,imx51-usb", "fsl,imx27-usb";
265 reg = <0x73f80200 0x0200>;
267 fsl,usbmisc = <&usbmisc 1>;
271 usbh2: usb@73f80400 {
272 compatible = "fsl,imx51-usb", "fsl,imx27-usb";
273 reg = <0x73f80400 0x0200>;
275 fsl,usbmisc = <&usbmisc 2>;
279 usbh3: usb@73f80600 {
280 compatible = "fsl,imx51-usb", "fsl,imx27-usb";
281 reg = <0x73f80600 0x0200>;
283 fsl,usbmisc = <&usbmisc 3>;
287 usbmisc: usbmisc@73f80800 {
289 compatible = "fsl,imx51-usbmisc";
290 reg = <0x73f80800 0x200>;
293 /* 73F98000 0x4000 WDOG1 */
295 compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
296 reg = <0x73f98000 0x4000>;
297 interrupt-parent = <&tzic>; interrupts = <58>;
301 /* 73F9C000 0x4000 WDOG2 (TZ) */
303 compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
304 reg = <0x73f9c000 0x4000>;
305 interrupt-parent = <&tzic>; interrupts = <59>;
309 /* 73F94000 0x4000 KPP */
311 compatible = "fsl,imx51-kpp";
312 reg = <0x73f94000 0x4000>;
313 interrupt-parent = <&tzic>; interrupts = <60>;
317 /* 73FA0000 0x4000 GPT */
319 compatible = "fsl,imx51-gpt";
320 reg = <0x73fa0000 0x4000>;
321 interrupt-parent = <&tzic>; interrupts = <39>;
325 /* 73FA4000 0x4000 SRTC */
328 compatible = "fsl,imx51-srtc";
329 reg = <0x73fa4000 0x4000>;
330 interrupt-parent = <&tzic>; interrupts = <24 25>;
334 /* 73FA8000 0x4000 IOMUXC */
336 compatible = "fsl,imx51-iomux";
337 reg = <0x73fa8000 0x4000>;
338 interrupt-parent = <&tzic>; interrupts = <7>;
341 /* 73FAC000 0x4000 EPIT1 */
342 epit1: timer@73fac000 {
343 compatible = "fsl,imx51-epit";
344 reg = <0x73fac000 0x4000>;
345 interrupt-parent = <&tzic>; interrupts = <40>;
349 /* 73FB0000 0x4000 EPIT2 */
350 epit2: timer@73fb0000 {
351 compatible = "fsl,imx51-epit";
352 reg = <0x73fb0000 0x4000>;
353 interrupt-parent = <&tzic>; interrupts = <41>;
357 /* 73FB4000 0x4000 PWM1 */
359 compatible = "fsl,imx51-pwm";
360 reg = <0x73fb4000 0x4000>;
361 interrupt-parent = <&tzic>; interrupts = <61>;
365 /* 73FB8000 0x4000 PWM2 */
367 compatible = "fsl,imx51-pwm";
368 reg = <0x73fb8000 0x4000>;
369 interrupt-parent = <&tzic>; interrupts = <94>;
373 /* 73FBC000 0x4000 UART 1 */
374 uart1: serial@73fbc000 {
375 compatible = "fsl,imx51-uart", "fsl,imx-uart";
376 reg = <0x73fbc000 0x4000>;
377 interrupt-parent = <&tzic>; interrupts = <31>;
381 /* 73FC0000 0x4000 UART 2 */
382 uart2: serial@73fc0000 {
383 compatible = "fsl,imx51-uart", "fsl,imx-uart";
384 reg = <0x73fc0000 0x4000>;
385 interrupt-parent = <&tzic>; interrupts = <32>;
389 /* 73FC4000 0x4000 USBOH3 */
392 compatible = "fsl,imx51-otg";
393 reg = <0x73fc4000 0x4000>;
394 interrupt-parent = <&tzic>; interrupts = <>;
398 /* 73FD0000 0x4000 SRC */
400 compatible = "fsl,imx51-src";
401 reg = <0x73fd0000 0x4000>;
402 interrupt-parent = <&tzic>; interrupts = <75>;
405 /* 73FD8000 0x4000 GPC */
407 compatible = "fsl,imx51-gpc";
408 reg = <0x73fd8000 0x4000>;
409 interrupt-parent = <&tzic>; interrupts = <73 74>;
415 aips@80000000 { /* AIPS2 */
416 compatible = "fsl,aips-bus", "simple-bus";
417 #address-cells = <1>;
419 interrupt-parent = <&tzic>;
422 /* 83F94000 0x4000 AHBMAX */
423 /* 83F98000 0x4000 IIM */
425 * 69 IIM Interrupt request to the processor.
426 * Indicates to the processor that program or
429 /* 83F9C000 0x4000 CSU */
431 * 27 CSU Interrupt Request 1. Indicates to the
432 * processor that one or more alarm inputs were.
435 /* 83FA0000 0x4000 TIGERP_PLATFORM_NE_32K_256K */
436 /* irq76 Neon Monitor Interrupt */
437 /* irq77 Performance Unit Interrupt */
439 /* irq79 Debug Interrupt, Cross-Trigger Interface 1 */
440 /* irq80 Debug Interrupt, Cross-Trigger Interface 1 */
441 /* irq89 Debug Interrupt, Cross-Trigger Interface 2 */
442 /* irq98 Debug Interrupt, Cross-Trigger Interface 3 */
444 /* 83FA4000 0x4000 OWIRE irq88 */
445 /* 83FA8000 0x4000 FIRI irq93 */
446 /* 83FAC000 0x4000 eCSPI2 */
448 #address-cells = <1>;
450 compatible = "fsl,imx51-ecspi";
451 reg = <0x83fac000 0x4000>;
452 interrupt-parent = <&tzic>; interrupts = <37>;
456 /* 83FB0000 0x4000 SDMA */
458 compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
459 reg = <0x83fb0000 0x4000>;
460 interrupt-parent = <&tzic>; interrupts = <6>;
463 /* 83FB4000 0x4000 SCC */
464 /* 21 SCC Security Monitor High Priority Interrupt. */
465 /* 22 SCC Secure (TrustZone) Interrupt. */
466 /* 23 SCC Regular (Non-Secure) Interrupt. */
468 /* 83FB8000 0x4000 ROMCP */
469 /* 83FBC000 0x4000 RTIC */
471 * 26 RTIC RTIC (Trust Zone) Interrupt Request.
472 * Indicates that the RTIC has completed hashing the
475 /* 83FC0000 0x4000 CSPI */
477 #address-cells = <1>;
479 compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
480 reg = <0x83fc0000 0x4000>;
481 interrupt-parent = <&tzic>; interrupts = <38>;
485 /* 83FC4000 0x4000 I2C2 */
487 #address-cells = <1>;
489 compatible = "fsl,imx51-i2c", "fsl,imx1-i2c", "fsl,imx-i2c";
490 reg = <0x83fc4000 0x4000>;
491 interrupt-parent = <&tzic>; interrupts = <63>;
495 /* 83FC8000 0x4000 I2C1 */
497 #address-cells = <1>;
499 compatible = "fsl,imx51-i2c", "fsl,imx1-i2c", "fsl,imx-i2c";
500 reg = <0x83fc8000 0x4000>;
501 interrupt-parent = <&tzic>; interrupts = <62>;
505 /* 83FCC000 0x4000 SSI1 */
506 /* 29 SSI1 SSI-1 Interrupt Request */
508 compatible = "fsl,imx51-ssi";
509 reg = <0x83fcc000 0x4000>;
510 interrupt-parent = <&tzic>; interrupts = <29>;
514 /* 83FD0000 0x4000 AUDMUX */
516 compatible = "fsl,imx51-audmux";
517 reg = <0x83fd4000 0x4000>;
521 /* 83FD8000 0x4000 EMI1 */
524 /* 97 EMI Boot sequence completed interrupt */
526 * 101 EMI Indicates all pages have been transferred
527 * to NFC during an auto program operation.
530 /* 83FE0000 0x4000 PATA (PORT PIO) */
531 /* 70 PATA Parallel ATA host controller interrupt */
533 compatible = "fsl,imx51-ata";
534 reg = <0x83fe0000 0x4000>;
535 interrupt-parent = <&tzic>;
540 /* 83FE4000 0x4000 SIM */
541 /* 67 SIM intr composed of oef, xte, sdi1, and sdi0 */
542 /* 68 SIM intr composed of tc, etc, tfe, and rdrf */
544 /* 83FE8000 0x4000 SSI3 */
545 /* 96 SSI3 SSI-3 Interrupt Request */
547 compatible = "fsl,imx51-ssi";
548 reg = <0x83fe8000 0x4000>;
549 interrupt-parent = <&tzic>; interrupts = <96>;
553 /* 83FEC000 0x4000 FEC */
555 compatible = "fsl,imx51-fec";
556 reg = <0x83fec000 0x4000>;
557 interrupt-parent = <&tzic>; interrupts = <87>;
561 /* 83FF0000 0x4000 TVE */
563 /* 83FF4000 0x4000 VPU */
565 /* 100 VPU Idle interrupt from VPU */
567 /* 83FF8000 0x4000 SAHARA Lite */
568 /* 19 SAHARA SAHARA host 0 (TrustZone) Intr Lite */
569 /* 20 SAHARA SAHARA host 1 (non-TrustZone) Intr Lite */
574 compatible = "simple-bus";
575 #address-cells = <1>;
581 compatible = "fsl,ipu3";
583 0x5e000000 0x08000 /* CM */
584 0x5e008000 0x08000 /* IDMAC */
585 0x5e018000 0x08000 /* DP */
586 0x5e020000 0x08000 /* IC */
587 0x5e028000 0x08000 /* IRT */
588 0x5e030000 0x08000 /* CSI0 */
589 0x5e038000 0x08000 /* CSI1 */
590 0x5e040000 0x08000 /* DI0 */
591 0x5e048000 0x08000 /* DI1 */
592 0x5e050000 0x08000 /* SMFC */
593 0x5e058000 0x08000 /* DC */
594 0x5e060000 0x08000 /* DMFC */
595 0x5e068000 0x08000 /* VDI */
596 0x5f000000 0x20000 /* CPMEM */
597 0x5f020000 0x20000 /* LUT */
598 0x5f040000 0x20000 /* SRM */
599 0x5f060000 0x20000 /* TPM */
600 0x5f080000 0x20000 /* DCTMPL */
602 interrupt-parent = <&tzic>;
614 TODO: Not mapped interrupts
617 84 GPU2D (OpenVG) general interrupt
618 85 GPU2D (OpenVG) busy signal (for S/W power gating feasibility)
620 102 GPU3D Idle interrupt from GPU3D (for S/W power gating)