1/* 2 * Copyright (c) 2012 The FreeBSD Foundation 3 * 4 * This software was developed by Semihalf under sponsorship from 5 * the FreeBSD Foundation. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 * 28 * Freescale i.MX515 Device Tree Source. 29 * 30 * $FreeBSD$ 31 */ 32 33/ { 34 #address-cells = <1>; 35 #size-cells = <1>; 36 37 aliases { 38 soc = &SOC; 39 }; 40 41 42 cpus { 43 #address-cells = <1>; 44 #size-cells = <0>; 45 46 cpu@0 { 47 device_type = "cpu"; 48 compatible = "ARM,MCIMX515"; 49 reg = <0x0>; 50 d-cache-line-size = <32>; 51 i-cache-line-size = <32>; 52 d-cache-size = <0x8000>; 53 i-cache-size = <0x8000>; 54 /* TODO: describe L2 cache also */ 55 timebase-frequency = <0>; 56 bus-frequency = <0>; 57 clock-frequency = <0>; 58 }; 59 }; 60 61 localbus@e0000000 { 62 compatible = "simple-bus"; 63 #address-cells = <1>; 64 #size-cells = <1>; 65 66 /* This reflects CPU decode windows setup. */ 67 ranges; 68 69 tzic: tz-interrupt-controller@e0000000 { 70 compatible = "fsl,imx51-tzic", "fsl,tzic"; 71 interrupt-controller; 72 #interrupt-cells = <1>; 73 reg = <0xe0000000 0x00004000>; 74 }; 75 /* 76 * 60000000 60000FFF 4K Debug ROM 77 * 60001000 60001FFF 4K ETB 78 * 60002000 60002FFF 4K ETM 79 * 60003000 60003FFF 4K TPIU 80 * 60004000 60004FFF 4K CTI0 81 * 60005000 60005FFF 4K CTI1 82 * 60006000 60006FFF 4K CTI2 83 * 60007000 60007FFF 4K CTI3 84 * 60008000 60008FFF 4K Cortex Debug Unit 85 * 86 * E0000000 E0003FFF 0x4000 TZIC 87 */ 88 }; 89 90 SOC: soc@70000000 { 91 compatible = "simple-bus"; 92 #address-cells = <1>; 93 #size-cells = <1>; 94 interrupt-parent = <&tzic>; 95 ranges = <0x70000000 0x70000000 0x14000000>; 96 97 aips@70000000 { /* AIPS1 */ 98 compatible = "fsl,aips-bus", "simple-bus"; 99 #address-cells = <1>; 100 #size-cells = <1>; 101 interrupt-parent = <&tzic>; 102 ranges; 103 104 /* Required by many devices, so better to stay first */ 105 /* 73FD4000 0x4000 CCM */ 106 clock@73fd4000 { 107 compatible = "fsl,imx51-ccm"; 108 /* 83F80000 0x4000 DPLLIP1 */ 109 /* 83F84000 0x4000 DPLLIP2 */ 110 /* 83F88000 0x4000 DPLLIP3 */ 111 reg = <0x73fd4000 0x4000 112 0x83F80000 0x4000 113 0x83F84000 0x4000 114 0x83F88000 0x4000>; 115 interrupt-parent = <&tzic>; 116 interrupts = <71 72>; 117 status = "disabled"; 118 }; 119 120 /* 121 * GPIO modules moved up - to have it attached for 122 * drivers which rely on GPIO 123 */ 124 /* 73F84000 0x4000 GPIO1 */ 125 gpio1: gpio@73f84000 { 126 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; 127 reg = <0x73f84000 0x4000>; 128 interrupt-parent = <&tzic>; 129 interrupts = <50 51 42 43 44 45 46 47 48 49>; 130 /* TODO: use <> also */ 131 gpio-controller; 132 #gpio-cells = <2>; 133 interrupt-controller; 134 #interrupt-cells = <1>; 135 }; 136 137 /* 73F88000 0x4000 GPIO2 */ 138 gpio2: gpio@73f88000 { 139 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; 140 reg = <0x73f88000 0x4000>; 141 interrupt-parent = <&tzic>; 142 interrupts = <52 53>; 143 gpio-controller; 144 #gpio-cells = <2>; 145 interrupt-controller; 146 #interrupt-cells = <1>; 147 }; 148 149 /* 73F8C000 0x4000 GPIO3 */ 150 gpio3: gpio@73f8c000 { 151 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; 152 reg = <0x73f8c000 0x4000>; 153 interrupt-parent = <&tzic>; 154 interrupts = <54 55>; 155 gpio-controller; 156 #gpio-cells = <2>; 157 interrupt-controller; 158 #interrupt-cells = <1>; 159 }; 160 161 /* 73F90000 0x4000 GPIO4 */ 162 gpio4: gpio@73f90000 { 163 compatible = "fsl,imx51-gpio", "fsl,imx31-gpio"; 164 reg = <0x73f90000 0x4000>; 165 interrupt-parent = <&tzic>; 166 interrupts = <56 57>; 167 gpio-controller; 168 #gpio-cells = <2>; 169 interrupt-controller; 170 #interrupt-cells = <1>; 171 }; 172 173 spba@70000000 { 174 compatible = "fsl,spba-bus", "simple-bus"; 175 #address-cells = <1>; 176 #size-cells = <1>; 177 interrupt-parent = <&tzic>; 178 ranges; 179 180 /* 70004000 0x4000 ESDHC 1 */ 181 esdhc@70004000 { 182 compatible = "fsl,imx51-esdhc"; 183 reg = <0x70004000 0x4000>; 184 interrupt-parent = <&tzic>; interrupts = <1>; 185 status = "disabled"; 186 }; 187 188 /* 70008000 0x4000 ESDHC 2 */ 189 esdhc@70008000 { 190 compatible = "fsl,imx51-esdhc"; 191 reg = <0x70008000 0x4000>; 192 interrupt-parent = <&tzic>; interrupts = <2>; 193 status = "disabled"; 194 }; 195 196 /* 7000C000 0x4000 UART 3 */ 197 uart3: serial@7000c000 { 198 compatible = "fsl,imx51-uart", "fsl,imx-uart"; 199 reg = <0x7000c000 0x4000>; 200 interrupt-parent = <&tzic>; interrupts = <33>; 201 status = "disabled"; 202 }; 203 204 /* 70010000 0x4000 eCSPI1 */ 205 ecspi@70010000 { 206 #address-cells = <1>; 207 #size-cells = <0>; 208 compatible = "fsl,imx51-ecspi"; 209 reg = <0x70010000 0x4000>; 210 interrupt-parent = <&tzic>; interrupts = <36>; 211 status = "disabled"; 212 }; 213 214 /* 70014000 0x4000 SSI2 irq30 */ 215 SSI2: ssi@70014000 { 216 compatible = "fsl,imx51-ssi"; 217 reg = <0x70014000 0x4000>; 218 interrupt-parent = <&tzic>; interrupts = <30>; 219 status = "disabled"; 220 }; 221 222 /* 70020000 0x4000 ESDHC 3 */ 223 esdhc@70020000 { 224 compatible = "fsl,imx51-esdhc"; 225 reg = <0x70020000 0x4000>; 226 interrupt-parent = <&tzic>; interrupts = <3>; 227 status = "disabled"; 228 }; 229 230 /* 70024000 0x4000 ESDHC 4 */ 231 esdhc@70024000 { 232 compatible = "fsl,imx51-esdhc"; 233 reg = <0x70024000 0x4000>; 234 interrupt-parent = <&tzic>; interrupts = <4>; 235 status = "disabled"; 236 }; 237 238 /* 70028000 0x4000 SPDIF */ 239 /* 91 SPDIF */ 240 241 /* 70030000 0x4000 PATA (PORT UDMA) irq70 */ 242 243 /* 70034000 0x4000 SLM */ 244 /* 70038000 0x4000 HSI2C */ /* 64 HS-I2C */ 245 /* 7003C000 0x4000 SPBA */ 246 }; 247 248 usbphy0: usbphy@0 { 249 compatible = "usb-nop-xceiv"; 250 status = "okay"; 251 }; 252 253 usbotg: usb@73f80000 { 254 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 255 reg = <0x73f80000 0x0200>; 256 interrupts = <18>; 257 fsl,usbmisc = <&usbmisc 0>; 258 fsl,usbphy = <&usbphy0>; 259 status = "disabled"; 260 }; 261 262 usbh1: usb@73f80200 { 263 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 264 reg = <0x73f80200 0x0200>; 265 interrupts = <14>; 266 fsl,usbmisc = <&usbmisc 1>; 267 status = "disabled"; 268 }; 269 270 usbh2: usb@73f80400 { 271 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 272 reg = <0x73f80400 0x0200>; 273 interrupts = <16>; 274 fsl,usbmisc = <&usbmisc 2>; 275 status = "disabled"; 276 }; 277 278 usbh3: usb@73f80600 { 279 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 280 reg = <0x73f80600 0x0200>; 281 interrupts = <17>; 282 fsl,usbmisc = <&usbmisc 3>; 283 status = "disabled"; 284 }; 285 286 usbmisc: usbmisc@73f80800 { 287 #index-cells = <1>; 288 compatible = "fsl,imx51-usbmisc"; 289 reg = <0x73f80800 0x200>; 290 }; 291 292 /* 73F98000 0x4000 WDOG1 */ 293 wdog@73f98000 { 294 compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; 295 reg = <0x73f98000 0x4000>; 296 interrupt-parent = <&tzic>; interrupts = <58>; 297 status = "disabled"; 298 }; 299 300 /* 73F9C000 0x4000 WDOG2 (TZ) */ 301 wdog@73f9c000 { 302 compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; 303 reg = <0x73f9c000 0x4000>; 304 interrupt-parent = <&tzic>; interrupts = <59>; 305 status = "disabled"; 306 }; 307 308 /* 73F94000 0x4000 KPP */ 309 keyboard@73f94000 { 310 compatible = "fsl,imx51-kpp"; 311 reg = <0x73f94000 0x4000>; 312 interrupt-parent = <&tzic>; interrupts = <60>; 313 status = "disabled"; 314 }; 315 316 /* 73FA0000 0x4000 GPT */ 317 timer@73fa0000 { 318 compatible = "fsl,imx51-gpt"; 319 reg = <0x73fa0000 0x4000>; 320 interrupt-parent = <&tzic>; interrupts = <39>; 321 status = "disabled"; 322 }; 323 324 /* 73FA4000 0x4000 SRTC */ 325 326 rtc@73fa4000 { 327 compatible = "fsl,imx51-srtc"; 328 reg = <0x73fa4000 0x4000>; 329 interrupt-parent = <&tzic>; interrupts = <24 25>; 330 status = "disabled"; 331 }; 332 333 /* 73FA8000 0x4000 IOMUXC */ 334 iomux@73fa8000 { 335 compatible = "fsl,imx51-iomux"; 336 reg = <0x73fa8000 0x4000>; 337 interrupt-parent = <&tzic>; interrupts = <7>; 338 }; 339 340 /* 73FAC000 0x4000 EPIT1 */ 341 epit1: timer@73fac000 { 342 compatible = "fsl,imx51-epit"; 343 reg = <0x73fac000 0x4000>; 344 interrupt-parent = <&tzic>; interrupts = <40>; 345 status = "disabled"; 346 }; 347 348 /* 73FB0000 0x4000 EPIT2 */ 349 epit2: timer@73fb0000 { 350 compatible = "fsl,imx51-epit"; 351 reg = <0x73fb0000 0x4000>; 352 interrupt-parent = <&tzic>; interrupts = <41>; 353 status = "disabled"; 354 }; 355 356 /* 73FB4000 0x4000 PWM1 */ 357 pwm@73fb4000 { 358 compatible = "fsl,imx51-pwm"; 359 reg = <0x73fb4000 0x4000>; 360 interrupt-parent = <&tzic>; interrupts = <61>; 361 status = "disabled"; 362 }; 363 364 /* 73FB8000 0x4000 PWM2 */ 365 pwm@73fb8000 { 366 compatible = "fsl,imx51-pwm"; 367 reg = <0x73fb8000 0x4000>; 368 interrupt-parent = <&tzic>; interrupts = <94>; 369 status = "disabled"; 370 }; 371 372 /* 73FBC000 0x4000 UART 1 */ 373 uart1: serial@73fbc000 { 374 compatible = "fsl,imx51-uart", "fsl,imx-uart"; 375 reg = <0x73fbc000 0x4000>; 376 interrupt-parent = <&tzic>; interrupts = <31>; 377 status = "disabled"; 378 }; 379 380 /* 73FC0000 0x4000 UART 2 */ 381 uart2: serial@73fc0000 { 382 compatible = "fsl,imx51-uart", "fsl,imx-uart"; 383 reg = <0x73fc0000 0x4000>; 384 interrupt-parent = <&tzic>; interrupts = <32>; 385 status = "disabled"; 386 }; 387 388 /* 73FC4000 0x4000 USBOH3 */ 389 /* NOTYET 390 usb@73fc4000 { 391 compatible = "fsl,imx51-otg"; 392 reg = <0x73fc4000 0x4000>; 393 interrupt-parent = <&tzic>; interrupts = <>; 394 status = "disabled"; 395 }; 396 */ 397 /* 73FD0000 0x4000 SRC */ 398 reset@73fd0000 { 399 compatible = "fsl,imx51-src"; 400 reg = <0x73fd0000 0x4000>; 401 interrupt-parent = <&tzic>; interrupts = <75>; 402 status = "disabled"; 403 }; 404 /* 73FD8000 0x4000 GPC */ 405 power@73fd8000 { 406 compatible = "fsl,imx51-gpc"; 407 reg = <0x73fd8000 0x4000>; 408 interrupt-parent = <&tzic>; interrupts = <73 74>; 409 status = "disabled"; 410 }; 411 412 }; 413 414 aips@80000000 { /* AIPS2 */ 415 compatible = "fsl,aips-bus", "simple-bus"; 416 #address-cells = <1>; 417 #size-cells = <1>; 418 interrupt-parent = <&tzic>; 419 ranges; 420 421 /* 83F94000 0x4000 AHBMAX */ 422 /* 83F98000 0x4000 IIM */ 423 /* 424 * 69 IIM Interrupt request to the processor. 425 * Indicates to the processor that program or 426 * explicit. 427 */ 428 /* 83F9C000 0x4000 CSU */ 429 /* 430 * 27 CSU Interrupt Request 1. Indicates to the 431 * processor that one or more alarm inputs were. 432 */ 433 434 /* 83FA0000 0x4000 TIGERP_PLATFORM_NE_32K_256K */ 435 /* irq76 Neon Monitor Interrupt */ 436 /* irq77 Performance Unit Interrupt */ 437 /* irq78 CTI IRQ */ 438 /* irq79 Debug Interrupt, Cross-Trigger Interface 1 */ 439 /* irq80 Debug Interrupt, Cross-Trigger Interface 1 */ 440 /* irq89 Debug Interrupt, Cross-Trigger Interface 2 */ 441 /* irq98 Debug Interrupt, Cross-Trigger Interface 3 */ 442 443 /* 83FA4000 0x4000 OWIRE irq88 */ 444 /* 83FA8000 0x4000 FIRI irq93 */ 445 /* 83FAC000 0x4000 eCSPI2 */ 446 ecspi@83fac000 { 447 #address-cells = <1>; 448 #size-cells = <0>; 449 compatible = "fsl,imx51-ecspi"; 450 reg = <0x83fac000 0x4000>; 451 interrupt-parent = <&tzic>; interrupts = <37>; 452 status = "disabled"; 453 }; 454 455 /* 83FB0000 0x4000 SDMA */ 456 sdma@83fb0000 { 457 compatible = "fsl,imx51-sdma", "fsl,imx35-sdma"; 458 reg = <0x83fb0000 0x4000>; 459 interrupt-parent = <&tzic>; interrupts = <6>; 460 }; 461 462 /* 83FB4000 0x4000 SCC */ 463 /* 21 SCC Security Monitor High Priority Interrupt. */ 464 /* 22 SCC Secure (TrustZone) Interrupt. */ 465 /* 23 SCC Regular (Non-Secure) Interrupt. */ 466 467 /* 83FB8000 0x4000 ROMCP */ 468 /* 83FBC000 0x4000 RTIC */ 469 /* 470 * 26 RTIC RTIC (Trust Zone) Interrupt Request. 471 * Indicates that the RTIC has completed hashing the 472 */ 473 474 /* 83FC0000 0x4000 CSPI */ 475 cspi@83fc0000 { 476 #address-cells = <1>; 477 #size-cells = <0>; 478 compatible = "fsl,imx51-cspi", "fsl,imx35-cspi"; 479 reg = <0x83fc0000 0x4000>; 480 interrupt-parent = <&tzic>; interrupts = <38>; 481 status = "disabled"; 482 }; 483 484 /* 83FC4000 0x4000 I2C2 */ 485 i2c@83fc4000 { 486 #address-cells = <1>; 487 #size-cells = <0>; 488 compatible = "fsl,imx51-i2c", "fsl,imx1-i2c", "fsl,imx-i2c"; 489 reg = <0x83fc4000 0x4000>; 490 interrupt-parent = <&tzic>; interrupts = <63>; 491 status = "disabled"; 492 }; 493 494 /* 83FC8000 0x4000 I2C1 */ 495 i2c@83fc8000 { 496 #address-cells = <1>; 497 #size-cells = <0>; 498 compatible = "fsl,imx51-i2c", "fsl,imx1-i2c", "fsl,imx-i2c"; 499 reg = <0x83fc8000 0x4000>; 500 interrupt-parent = <&tzic>; interrupts = <62>; 501 status = "disabled"; 502 }; 503 504 /* 83FCC000 0x4000 SSI1 */ 505 /* 29 SSI1 SSI-1 Interrupt Request */ 506 SSI1: ssi@83fcc000 { 507 compatible = "fsl,imx51-ssi"; 508 reg = <0x83fcc000 0x4000>; 509 interrupt-parent = <&tzic>; interrupts = <29>; 510 status = "disabled"; 511 }; 512 513 /* 83FD0000 0x4000 AUDMUX */ 514 audmux@83fd4000 { 515 compatible = "fsl,imx51-audmux"; 516 reg = <0x83fd4000 0x4000>; 517 status = "disabled"; 518 }; 519 520 /* 83FD8000 0x4000 EMI1 */ 521 /* 8 EMI (NFC) */ 522 /* 15 EMI */ 523 /* 97 EMI Boot sequence completed interrupt */ 524 /* 525 * 101 EMI Indicates all pages have been transferred 526 * to NFC during an auto program operation. 527 */ 528 529 /* 83FE0000 0x4000 PATA (PORT PIO) */ 530 /* 70 PATA Parallel ATA host controller interrupt */ 531 ide@83fe0000 { 532 compatible = "fsl,imx51-ata"; 533 reg = <0x83fe0000 0x4000>; 534 interrupt-parent = <&tzic>; 535 interrupts = <70>; 536 status = "disabled"; 537 }; 538 539 /* 83FE4000 0x4000 SIM */ 540 /* 67 SIM intr composed of oef, xte, sdi1, and sdi0 */ 541 /* 68 SIM intr composed of tc, etc, tfe, and rdrf */ 542 543 /* 83FE8000 0x4000 SSI3 */ 544 /* 96 SSI3 SSI-3 Interrupt Request */ 545 SSI3: ssi@83fe8000 { 546 compatible = "fsl,imx51-ssi"; 547 reg = <0x83fe8000 0x4000>; 548 interrupt-parent = <&tzic>; interrupts = <96>; 549 status = "disabled"; 550 }; 551 552 /* 83FEC000 0x4000 FEC */ 553 ethernet@83fec000 { 554 compatible = "fsl,imx51-fec"; 555 reg = <0x83fec000 0x4000>; 556 interrupt-parent = <&tzic>; interrupts = <87>; 557 status = "disabled"; 558 }; 559 560 /* 83FF0000 0x4000 TVE */ 561 /* 92 TVE */ 562 /* 83FF4000 0x4000 VPU */ 563 /* 9 VPU */ 564 /* 100 VPU Idle interrupt from VPU */ 565 566 /* 83FF8000 0x4000 SAHARA Lite */ 567 /* 19 SAHARA SAHARA host 0 (TrustZone) Intr Lite */ 568 /* 20 SAHARA SAHARA host 1 (non-TrustZone) Intr Lite */ 569 }; 570 }; 571 572 localbus@5e000000 { 573 compatible = "simple-bus"; 574 #address-cells = <1>; 575 #size-cells = <1>; 576 577 ranges; 578 579 vga: ipu3@5e000000 { 580 compatible = "fsl,ipu3"; 581 reg = < 582 0x5e000000 0x08000 /* CM */ 583 0x5e008000 0x08000 /* IDMAC */ 584 0x5e018000 0x08000 /* DP */ 585 0x5e020000 0x08000 /* IC */ 586 0x5e028000 0x08000 /* IRT */ 587 0x5e030000 0x08000 /* CSI0 */ 588 0x5e038000 0x08000 /* CSI1 */ 589 0x5e040000 0x08000 /* DI0 */ 590 0x5e048000 0x08000 /* DI1 */ 591 0x5e050000 0x08000 /* SMFC */ 592 0x5e058000 0x08000 /* DC */ 593 0x5e060000 0x08000 /* DMFC */ 594 0x5e068000 0x08000 /* VDI */ 595 0x5f000000 0x20000 /* CPMEM */ 596 0x5f020000 0x20000 /* LUT */ 597 0x5f040000 0x20000 /* SRM */ 598 0x5f060000 0x20000 /* TPM */ 599 0x5f080000 0x20000 /* DCTMPL */ 600 >; 601 interrupt-parent = <&tzic>; 602 interrupts = < 603 10 /* IPUEX Error */ 604 11 /* IPUEX Sync */ 605 >; 606 status = "disabled"; 607 }; 608 }; 609}; 610 611/* 612 613TODO: Not mapped interrupts 614 6155 DAP 61684 GPU2D (OpenVG) general interrupt 61785 GPU2D (OpenVG) busy signal (for S/W power gating feasibility) 61812 GPU3D 619102 GPU3D Idle interrupt from GPU3D (for S/W power gating) 62090 SJC 621*/ 622