/* * Copyright (c) 2013 Ian Lepore * Copyright (c) 2012 The FreeBSD Foundation * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * Freescale i.MX6 Common Device Tree Source. * There are enough differences between the Solo, Dual, Quad, and *-lite * flavors of this SoC that eventually we will need a finer-grained breakdown * of some of this stuff. For now this file works for all of them. I think. * * $FreeBSD$ */ / { cpus { #address-cells = <1>; #size-cells = <0>; cpu@0 { device_type = "cpu"; compatible = "ARM,MCIMX6"; reg = <0x0>; d-cache-line-size = <32>; i-cache-line-size = <32>; d-cache-size = <0x8000>; i-cache-size = <0x8000>; /* TODO: describe L2 cache also */ timebase-frequency = <0>; bus-frequency = <0>; clock-frequency = <0>; }; }; aliases { soc = &SOC; }; SOC: soc@00000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; interrupt-parent = <&gic>; ranges = <0x00000000 0x00000000 0x10000000>; gic: generic-interrupt-controller@00a00100 { compatible = "arm,gic"; interrupt-controller; #interrupt-cells = <1>; reg = <0x00a01000 0x00001000 0x00a00100 0x00000100>; }; mp_tmr0@00a00200 { compatible = "arm,mpcore-timers"; reg = <0x00a00200 0x100 0x00a00600 0x100>; interrupts = <27 29>; interrupt-parent = <&gic>; }; l2-cache@00a02000 { compatible = "arm,pl310-cache", "arm,pl310"; reg = <0xa02000 0x1000>; interrupts = <124>; cache-level = <0x2>; interrupt-parent = < &gic >; }; aips@02000000 { /* AIPS1 */ compatible = "fsl,aips-bus", "simple-bus"; #address-cells = <1>; #size-cells = <1>; interrupt-parent = <&gic>; reg = <0x02000000 0x00100000>; ranges; /* Required by many devices, so better to stay first */ clks: ccm@020c4000 { compatible = "fsl,imx6q-ccm"; reg = <0x020c4000 0x4000>; interrupts = <119 120>; }; /* System Reset Controller */ src: src@4006E000 { compatible = "fsl,imx6-src"; reg = <0x020D8000 0x100>; }; sdma: sdma@020ec000 { compatible = "fsl,imx6q-sdma"; reg = <0x020ec000 0x4000>; interrupt-parent = <&gic>; interrupts = <34>; status = "disabled"; }; anatop: anatop@020c8000 { compatible = "fsl,imx6q-anatop"; reg = <0x020c8000 0x1000>; interrupt-parent = <&gic>; interrupts = <49>; }; gpt: timer@02098000 { compatible = "fsl,imx6q-gpt", "fsl,imx51-gpt"; reg = <0x02098000 0x4000>; interrupt-parent = <&gic>; interrupts = <87>; }; iomux@020e0000 { compatible = "fsl,imx6q-iomuxc"; reg = <0x020e0000 0x4000>; interrupt-parent = <&gic>; interrupts = <32>; }; gpio1: gpio@0209c000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x0209c000 0x4000>; interrupts = < 98 99 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; gpio2: gpio@020a0000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x020a0000 0x4000>; interrupts = < 100 101 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; gpio3: gpio@020a4000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x020a4000 0x4000>; interrupts = < 102 103 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; gpio4: gpio@020a8000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x020a8000 0x4000>; interrupts = < 104 105 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; gpio5: gpio@020ac000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x020ac000 0x4000>; interrupts = < 106 107 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; gpio6: gpio@020b0000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x020b0000 0x4000>; interrupts = < 108 109 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; gpio7: gpio@020b4000 { compatible = "fsl,imx6q-gpio", "fsl,imx35-gpio"; reg = <0x020b4000 0x4000>; interrupts = < 110 111 >; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; status = "disabled"; }; uart1: serial@02020000 { compatible = "fsl,imx6q-uart"; reg = <0x02020000 0x4000>; interrupt-parent = <&gic>; interrupts = <58>; clock-frequency = <80000000>; status = "disabled"; }; uart2: serial@021e8000 { compatible = "fsl,imx6q-uart"; reg = <0x021e8000 0x4000>; interrupt-parent = <&gic>; interrupts = <59>; clock-frequency = <80000000>; status = "disabled"; }; uart3: serial@021ec000 { compatible = "fsl,imx6q-uart"; reg = <0x021ec000 0x4000>; interrupt-parent = <&gic>; interrupts = <60>; clock-frequency = <80000000>; status = "disabled"; }; uart4: serial@021f0000 { compatible = "fsl,imx6q-uart"; reg = <0x021f0000 0x4000>; interrupt-parent = <&gic>; interrupts = <61>; clock-frequency = <80000000>; status = "disabled"; }; uart5: serial@021f4000 { compatible = "fsl,imx6q-uart"; reg = <0x021f4000 0x4000>; interrupt-parent = <&gic>; interrupts = <62>; clock-frequency = <80000000>; status = "disabled"; }; usbphy1: usbphy@020c9000 { compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; reg = <0x020c9000 0x1000>; interrupts = <44>; status = "disabled"; }; usbphy2: usbphy@020ca000 { compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; reg = <0x020ca000 0x1000>; interrupts = <45>; status = "disabled"; }; ecspi1: ecspi@02008000 { compatible = "fsl,imx6q-ecspi"; reg = <0x02008000 0x4000>; interrupts = < 63 >; status = "disabled"; }; ecspi2: ecspi@0200C000 { compatible = "fsl,imx6q-ecspi"; reg = <0x0200C000 0x4000>; interrupts = < 64 >; status = "disabled"; }; ecspi3: ecspi@02010000 { compatible = "fsl,imx6q-ecspi"; reg = <0x02010000 0x4000>; interrupts = < 65 >; status = "disabled"; }; ecspi4: ecspi@02014000 { compatible = "fsl,imx6q-ecspi"; reg = <0x02014000 0x4000>; interrupts = < 66 >; status = "disabled"; }; ecspi5: ecspi@02018000 { compatible = "fsl,imx6q-ecspi"; reg = <0x02018000 0x4000>; interrupts = < 67 >; status = "disabled"; }; ssi1: ssi@02028000 { compatible = "fsl,imx6q-ssi"; reg = <0x02028000 0x4000>; interrupts = < 78 >; dmas = <&sdma 37 1 0>, <&sdma 38 1 0>; dma-names = "rx", "tx"; status = "disabled"; }; ssi2: ssi@0202C000 { compatible = "fsl,imx6q-ssi"; reg = <0x0202C000 0x4000>; interrupts = < 79 >; status = "disabled"; }; ssi3: ssi@02030000 { compatible = "fsl,imx6q-ssi"; reg = <0x02030000 0x4000>; interrupts = < 80 >; status = "disabled"; }; }; aips@02100000 { /* AIPS2 */ compatible = "fsl,aips-bus", "simple-bus"; #address-cells = <1>; #size-cells = <1>; interrupt-parent = <&gic>; reg = <0x02100000 0x00100000>; ranges; i2c1: i2c@021a0000 { compatible = "fsl,imx6q-i2c"; reg = <0x021a0000 0x4000>; interrupts = < 68 >; status = "disabled"; }; i2c2: i2c@021a4000 { compatible = "fsl,imx6q-i2c"; reg = <0x021a4000 0x4000>; interrupts = < 69 >; status = "disabled"; }; i2c3: i2c@021ac000 { compatible = "fsl,imx6q-i2c"; reg = <0x021a8000 0x4000>; interrupts = < 70 >; status = "disabled"; }; fec1: ethernet@02188000 { compatible = "fsl,imx6q-fec"; reg = <0x02188000 0x4000>; interrupts = <150 151>; status = "disabled"; }; usbotg1: usb@02184000 { compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; reg = <0x02184000 0x200>; interrupts = <75>; fsl,usbphy = <&usbphy1>; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; }; usbh1: usb@02184200 { compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; reg = <0x02184200 0x200>; interrupts = <72>; fsl,usbphy = <&usbphy2>; fsl,usbmisc = <&usbmisc 1>; status = "disabled"; }; usbh2: usb@02184400 { compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; reg = <0x02184400 0x200>; interrupts = <73>; fsl,usbmisc = <&usbmisc 2>; status = "disabled"; }; usbh3: usb@02184600 { compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; reg = <0x02184600 0x200>; interrupts = <74>; fsl,usbmisc = <&usbmisc 3>; status = "disabled"; }; usbmisc: usbmisc@02184800 { #index-cells = <1>; compatible = "fsl,imx6q-usbmisc"; reg = <0x02184800 0x200>; // Not disabled on purpose. }; usdhc1: usdhc@02190000 { compatible = "fsl,imx6q-usdhc"; reg = <0x02190000 0x4000>; interrupt-parent = <&gic>; interrupts = <54>; cd-gpios = <&gpio1 2 0>; bus-width = <0x4>; status ="disabled"; }; usdhc2: usdhc@02194000 { compatible = "fsl,imx6q-usdhc"; reg = <0x02194000 0x4000>; interrupt-parent = <&gic>; interrupts = <55>; non-removable; bus-width = <0x4>; status ="disabled"; }; usdhc3: usdhc@02198000 { compatible = "fsl,imx6q-usdhc"; reg = <0x02198000 0x4000>; interrupt-parent = <&gic>; interrupts = <56>; cd-gpios = <&gpio3 9 0>; bus-width = <0x4>; status ="disabled"; }; usdhc4: usdhc@0219c000 { compatible = "fsl,imx6q-usdhc"; reg = <0x0219c000 0x4000>; interrupt-parent = <&gic>; interrupts = <57>; bus-width = <0x4>; status ="disabled"; }; ocotp0: ocotp@021bc000 { compatible = "fsl,imx6q-ocotp"; reg = <0x021bc000 0x4000>; }; audmux: audmux@021d8000 { compatible = "fsl,imx6q-audmux"; reg = <0x021d8000 0x4000>; status = "disabled"; }; }; }; };