1/* 2 * Copyright (c) 2013 Ian Lepore 3 * Copyright (c) 2012 The FreeBSD Foundation 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * 27 * Freescale i.MX6 Common Device Tree Source. 28 * There are enough differences between the Solo, Dual, Quad, and *-lite 29 * flavors of this SoC that eventually we will need a finer-grained breakdown 30 * of some of this stuff. For now this file works for all of them. I think. 31 * 32 * $FreeBSD$ 33 */ 34 35/ { 36 cpus { 37 #address-cells = <1>; 38 #size-cells = <0>; 39 40 cpu@0 { 41 device_type = "cpu"; 42 compatible = "ARM,MCIMX6"; 43 reg = <0x0>; 44 d-cache-line-size = <32>; 45 i-cache-line-size = <32>; 46 d-cache-size = <0x8000>; 47 i-cache-size = <0x8000>; 48 /* TODO: describe L2 cache also */ 49 timebase-frequency = <0>; 50 bus-frequency = <0>; 51 clock-frequency = <0>; 52 }; 53 }; 54 55 aliases { 56 soc = &SOC; 57 }; 58 59 SOC: soc@00000000 { 60 compatible = "simple-bus"; 61 #address-cells = <1>; 62 #size-cells = <1>; 63 interrupt-parent = <&gic>; 64 ranges = <0x00000000 0x00000000 0x10000000>; 65 66 gic: generic-interrupt-controller@00a00100 { 67 compatible = "arm,gic"; 68 interrupt-controller; 69 #interrupt-cells = <1>; 70 reg = <0x00a01000 0x00001000 71 0x00a00100 0x00000100>; 72 }; 73 74 mp_tmr0@00a00200 { 75 compatible = "arm,mpcore-timers"; 76 reg = <0x00a00200 0x100 77 0x00a00600 0x100>; 78 interrupts = <27 29>; 79 interrupt-parent = <&gic>; 80 }; 81 82 l2-cache@00a02000 { 83 compatible = "arm,pl310-cache", "arm,pl310"; 84 reg = <0xa02000 0x1000>; 85 interrupts = <124>; 86 cache-level = <0x2>; 87 interrupt-parent = < &gic >; 88 }; 89 90 aips@02000000 { /* AIPS1 */ 91 compatible = "fsl,aips-bus", "simple-bus"; 92 #address-cells = <1>; 93 #size-cells = <1>; 94 interrupt-parent = <&gic>; 95 reg = <0x02000000 0x00100000>; 96 ranges; 97 98 /* Required by many devices, so better to stay first */ 99 clks: ccm@020c4000 { 100 compatible = "fsl,imx6q-ccm"; 101 reg = <0x020c4000 0x4000>; 102 interrupts = <119 120>; 103 }; 104 105 /* System Reset Controller */ 106 src: src@4006E000 { 107 compatible = "fsl,imx6-src"; 108 reg = <0x020D8000 0x100>; 109 }; 110 111 sdma: sdma@020ec000 { 112 compatible = "fsl,imx6q-sdma"; 113 reg = <0x020ec000 0x4000>; 114 interrupt-parent = <&gic>; 115 interrupts = <34>; 116 status = "disabled"; 117 }; 118 119 anatop: anatop@020c8000 { 120 compatible = "fsl,imx6q-anatop"; 121 reg = <0x020c8000 0x1000>; 122 interrupt-parent = <&gic>; 123 interrupts = <49>; 124 }; 125 126 gpt: timer@02098000 { 127 compatible = "fsl,imx6q-gpt", "fsl,imx51-gpt"; 128 reg = <0x02098000 0x4000>; 129 interrupt-parent = <&gic>; 130 interrupts = <87>; 131 }; 132 133 iomux@020e0000 { 134 compatible = "fsl,imx6q-iomuxc"; 135 reg = <0x020e0000 0x4000>; 136 interrupt-parent = <&gic>; 137 interrupts = <32>; 138 }; 139 140 gpio1: gpio@0209c000 { 141 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 142 reg = <0x0209c000 0x4000>; 143 interrupts = < 98 99 >; 144 gpio-controller; 145 #gpio-cells = <2>; 146 interrupt-controller; 147 #interrupt-cells = <2>; 148 status = "disabled"; 149 }; 150 151 gpio2: gpio@020a0000 { 152 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 153 reg = <0x020a0000 0x4000>; 154 interrupts = < 100 101 >; 155 gpio-controller; 156 #gpio-cells = <2>; 157 interrupt-controller; 158 #interrupt-cells = <2>; 159 status = "disabled"; 160 }; 161 162 gpio3: gpio@020a4000 { 163 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 164 reg = <0x020a4000 0x4000>; 165 interrupts = < 102 103 >; 166 gpio-controller; 167 #gpio-cells = <2>; 168 interrupt-controller; 169 #interrupt-cells = <2>; 170 status = "disabled"; 171 }; 172 173 gpio4: gpio@020a8000 { 174 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 175 reg = <0x020a8000 0x4000>; 176 interrupts = < 104 105 >; 177 gpio-controller; 178 #gpio-cells = <2>; 179 interrupt-controller; 180 #interrupt-cells = <2>; 181 status = "disabled"; 182 }; 183 184 gpio5: gpio@020ac000 { 185 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 186 reg = <0x020ac000 0x4000>; 187 interrupts = < 106 107 >; 188 gpio-controller; 189 #gpio-cells = <2>; 190 interrupt-controller; 191 #interrupt-cells = <2>; 192 status = "disabled"; 193 }; 194 195 gpio6: gpio@020b0000 { 196 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 197 reg = <0x020b0000 0x4000>; 198 interrupts = < 108 109 >; 199 gpio-controller; 200 #gpio-cells = <2>; 201 interrupt-controller; 202 #interrupt-cells = <2>; 203 status = "disabled"; 204 }; 205 206 gpio7: gpio@020b4000 { 207 compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; 208 reg = <0x020b4000 0x4000>; 209 interrupts = < 110 111 >; 210 gpio-controller; 211 #gpio-cells = <2>; 212 interrupt-controller; 213 #interrupt-cells = <2>; 214 status = "disabled"; 215 }; 216 217 uart1: serial@02020000 { 218 compatible = "fsl,imx6q-uart"; 219 reg = <0x02020000 0x4000>; 220 interrupt-parent = <&gic>; 221 interrupts = <58>; 222 clock-frequency = <80000000>; 223 status = "disabled"; 224 }; 225 226 uart2: serial@021e8000 { 227 compatible = "fsl,imx6q-uart"; 228 reg = <0x021e8000 0x4000>; 229 interrupt-parent = <&gic>; 230 interrupts = <59>; 231 clock-frequency = <80000000>; 232 status = "disabled"; 233 }; 234 235 uart3: serial@021ec000 { 236 compatible = "fsl,imx6q-uart"; 237 reg = <0x021ec000 0x4000>; 238 interrupt-parent = <&gic>; 239 interrupts = <60>; 240 clock-frequency = <80000000>; 241 status = "disabled"; 242 }; 243 244 uart4: serial@021f0000 { 245 compatible = "fsl,imx6q-uart"; 246 reg = <0x021f0000 0x4000>; 247 interrupt-parent = <&gic>; 248 interrupts = <61>; 249 clock-frequency = <80000000>; 250 status = "disabled"; 251 }; 252 253 uart5: serial@021f4000 { 254 compatible = "fsl,imx6q-uart"; 255 reg = <0x021f4000 0x4000>; 256 interrupt-parent = <&gic>; 257 interrupts = <62>; 258 clock-frequency = <80000000>; 259 status = "disabled"; 260 }; 261 262 usbphy1: usbphy@020c9000 { 263 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; 264 reg = <0x020c9000 0x1000>; 265 interrupts = <44>; 266 status = "disabled"; 267 }; 268 269 usbphy2: usbphy@020ca000 { 270 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; 271 reg = <0x020ca000 0x1000>; 272 interrupts = <45>; 273 status = "disabled"; 274 }; 275 276 ecspi1: ecspi@02008000 { 277 compatible = "fsl,imx6q-ecspi"; 278 reg = <0x02008000 0x4000>; 279 interrupts = < 63 >; 280 status = "disabled"; 281 }; 282 283 ecspi2: ecspi@0200C000 { 284 compatible = "fsl,imx6q-ecspi"; 285 reg = <0x0200C000 0x4000>; 286 interrupts = < 64 >; 287 status = "disabled"; 288 }; 289 290 ecspi3: ecspi@02010000 { 291 compatible = "fsl,imx6q-ecspi"; 292 reg = <0x02010000 0x4000>; 293 interrupts = < 65 >; 294 status = "disabled"; 295 }; 296 297 ecspi4: ecspi@02014000 { 298 compatible = "fsl,imx6q-ecspi"; 299 reg = <0x02014000 0x4000>; 300 interrupts = < 66 >; 301 status = "disabled"; 302 }; 303 304 ecspi5: ecspi@02018000 { 305 compatible = "fsl,imx6q-ecspi"; 306 reg = <0x02018000 0x4000>; 307 interrupts = < 67 >; 308 status = "disabled"; 309 }; 310 311 ssi1: ssi@02028000 { 312 compatible = "fsl,imx6q-ssi"; 313 reg = <0x02028000 0x4000>; 314 interrupts = < 78 >; 315 dmas = <&sdma 37 1 0>, 316 <&sdma 38 1 0>; 317 dma-names = "rx", "tx"; 318 status = "disabled"; 319 }; 320 321 ssi2: ssi@0202C000 { 322 compatible = "fsl,imx6q-ssi"; 323 reg = <0x0202C000 0x4000>; 324 interrupts = < 79 >; 325 status = "disabled"; 326 }; 327 328 ssi3: ssi@02030000 { 329 compatible = "fsl,imx6q-ssi"; 330 reg = <0x02030000 0x4000>; 331 interrupts = < 80 >; 332 status = "disabled"; 333 }; 334 }; 335 336 aips@02100000 { /* AIPS2 */ 337 compatible = "fsl,aips-bus", "simple-bus"; 338 #address-cells = <1>; 339 #size-cells = <1>; 340 interrupt-parent = <&gic>; 341 reg = <0x02100000 0x00100000>; 342 ranges; 343 344 i2c1: i2c@021a0000 { 345 compatible = "fsl,imx6q-i2c"; 346 reg = <0x021a0000 0x4000>; 347 interrupts = < 68 >; 348 status = "disabled"; 349 }; 350 351 i2c2: i2c@021a4000 { 352 compatible = "fsl,imx6q-i2c"; 353 reg = <0x021a4000 0x4000>; 354 interrupts = < 69 >; 355 status = "disabled"; 356 }; 357 358 i2c3: i2c@021ac000 { 359 compatible = "fsl,imx6q-i2c"; 360 reg = <0x021a8000 0x4000>; 361 interrupts = < 70 >; 362 status = "disabled"; 363 }; 364 365 fec1: ethernet@02188000 { 366 compatible = "fsl,imx6q-fec"; 367 reg = <0x02188000 0x4000>; 368 interrupts = <150 151>; 369 status = "disabled"; 370 }; 371 372 usbotg1: usb@02184000 { 373 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 374 reg = <0x02184000 0x200>; 375 interrupts = <75>; 376 fsl,usbphy = <&usbphy1>; 377 fsl,usbmisc = <&usbmisc 0>; 378 status = "disabled"; 379 }; 380 381 usbh1: usb@02184200 { 382 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 383 reg = <0x02184200 0x200>; 384 interrupts = <72>; 385 fsl,usbphy = <&usbphy2>; 386 fsl,usbmisc = <&usbmisc 1>; 387 status = "disabled"; 388 }; 389 390 usbh2: usb@02184400 { 391 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 392 reg = <0x02184400 0x200>; 393 interrupts = <73>; 394 fsl,usbmisc = <&usbmisc 2>; 395 status = "disabled"; 396 }; 397 398 usbh3: usb@02184600 { 399 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 400 reg = <0x02184600 0x200>; 401 interrupts = <74>; 402 fsl,usbmisc = <&usbmisc 3>; 403 status = "disabled"; 404 }; 405 406 usbmisc: usbmisc@02184800 { 407 #index-cells = <1>; 408 compatible = "fsl,imx6q-usbmisc"; 409 reg = <0x02184800 0x200>; 410 // Not disabled on purpose. 411 }; 412 413 usdhc1: usdhc@02190000 { 414 compatible = "fsl,imx6q-usdhc"; 415 reg = <0x02190000 0x4000>; 416 interrupt-parent = <&gic>; 417 interrupts = <54>; 418 cd-gpios = <&gpio1 2 0>; 419 bus-width = <0x4>; 420 status ="disabled"; 421 }; 422 423 usdhc2: usdhc@02194000 { 424 compatible = "fsl,imx6q-usdhc"; 425 reg = <0x02194000 0x4000>; 426 interrupt-parent = <&gic>; 427 interrupts = <55>; 428 non-removable; 429 bus-width = <0x4>; 430 status ="disabled"; 431 }; 432 433 usdhc3: usdhc@02198000 { 434 compatible = "fsl,imx6q-usdhc"; 435 reg = <0x02198000 0x4000>; 436 interrupt-parent = <&gic>; 437 interrupts = <56>; 438 cd-gpios = <&gpio3 9 0>; 439 bus-width = <0x4>; 440 status ="disabled"; 441 }; 442 443 usdhc4: usdhc@0219c000 { 444 compatible = "fsl,imx6q-usdhc"; 445 reg = <0x0219c000 0x4000>; 446 interrupt-parent = <&gic>; 447 interrupts = <57>; 448 bus-width = <0x4>; 449 status ="disabled"; 450 }; 451 452 ocotp0: ocotp@021bc000 { 453 compatible = "fsl,imx6q-ocotp"; 454 reg = <0x021bc000 0x4000>; 455 }; 456 457 audmux: audmux@021d8000 { 458 compatible = "fsl,imx6q-audmux"; 459 reg = <0x021d8000 0x4000>; 460 status = "disabled"; 461 }; 462 }; 463 }; 464}; 465