xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/imx31.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0+
2*4882a593Smuzhiyun//
3*4882a593Smuzhiyun// Copyright 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
4*4882a593Smuzhiyun// Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun/ {
7*4882a593Smuzhiyun	#address-cells = <1>;
8*4882a593Smuzhiyun	#size-cells = <1>;
9*4882a593Smuzhiyun	/*
10*4882a593Smuzhiyun	 * The decompressor and also some bootloaders rely on a
11*4882a593Smuzhiyun	 * pre-existing /chosen node to be available to insert the
12*4882a593Smuzhiyun	 * command line and merge other ATAGS info.
13*4882a593Smuzhiyun	 */
14*4882a593Smuzhiyun	chosen {};
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun	aliases {
17*4882a593Smuzhiyun		gpio0 = &gpio1;
18*4882a593Smuzhiyun		gpio1 = &gpio2;
19*4882a593Smuzhiyun		gpio2 = &gpio3;
20*4882a593Smuzhiyun		i2c0 = &i2c1;
21*4882a593Smuzhiyun		i2c1 = &i2c2;
22*4882a593Smuzhiyun		i2c2 = &i2c3;
23*4882a593Smuzhiyun		serial0 = &uart1;
24*4882a593Smuzhiyun		serial1 = &uart2;
25*4882a593Smuzhiyun		serial2 = &uart3;
26*4882a593Smuzhiyun		serial3 = &uart4;
27*4882a593Smuzhiyun		serial4 = &uart5;
28*4882a593Smuzhiyun		spi0 = &spi1;
29*4882a593Smuzhiyun		spi1 = &spi2;
30*4882a593Smuzhiyun		spi2 = &spi3;
31*4882a593Smuzhiyun	};
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	cpus {
34*4882a593Smuzhiyun		#address-cells = <1>;
35*4882a593Smuzhiyun		#size-cells = <0>;
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		cpu@0 {
38*4882a593Smuzhiyun			compatible = "arm,arm1136jf-s";
39*4882a593Smuzhiyun			device_type = "cpu";
40*4882a593Smuzhiyun			reg = <0>;
41*4882a593Smuzhiyun		};
42*4882a593Smuzhiyun	};
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun	avic: interrupt-controller@68000000 {
45*4882a593Smuzhiyun		compatible = "fsl,imx31-avic", "fsl,avic";
46*4882a593Smuzhiyun		interrupt-controller;
47*4882a593Smuzhiyun		#interrupt-cells = <1>;
48*4882a593Smuzhiyun		reg = <0x68000000 0x100000>;
49*4882a593Smuzhiyun	};
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun	soc {
52*4882a593Smuzhiyun		#address-cells = <1>;
53*4882a593Smuzhiyun		#size-cells = <1>;
54*4882a593Smuzhiyun		compatible = "simple-bus";
55*4882a593Smuzhiyun		interrupt-parent = <&avic>;
56*4882a593Smuzhiyun		ranges;
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun		iram: sram@1fffc000 {
59*4882a593Smuzhiyun			compatible = "mmio-sram";
60*4882a593Smuzhiyun			reg = <0x1fffc000 0x4000>;
61*4882a593Smuzhiyun			#address-cells = <1>;
62*4882a593Smuzhiyun			#size-cells = <1>;
63*4882a593Smuzhiyun			ranges = <0 0x1fffc000 0x4000>;
64*4882a593Smuzhiyun		};
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun		bus@43f00000 { /* AIPS1 */
67*4882a593Smuzhiyun			compatible = "fsl,aips-bus", "simple-bus";
68*4882a593Smuzhiyun			#address-cells = <1>;
69*4882a593Smuzhiyun			#size-cells = <1>;
70*4882a593Smuzhiyun			reg = <0x43f00000 0x100000>;
71*4882a593Smuzhiyun			ranges;
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun			i2c1: i2c@43f80000 {
74*4882a593Smuzhiyun				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
75*4882a593Smuzhiyun				reg = <0x43f80000 0x4000>;
76*4882a593Smuzhiyun				interrupts = <10>;
77*4882a593Smuzhiyun				clocks = <&clks 33>;
78*4882a593Smuzhiyun				#address-cells = <1>;
79*4882a593Smuzhiyun				#size-cells = <0>;
80*4882a593Smuzhiyun				status = "disabled";
81*4882a593Smuzhiyun			};
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun			i2c3: i2c@43f84000 {
84*4882a593Smuzhiyun				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
85*4882a593Smuzhiyun				reg = <0x43f84000 0x4000>;
86*4882a593Smuzhiyun				interrupts = <3>;
87*4882a593Smuzhiyun				clocks = <&clks 35>;
88*4882a593Smuzhiyun				#address-cells = <1>;
89*4882a593Smuzhiyun				#size-cells = <0>;
90*4882a593Smuzhiyun				status = "disabled";
91*4882a593Smuzhiyun			};
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun			ata: ata@43f8c000 {
94*4882a593Smuzhiyun				compatible = "fsl,imx31-pata", "fsl,imx27-pata";
95*4882a593Smuzhiyun				reg = <0x43f8c000 0x4000>;
96*4882a593Smuzhiyun				interrupts = <15>;
97*4882a593Smuzhiyun				clocks = <&clks 26>;
98*4882a593Smuzhiyun				status = "disabled";
99*4882a593Smuzhiyun			};
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun			uart1: serial@43f90000 {
102*4882a593Smuzhiyun				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
103*4882a593Smuzhiyun				reg = <0x43f90000 0x4000>;
104*4882a593Smuzhiyun				interrupts = <45>;
105*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 30>;
106*4882a593Smuzhiyun				clock-names = "ipg", "per";
107*4882a593Smuzhiyun				status = "disabled";
108*4882a593Smuzhiyun			};
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun			uart2: serial@43f94000 {
111*4882a593Smuzhiyun				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
112*4882a593Smuzhiyun				reg = <0x43f94000 0x4000>;
113*4882a593Smuzhiyun				interrupts = <32>;
114*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 31>;
115*4882a593Smuzhiyun				clock-names = "ipg", "per";
116*4882a593Smuzhiyun				status = "disabled";
117*4882a593Smuzhiyun			};
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun			i2c2: i2c@43f98000 {
120*4882a593Smuzhiyun				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
121*4882a593Smuzhiyun				reg = <0x43f98000 0x4000>;
122*4882a593Smuzhiyun				interrupts = <4>;
123*4882a593Smuzhiyun				clocks = <&clks 34>;
124*4882a593Smuzhiyun				#address-cells = <1>;
125*4882a593Smuzhiyun				#size-cells = <0>;
126*4882a593Smuzhiyun				status = "disabled";
127*4882a593Smuzhiyun			};
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun			spi1: spi@43fa4000 {
130*4882a593Smuzhiyun				compatible = "fsl,imx31-cspi";
131*4882a593Smuzhiyun				reg = <0x43fa4000 0x4000>;
132*4882a593Smuzhiyun				interrupts = <14>;
133*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 53>;
134*4882a593Smuzhiyun				clock-names = "ipg", "per";
135*4882a593Smuzhiyun				dmas = <&sdma 8 8 0>, <&sdma 9 8 0>;
136*4882a593Smuzhiyun				dma-names = "rx", "tx";
137*4882a593Smuzhiyun				#address-cells = <1>;
138*4882a593Smuzhiyun				#size-cells = <0>;
139*4882a593Smuzhiyun				status = "disabled";
140*4882a593Smuzhiyun			};
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun			kpp: kpp@43fa8000 {
143*4882a593Smuzhiyun				compatible = "fsl,imx31-kpp", "fsl,imx21-kpp";
144*4882a593Smuzhiyun				reg = <0x43fa8000 0x4000>;
145*4882a593Smuzhiyun				interrupts = <24>;
146*4882a593Smuzhiyun				clocks = <&clks 46>;
147*4882a593Smuzhiyun				status = "disabled";
148*4882a593Smuzhiyun			};
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun			uart4: serial@43fb0000 {
151*4882a593Smuzhiyun				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
152*4882a593Smuzhiyun				reg = <0x43fb0000 0x4000>;
153*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 49>;
154*4882a593Smuzhiyun				clock-names = "ipg", "per";
155*4882a593Smuzhiyun				interrupts = <46>;
156*4882a593Smuzhiyun				status = "disabled";
157*4882a593Smuzhiyun			};
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun			uart5: serial@43fb4000 {
160*4882a593Smuzhiyun				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
161*4882a593Smuzhiyun				reg = <0x43fb4000 0x4000>;
162*4882a593Smuzhiyun				interrupts = <47>;
163*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 50>;
164*4882a593Smuzhiyun				clock-names = "ipg", "per";
165*4882a593Smuzhiyun				status = "disabled";
166*4882a593Smuzhiyun			};
167*4882a593Smuzhiyun		};
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun		spba@50000000 {
170*4882a593Smuzhiyun			compatible = "fsl,spba-bus", "simple-bus";
171*4882a593Smuzhiyun			#address-cells = <1>;
172*4882a593Smuzhiyun			#size-cells = <1>;
173*4882a593Smuzhiyun			reg = <0x50000000 0x100000>;
174*4882a593Smuzhiyun			ranges;
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun			sdhci1: mmc@50004000 {
177*4882a593Smuzhiyun				compatible = "fsl,imx31-mmc";
178*4882a593Smuzhiyun				reg = <0x50004000 0x4000>;
179*4882a593Smuzhiyun				interrupts = <9>;
180*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 20>;
181*4882a593Smuzhiyun				clock-names = "ipg", "per";
182*4882a593Smuzhiyun				dmas = <&sdma 20 3 0>;
183*4882a593Smuzhiyun				dma-names = "rx-tx";
184*4882a593Smuzhiyun				status = "disabled";
185*4882a593Smuzhiyun			};
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun			sdhci2: mmc@50008000 {
188*4882a593Smuzhiyun				compatible = "fsl,imx31-mmc";
189*4882a593Smuzhiyun				reg = <0x50008000 0x4000>;
190*4882a593Smuzhiyun				interrupts = <8>;
191*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 21>;
192*4882a593Smuzhiyun				clock-names = "ipg", "per";
193*4882a593Smuzhiyun				dmas = <&sdma 21 3 0>;
194*4882a593Smuzhiyun				dma-names = "rx-tx";
195*4882a593Smuzhiyun				status = "disabled";
196*4882a593Smuzhiyun			};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun			uart3: serial@5000c000 {
199*4882a593Smuzhiyun				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
200*4882a593Smuzhiyun				reg = <0x5000c000 0x4000>;
201*4882a593Smuzhiyun				interrupts = <18>;
202*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 48>;
203*4882a593Smuzhiyun				clock-names = "ipg", "per";
204*4882a593Smuzhiyun				status = "disabled";
205*4882a593Smuzhiyun			};
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun			spi2: spi@50010000 {
208*4882a593Smuzhiyun				compatible = "fsl,imx31-cspi";
209*4882a593Smuzhiyun				reg = <0x50010000 0x4000>;
210*4882a593Smuzhiyun				interrupts = <13>;
211*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 54>;
212*4882a593Smuzhiyun				clock-names = "ipg", "per";
213*4882a593Smuzhiyun				dmas = <&sdma 6 8 0>, <&sdma 7 8 0>;
214*4882a593Smuzhiyun				dma-names = "rx", "tx";
215*4882a593Smuzhiyun				#address-cells = <1>;
216*4882a593Smuzhiyun				#size-cells = <0>;
217*4882a593Smuzhiyun				status = "disabled";
218*4882a593Smuzhiyun			};
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun			iim: efuse@5001c000 {
221*4882a593Smuzhiyun				compatible = "fsl,imx31-iim", "fsl,imx27-iim";
222*4882a593Smuzhiyun				reg = <0x5001c000 0x1000>;
223*4882a593Smuzhiyun				interrupts = <19>;
224*4882a593Smuzhiyun				clocks = <&clks 25>;
225*4882a593Smuzhiyun			};
226*4882a593Smuzhiyun		};
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun		bus@53f00000 { /* AIPS2 */
229*4882a593Smuzhiyun			compatible = "fsl,aips-bus", "simple-bus";
230*4882a593Smuzhiyun			#address-cells = <1>;
231*4882a593Smuzhiyun			#size-cells = <1>;
232*4882a593Smuzhiyun			reg = <0x53f00000 0x100000>;
233*4882a593Smuzhiyun			ranges;
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun			clks: ccm@53f80000{
236*4882a593Smuzhiyun				compatible = "fsl,imx31-ccm";
237*4882a593Smuzhiyun				reg = <0x53f80000 0x4000>;
238*4882a593Smuzhiyun				interrupts = <31>, <53>;
239*4882a593Smuzhiyun				#clock-cells = <1>;
240*4882a593Smuzhiyun			};
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun			spi3: spi@53f84000 {
243*4882a593Smuzhiyun				compatible = "fsl,imx31-cspi";
244*4882a593Smuzhiyun				reg = <0x53f84000 0x4000>;
245*4882a593Smuzhiyun				interrupts = <17>;
246*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 28>;
247*4882a593Smuzhiyun				clock-names = "ipg", "per";
248*4882a593Smuzhiyun				dmas = <&sdma 10 8 0>, <&sdma 11 8 0>;
249*4882a593Smuzhiyun				dma-names = "rx", "tx";
250*4882a593Smuzhiyun				#address-cells = <1>;
251*4882a593Smuzhiyun				#size-cells = <0>;
252*4882a593Smuzhiyun				status = "disabled";
253*4882a593Smuzhiyun			};
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun			gpt: timer@53f90000 {
256*4882a593Smuzhiyun				compatible = "fsl,imx31-gpt";
257*4882a593Smuzhiyun				reg = <0x53f90000 0x4000>;
258*4882a593Smuzhiyun				interrupts = <29>;
259*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 22>;
260*4882a593Smuzhiyun				clock-names = "ipg", "per";
261*4882a593Smuzhiyun			};
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun			gpio3: gpio@53fa4000 {
264*4882a593Smuzhiyun				compatible = "fsl,imx31-gpio";
265*4882a593Smuzhiyun				reg = <0x53fa4000 0x4000>;
266*4882a593Smuzhiyun				interrupts = <56>;
267*4882a593Smuzhiyun				gpio-controller;
268*4882a593Smuzhiyun				#gpio-cells = <2>;
269*4882a593Smuzhiyun				interrupt-controller;
270*4882a593Smuzhiyun				#interrupt-cells = <2>;
271*4882a593Smuzhiyun			};
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun			rng@53fb0000 {
274*4882a593Smuzhiyun				compatible = "fsl,imx31-rnga";
275*4882a593Smuzhiyun				reg = <0x53fb0000 0x4000>;
276*4882a593Smuzhiyun				interrupts = <22>;
277*4882a593Smuzhiyun				clocks = <&clks 29>;
278*4882a593Smuzhiyun			};
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun			gpio1: gpio@53fcc000 {
281*4882a593Smuzhiyun				compatible = "fsl,imx31-gpio";
282*4882a593Smuzhiyun				reg = <0x53fcc000 0x4000>;
283*4882a593Smuzhiyun				interrupts = <52>;
284*4882a593Smuzhiyun				gpio-controller;
285*4882a593Smuzhiyun				#gpio-cells = <2>;
286*4882a593Smuzhiyun				interrupt-controller;
287*4882a593Smuzhiyun				#interrupt-cells = <2>;
288*4882a593Smuzhiyun			};
289*4882a593Smuzhiyun
290*4882a593Smuzhiyun			gpio2: gpio@53fd0000 {
291*4882a593Smuzhiyun				compatible = "fsl,imx31-gpio";
292*4882a593Smuzhiyun				reg = <0x53fd0000 0x4000>;
293*4882a593Smuzhiyun				interrupts = <51>;
294*4882a593Smuzhiyun				gpio-controller;
295*4882a593Smuzhiyun				#gpio-cells = <2>;
296*4882a593Smuzhiyun				interrupt-controller;
297*4882a593Smuzhiyun				#interrupt-cells = <2>;
298*4882a593Smuzhiyun			};
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun			sdma: sdma@53fd4000 {
301*4882a593Smuzhiyun				compatible = "fsl,imx31-sdma";
302*4882a593Smuzhiyun				reg = <0x53fd4000 0x4000>;
303*4882a593Smuzhiyun				interrupts = <34>;
304*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 27>;
305*4882a593Smuzhiyun				clock-names = "ipg", "ahb";
306*4882a593Smuzhiyun				#dma-cells = <3>;
307*4882a593Smuzhiyun				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx31.bin";
308*4882a593Smuzhiyun			};
309*4882a593Smuzhiyun
310*4882a593Smuzhiyun			rtc: rtc@53fd8000 {
311*4882a593Smuzhiyun				compatible = "fsl,imx31-rtc", "fsl,imx21-rtc";
312*4882a593Smuzhiyun				reg = <0x53fd8000 0x4000>;
313*4882a593Smuzhiyun				interrupts = <25>;
314*4882a593Smuzhiyun				clocks = <&clks 2>, <&clks 40>;
315*4882a593Smuzhiyun				clock-names = "ref", "ipg";
316*4882a593Smuzhiyun			};
317*4882a593Smuzhiyun
318*4882a593Smuzhiyun			wdog: wdog@53fdc000 {
319*4882a593Smuzhiyun				compatible = "fsl,imx31-wdt", "fsl,imx21-wdt";
320*4882a593Smuzhiyun				reg = <0x53fdc000 0x4000>;
321*4882a593Smuzhiyun				clocks = <&clks 41>;
322*4882a593Smuzhiyun			};
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun			pwm: pwm@53fe0000 {
325*4882a593Smuzhiyun				compatible = "fsl,imx31-pwm", "fsl,imx27-pwm";
326*4882a593Smuzhiyun				reg = <0x53fe0000 0x4000>;
327*4882a593Smuzhiyun				interrupts = <26>;
328*4882a593Smuzhiyun				clocks = <&clks 10>, <&clks 42>;
329*4882a593Smuzhiyun				clock-names = "ipg", "per";
330*4882a593Smuzhiyun				#pwm-cells = <3>;
331*4882a593Smuzhiyun				status = "disabled";
332*4882a593Smuzhiyun			};
333*4882a593Smuzhiyun		};
334*4882a593Smuzhiyun
335*4882a593Smuzhiyun		emi@b8000000 { /* External Memory Interface */
336*4882a593Smuzhiyun			compatible = "simple-bus";
337*4882a593Smuzhiyun			reg = <0xb8000000 0x5000>;
338*4882a593Smuzhiyun			ranges;
339*4882a593Smuzhiyun			#address-cells = <1>;
340*4882a593Smuzhiyun			#size-cells = <1>;
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun			nfc: nand@b8000000 {
343*4882a593Smuzhiyun				compatible = "fsl,imx31-nand", "fsl,imx27-nand";
344*4882a593Smuzhiyun				reg = <0xb8000000 0x1000>;
345*4882a593Smuzhiyun				interrupts = <33>;
346*4882a593Smuzhiyun				clocks = <&clks 9>;
347*4882a593Smuzhiyun				dmas = <&sdma 30 17 0>;
348*4882a593Smuzhiyun				dma-names = "rx-tx";
349*4882a593Smuzhiyun				#address-cells = <1>;
350*4882a593Smuzhiyun				#size-cells = <1>;
351*4882a593Smuzhiyun				status = "disabled";
352*4882a593Smuzhiyun			};
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun			weim: weim@b8002000 {
355*4882a593Smuzhiyun				compatible = "fsl,imx31-weim", "fsl,imx27-weim";
356*4882a593Smuzhiyun				reg = <0xb8002000 0x1000>;
357*4882a593Smuzhiyun				clocks = <&clks 56>;
358*4882a593Smuzhiyun				#address-cells = <2>;
359*4882a593Smuzhiyun				#size-cells = <1>;
360*4882a593Smuzhiyun				ranges = <0 0 0xa0000000 0x08000000
361*4882a593Smuzhiyun					  1 0 0xa8000000 0x08000000
362*4882a593Smuzhiyun					  2 0 0xb0000000 0x02000000
363*4882a593Smuzhiyun					  3 0 0xb2000000 0x02000000
364*4882a593Smuzhiyun					  4 0 0xb4000000 0x02000000
365*4882a593Smuzhiyun					  5 0 0xb6000000 0x02000000>;
366*4882a593Smuzhiyun				status = "disabled";
367*4882a593Smuzhiyun			};
368*4882a593Smuzhiyun		};
369*4882a593Smuzhiyun	};
370*4882a593Smuzhiyun};
371