imx6.dtsi revision 273662
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: stable/10/sys/boot/fdt/dts/arm/imx6.dtsi 273662 2014-10-26 02:40:34Z ian $
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>; interrupts = <87>;
130			};
131
132			iomux@020e0000 {
133				compatible = "fsl,imx6q-iomux";
134				reg = <0x020e0000 0x4000>;
135				interrupt-parent = <&gic>;
136				interrupts = <32>;
137				status = "disabled";
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				status = "disabled";
316			};
317
318			ssi2: ssi@0202C000 {
319				compatible = "fsl,imx6q-ssi";
320				reg = <0x0202C000 0x4000>;
321				interrupts = < 79 >;
322				status = "disabled";
323			};
324
325			ssi3: ssi@02030000 {
326				compatible = "fsl,imx6q-ssi";
327				reg = <0x02030000 0x4000>;
328				interrupts = < 80 >;
329				status = "disabled";
330			};
331		};
332
333		aips@02100000 { /* AIPS2 */
334			compatible = "fsl,aips-bus", "simple-bus";
335			#address-cells = <1>;
336			#size-cells = <1>;
337			interrupt-parent = <&gic>;
338			reg = <0x02100000 0x00100000>;
339			ranges;
340
341			i2c1: i2c@021a0000 {
342				compatible = "fsl,imx6q-i2c";
343				reg = <0x021a0000 0x4000>;
344				interrupts = < 68 >;
345				status = "disabled";
346			};
347
348			i2c2: i2c@021a4000 {
349				compatible = "fsl,imx6q-i2c";
350				reg = <0x021a4000 0x4000>;
351				interrupts = < 69 >;
352				status = "disabled";
353			};
354
355			i2c3: i2c@021ac000 {
356				compatible = "fsl,imx6q-i2c";
357				reg = <0x021a8000 0x4000>;
358				interrupts = < 70 >;
359				status = "disabled";
360			};
361
362			fec1: ethernet@02188000 {
363				compatible = "fsl,imx6q-fec";
364				reg = <0x02188000 0x4000>;
365				interrupts = <150 151>;
366				status = "disabled";
367			};
368
369			usbotg1: usb@02184000 {
370				compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
371				reg = <0x02184000 0x200>;
372				interrupts = <75>;
373				fsl,usbphy = <&usbphy1>;
374				fsl,usbmisc = <&usbmisc 0>;
375				status = "disabled";
376			};
377
378			usbh1: usb@02184200 {
379				compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
380				reg = <0x02184200 0x200>;
381				interrupts = <72>;
382				fsl,usbphy = <&usbphy2>;
383				fsl,usbmisc = <&usbmisc 1>;
384				status = "disabled";
385			};
386
387			usbh2: usb@02184400 {
388				compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
389				reg = <0x02184400 0x200>;
390				interrupts = <73>;
391				fsl,usbmisc = <&usbmisc 2>;
392				status = "disabled";
393			};
394
395			usbh3: usb@02184600 {
396				compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
397				reg = <0x02184600 0x200>;
398				interrupts = <74>;
399				fsl,usbmisc = <&usbmisc 3>;
400				status = "disabled";
401			};
402
403			usbmisc: usbmisc@02184800 {
404				#index-cells = <1>;
405				compatible = "fsl,imx6q-usbmisc";
406				reg = <0x02184800 0x200>;
407				// Not disabled on purpose.
408			};
409
410			usdhc1: usdhc@02190000 {
411				compatible = "fsl,imx6q-usdhc";
412				reg = <0x02190000 0x4000>;
413				interrupt-parent = <&gic>;
414				interrupts = <54>;
415				cd-gpios = <&gpio1 2 0>;
416				bus-width = <0x4>;
417				status ="disabled";
418			};
419
420			usdhc2: usdhc@02194000 {
421				compatible = "fsl,imx6q-usdhc";
422				reg = <0x02194000 0x4000>;
423				interrupt-parent = <&gic>;
424				interrupts = <55>;
425				non-removable;
426				bus-width = <0x4>;
427				status ="disabled";
428			};
429
430			usdhc3: usdhc@02198000 {
431				compatible = "fsl,imx6q-usdhc";
432				reg = <0x02198000 0x4000>;
433				interrupt-parent = <&gic>;
434				interrupts = <56>;
435				cd-gpios = <&gpio3 9 0>;
436				bus-width = <0x4>;
437				status ="disabled";
438			};
439
440			usdhc4: usdhc@0219c000 {
441				compatible = "fsl,imx6q-usdhc";
442				reg = <0x0219c000 0x4000>;
443				interrupt-parent = <&gic>;
444				interrupts = <57>;
445				bus-width = <0x4>;
446				status ="disabled";
447			};
448
449			ocotp0: ocotp@021bc000 {
450				compatible = "fsl,imx6q-ocotp";
451				reg = <0x021bc000 0x4000>;
452			};
453
454			audmux: audmux@021d8000 {
455				compatible = "fsl,imx6q-audmux";
456				reg = <0x021d8000 0x4000>;
457				status = "disabled";
458			};
459		};
460	};
461};
462