1// SPDX-License-Identifier: GPL-2.0+
2//
3// Copyright 2012 Freescale Semiconductor, Inc.
4
5#include "imx23-pinfunc.h"
6
7/ {
8	#address-cells = <1>;
9	#size-cells = <1>;
10
11	interrupt-parent = <&icoll>;
12	/*
13	 * The decompressor and also some bootloaders rely on a
14	 * pre-existing /chosen node to be available to insert the
15	 * command line and merge other ATAGS info.
16	 */
17	chosen {};
18
19	aliases {
20		gpio0 = &gpio0;
21		gpio1 = &gpio1;
22		gpio2 = &gpio2;
23		serial0 = &auart0;
24		serial1 = &auart1;
25		spi0 = &ssp0;
26		spi1 = &ssp1;
27		usbphy0 = &usbphy0;
28	};
29
30	cpus {
31		#address-cells = <1>;
32		#size-cells = <0>;
33
34		cpu@0 {
35			compatible = "arm,arm926ej-s";
36			device_type = "cpu";
37			reg = <0>;
38		};
39	};
40
41	apb@80000000 {
42		compatible = "simple-bus";
43		#address-cells = <1>;
44		#size-cells = <1>;
45		reg = <0x80000000 0x80000>;
46		ranges;
47
48		apbh@80000000 {
49			compatible = "simple-bus";
50			#address-cells = <1>;
51			#size-cells = <1>;
52			reg = <0x80000000 0x40000>;
53			ranges;
54
55			icoll: interrupt-controller@80000000 {
56				compatible = "fsl,imx23-icoll", "fsl,icoll";
57				interrupt-controller;
58				#interrupt-cells = <1>;
59				reg = <0x80000000 0x2000>;
60			};
61
62			dma_apbh: dma-apbh@80004000 {
63				compatible = "fsl,imx23-dma-apbh";
64				reg = <0x80004000 0x2000>;
65				interrupts = <0 14 20 0
66					      13 13 13 13>;
67				interrupt-names = "empty", "ssp0", "ssp1", "empty",
68						  "gpmi0", "gpmi1", "gpmi2", "gpmi3";
69				#dma-cells = <1>;
70				dma-channels = <8>;
71				clocks = <&clks 15>;
72			};
73
74			ecc@80008000 {
75				reg = <0x80008000 0x2000>;
76				status = "disabled";
77			};
78
79			gpmi-nand@8000c000 {
80				compatible = "fsl,imx23-gpmi-nand";
81				#address-cells = <1>;
82				#size-cells = <1>;
83				reg = <0x8000c000 0x2000>, <0x8000a000 0x2000>;
84				reg-names = "gpmi-nand", "bch";
85				interrupts = <56>;
86				interrupt-names = "bch";
87				clocks = <&clks 34>;
88				clock-names = "gpmi_io";
89				dmas = <&dma_apbh 4>;
90				dma-names = "rx-tx";
91				status = "disabled";
92			};
93
94			ssp0: spi@80010000 {
95				reg = <0x80010000 0x2000>;
96				interrupts = <15>;
97				clocks = <&clks 33>;
98				dmas = <&dma_apbh 1>;
99				dma-names = "rx-tx";
100				status = "disabled";
101			};
102
103			etm@80014000 {
104				reg = <0x80014000 0x2000>;
105				status = "disabled";
106			};
107
108			pinctrl@80018000 {
109				#address-cells = <1>;
110				#size-cells = <0>;
111				compatible = "fsl,imx23-pinctrl", "simple-bus";
112				reg = <0x80018000 0x2000>;
113
114				gpio0: gpio@0 {
115					compatible = "fsl,imx23-gpio", "fsl,mxs-gpio";
116					reg = <0>;
117					interrupts = <16>;
118					gpio-controller;
119					#gpio-cells = <2>;
120					interrupt-controller;
121					#interrupt-cells = <2>;
122				};
123
124				gpio1: gpio@1 {
125					compatible = "fsl,imx23-gpio", "fsl,mxs-gpio";
126					reg = <1>;
127					interrupts = <17>;
128					gpio-controller;
129					#gpio-cells = <2>;
130					interrupt-controller;
131					#interrupt-cells = <2>;
132				};
133
134				gpio2: gpio@2 {
135					compatible = "fsl,imx23-gpio", "fsl,mxs-gpio";
136					reg = <2>;
137					interrupts = <18>;
138					gpio-controller;
139					#gpio-cells = <2>;
140					interrupt-controller;
141					#interrupt-cells = <2>;
142				};
143
144				duart_pins_a: duart@0 {
145					reg = <0>;
146					fsl,pinmux-ids = <
147						MX23_PAD_PWM0__DUART_RX
148						MX23_PAD_PWM1__DUART_TX
149					>;
150					fsl,drive-strength = <MXS_DRIVE_4mA>;
151					fsl,voltage = <MXS_VOLTAGE_HIGH>;
152					fsl,pull-up = <MXS_PULL_DISABLE>;
153				};
154
155				auart0_pins_a: auart0@0 {
156					reg = <0>;
157					fsl,pinmux-ids = <
158						MX23_PAD_AUART1_RX__AUART1_RX
159						MX23_PAD_AUART1_TX__AUART1_TX
160						MX23_PAD_AUART1_CTS__AUART1_CTS
161						MX23_PAD_AUART1_RTS__AUART1_RTS
162					>;
163					fsl,drive-strength = <MXS_DRIVE_4mA>;
164					fsl,voltage = <MXS_VOLTAGE_HIGH>;
165					fsl,pull-up = <MXS_PULL_DISABLE>;
166				};
167
168				auart0_2pins_a: auart0-2pins@0 {
169					reg = <0>;
170					fsl,pinmux-ids = <
171						MX23_PAD_I2C_SCL__AUART1_TX
172						MX23_PAD_I2C_SDA__AUART1_RX
173					>;
174					fsl,drive-strength = <MXS_DRIVE_4mA>;
175					fsl,voltage = <MXS_VOLTAGE_HIGH>;
176					fsl,pull-up = <MXS_PULL_DISABLE>;
177				};
178
179				auart1_2pins_a: auart1-2pins@0 {
180					reg = <0>;
181					fsl,pinmux-ids = <
182						MX23_PAD_GPMI_D14__AUART2_RX
183						MX23_PAD_GPMI_D15__AUART2_TX
184					>;
185					fsl,drive-strength = <MXS_DRIVE_4mA>;
186					fsl,voltage = <MXS_VOLTAGE_HIGH>;
187					fsl,pull-up = <MXS_PULL_DISABLE>;
188				};
189
190				gpmi_pins_a: gpmi-nand@0 {
191					reg = <0>;
192					fsl,pinmux-ids = <
193						MX23_PAD_GPMI_D00__GPMI_D00
194						MX23_PAD_GPMI_D01__GPMI_D01
195						MX23_PAD_GPMI_D02__GPMI_D02
196						MX23_PAD_GPMI_D03__GPMI_D03
197						MX23_PAD_GPMI_D04__GPMI_D04
198						MX23_PAD_GPMI_D05__GPMI_D05
199						MX23_PAD_GPMI_D06__GPMI_D06
200						MX23_PAD_GPMI_D07__GPMI_D07
201						MX23_PAD_GPMI_CLE__GPMI_CLE
202						MX23_PAD_GPMI_ALE__GPMI_ALE
203						MX23_PAD_GPMI_RDY0__GPMI_RDY0
204						MX23_PAD_GPMI_RDY1__GPMI_RDY1
205						MX23_PAD_GPMI_WPN__GPMI_WPN
206						MX23_PAD_GPMI_WRN__GPMI_WRN
207						MX23_PAD_GPMI_RDN__GPMI_RDN
208						MX23_PAD_GPMI_CE1N__GPMI_CE1N
209						MX23_PAD_GPMI_CE0N__GPMI_CE0N
210					>;
211					fsl,drive-strength = <MXS_DRIVE_4mA>;
212					fsl,voltage = <MXS_VOLTAGE_HIGH>;
213					fsl,pull-up = <MXS_PULL_DISABLE>;
214				};
215
216				gpmi_pins_fixup: gpmi-pins-fixup@0 {
217					reg = <0>;
218					fsl,pinmux-ids = <
219						MX23_PAD_GPMI_WPN__GPMI_WPN
220						MX23_PAD_GPMI_WRN__GPMI_WRN
221						MX23_PAD_GPMI_RDN__GPMI_RDN
222					>;
223					fsl,drive-strength = <MXS_DRIVE_12mA>;
224				};
225
226				mmc0_4bit_pins_a: mmc0-4bit@0 {
227					reg = <0>;
228					fsl,pinmux-ids = <
229						MX23_PAD_SSP1_DATA0__SSP1_DATA0
230						MX23_PAD_SSP1_DATA1__SSP1_DATA1
231						MX23_PAD_SSP1_DATA2__SSP1_DATA2
232						MX23_PAD_SSP1_DATA3__SSP1_DATA3
233						MX23_PAD_SSP1_CMD__SSP1_CMD
234						MX23_PAD_SSP1_SCK__SSP1_SCK
235					>;
236					fsl,drive-strength = <MXS_DRIVE_8mA>;
237					fsl,voltage = <MXS_VOLTAGE_HIGH>;
238					fsl,pull-up = <MXS_PULL_ENABLE>;
239				};
240
241				mmc0_8bit_pins_a: mmc0-8bit@0 {
242					reg = <0>;
243					fsl,pinmux-ids = <
244						MX23_PAD_SSP1_DATA0__SSP1_DATA0
245						MX23_PAD_SSP1_DATA1__SSP1_DATA1
246						MX23_PAD_SSP1_DATA2__SSP1_DATA2
247						MX23_PAD_SSP1_DATA3__SSP1_DATA3
248						MX23_PAD_GPMI_D08__SSP1_DATA4
249						MX23_PAD_GPMI_D09__SSP1_DATA5
250						MX23_PAD_GPMI_D10__SSP1_DATA6
251						MX23_PAD_GPMI_D11__SSP1_DATA7
252						MX23_PAD_SSP1_CMD__SSP1_CMD
253						MX23_PAD_SSP1_DETECT__SSP1_DETECT
254						MX23_PAD_SSP1_SCK__SSP1_SCK
255					>;
256					fsl,drive-strength = <MXS_DRIVE_8mA>;
257					fsl,voltage = <MXS_VOLTAGE_HIGH>;
258					fsl,pull-up = <MXS_PULL_ENABLE>;
259				};
260
261				mmc0_pins_fixup: mmc0-pins-fixup@0 {
262					reg = <0>;
263					fsl,pinmux-ids = <
264						MX23_PAD_SSP1_DETECT__SSP1_DETECT
265						MX23_PAD_SSP1_SCK__SSP1_SCK
266					>;
267					fsl,pull-up = <MXS_PULL_DISABLE>;
268				};
269
270				mmc1_4bit_pins_a: mmc1-4bit@0 {
271					reg = <0>;
272					fsl,pinmux-ids = <
273						MX23_PAD_GPMI_D00__SSP2_DATA0
274						MX23_PAD_GPMI_D01__SSP2_DATA1
275						MX23_PAD_GPMI_D02__SSP2_DATA2
276						MX23_PAD_GPMI_D03__SSP2_DATA3
277						MX23_PAD_GPMI_RDY1__SSP2_CMD
278						MX23_PAD_GPMI_WRN__SSP2_SCK
279					>;
280					fsl,drive-strength = <MXS_DRIVE_8mA>;
281					fsl,voltage = <MXS_VOLTAGE_HIGH>;
282					fsl,pull-up = <MXS_PULL_ENABLE>;
283				};
284
285				mmc1_8bit_pins_a: mmc1-8bit@0 {
286					reg = <0>;
287					fsl,pinmux-ids = <
288						MX23_PAD_GPMI_D00__SSP2_DATA0
289						MX23_PAD_GPMI_D01__SSP2_DATA1
290						MX23_PAD_GPMI_D02__SSP2_DATA2
291						MX23_PAD_GPMI_D03__SSP2_DATA3
292						MX23_PAD_GPMI_D04__SSP2_DATA4
293						MX23_PAD_GPMI_D05__SSP2_DATA5
294						MX23_PAD_GPMI_D06__SSP2_DATA6
295						MX23_PAD_GPMI_D07__SSP2_DATA7
296						MX23_PAD_GPMI_RDY1__SSP2_CMD
297						MX23_PAD_GPMI_WRN__SSP2_SCK
298					>;
299					fsl,drive-strength = <MXS_DRIVE_8mA>;
300					fsl,voltage = <MXS_VOLTAGE_HIGH>;
301					fsl,pull-up = <MXS_PULL_ENABLE>;
302				};
303
304				pwm2_pins_a: pwm2@0 {
305					reg = <0>;
306					fsl,pinmux-ids = <
307						MX23_PAD_PWM2__PWM2
308					>;
309					fsl,drive-strength = <MXS_DRIVE_4mA>;
310					fsl,voltage = <MXS_VOLTAGE_HIGH>;
311					fsl,pull-up = <MXS_PULL_DISABLE>;
312				};
313
314				lcdif_24bit_pins_a: lcdif-24bit@0 {
315					reg = <0>;
316					fsl,pinmux-ids = <
317						MX23_PAD_LCD_D00__LCD_D00
318						MX23_PAD_LCD_D01__LCD_D01
319						MX23_PAD_LCD_D02__LCD_D02
320						MX23_PAD_LCD_D03__LCD_D03
321						MX23_PAD_LCD_D04__LCD_D04
322						MX23_PAD_LCD_D05__LCD_D05
323						MX23_PAD_LCD_D06__LCD_D06
324						MX23_PAD_LCD_D07__LCD_D07
325						MX23_PAD_LCD_D08__LCD_D08
326						MX23_PAD_LCD_D09__LCD_D09
327						MX23_PAD_LCD_D10__LCD_D10
328						MX23_PAD_LCD_D11__LCD_D11
329						MX23_PAD_LCD_D12__LCD_D12
330						MX23_PAD_LCD_D13__LCD_D13
331						MX23_PAD_LCD_D14__LCD_D14
332						MX23_PAD_LCD_D15__LCD_D15
333						MX23_PAD_LCD_D16__LCD_D16
334						MX23_PAD_LCD_D17__LCD_D17
335						MX23_PAD_GPMI_D08__LCD_D18
336						MX23_PAD_GPMI_D09__LCD_D19
337						MX23_PAD_GPMI_D10__LCD_D20
338						MX23_PAD_GPMI_D11__LCD_D21
339						MX23_PAD_GPMI_D12__LCD_D22
340						MX23_PAD_GPMI_D13__LCD_D23
341						MX23_PAD_LCD_DOTCK__LCD_DOTCK
342						MX23_PAD_LCD_ENABLE__LCD_ENABLE
343						MX23_PAD_LCD_HSYNC__LCD_HSYNC
344						MX23_PAD_LCD_VSYNC__LCD_VSYNC
345					>;
346					fsl,drive-strength = <MXS_DRIVE_4mA>;
347					fsl,voltage = <MXS_VOLTAGE_HIGH>;
348					fsl,pull-up = <MXS_PULL_DISABLE>;
349				};
350
351				spi2_pins_a: spi2@0 {
352					reg = <0>;
353					fsl,pinmux-ids = <
354						MX23_PAD_GPMI_WRN__SSP2_SCK
355						MX23_PAD_GPMI_RDY1__SSP2_CMD
356						MX23_PAD_GPMI_D00__SSP2_DATA0
357						MX23_PAD_GPMI_D03__SSP2_DATA3
358					>;
359					fsl,drive-strength = <MXS_DRIVE_8mA>;
360					fsl,voltage = <MXS_VOLTAGE_HIGH>;
361					fsl,pull-up = <MXS_PULL_ENABLE>;
362				};
363
364				i2c_pins_a: i2c@0 {
365					reg = <0>;
366					fsl,pinmux-ids = <
367						MX23_PAD_I2C_SCL__I2C_SCL
368						MX23_PAD_I2C_SDA__I2C_SDA
369					>;
370					fsl,drive-strength = <MXS_DRIVE_8mA>;
371					fsl,voltage = <MXS_VOLTAGE_HIGH>;
372					fsl,pull-up = <MXS_PULL_ENABLE>;
373				};
374
375				i2c_pins_b: i2c@1 {
376					reg = <1>;
377					fsl,pinmux-ids = <
378						MX23_PAD_LCD_ENABLE__I2C_SCL
379						MX23_PAD_LCD_HSYNC__I2C_SDA
380					>;
381					fsl,drive-strength = <MXS_DRIVE_8mA>;
382					fsl,voltage = <MXS_VOLTAGE_HIGH>;
383					fsl,pull-up = <MXS_PULL_ENABLE>;
384				};
385
386				i2c_pins_c: i2c@2 {
387					reg = <2>;
388					fsl,pinmux-ids = <
389						MX23_PAD_SSP1_DATA1__I2C_SCL
390						MX23_PAD_SSP1_DATA2__I2C_SDA
391					>;
392					fsl,drive-strength = <MXS_DRIVE_8mA>;
393					fsl,voltage = <MXS_VOLTAGE_HIGH>;
394					fsl,pull-up = <MXS_PULL_ENABLE>;
395				};
396			};
397
398			digctl@8001c000 {
399				compatible = "fsl,imx23-digctl";
400				reg = <0x8001c000 2000>;
401				status = "disabled";
402			};
403
404			emi@80020000 {
405				reg = <0x80020000 0x2000>;
406				status = "disabled";
407			};
408
409			dma_apbx: dma-apbx@80024000 {
410				compatible = "fsl,imx23-dma-apbx";
411				reg = <0x80024000 0x2000>;
412				interrupts = <7 5 9 26
413					      19 0 25 23
414					      60 58 9 0
415					      0 0 0 0>;
416				interrupt-names = "audio-adc", "audio-dac", "spdif-tx", "i2c",
417						  "saif0", "empty", "auart0-rx", "auart0-tx",
418						  "auart1-rx", "auart1-tx", "saif1", "empty",
419						  "empty", "empty", "empty", "empty";
420				#dma-cells = <1>;
421				dma-channels = <16>;
422				clocks = <&clks 16>;
423			};
424
425			dcp@80028000 {
426				compatible = "fsl,imx23-dcp";
427				reg = <0x80028000 0x2000>;
428				interrupts = <53 54>;
429				status = "okay";
430			};
431
432			pxp@8002a000 {
433				reg = <0x8002a000 0x2000>;
434				status = "disabled";
435			};
436
437			ocotp@8002c000 {
438				compatible = "fsl,imx23-ocotp", "fsl,ocotp";
439				#address-cells = <1>;
440				#size-cells = <1>;
441				reg = <0x8002c000 0x2000>;
442				clocks = <&clks 15>;
443			};
444
445			axi-ahb@8002e000 {
446				reg = <0x8002e000 0x2000>;
447				status = "disabled";
448			};
449
450			lcdif@80030000 {
451				compatible = "fsl,imx23-lcdif";
452				reg = <0x80030000 2000>;
453				interrupts = <46 45>;
454				clocks = <&clks 38>;
455				status = "disabled";
456			};
457
458			ssp1: spi@80034000 {
459				reg = <0x80034000 0x2000>;
460				interrupts = <2>;
461				clocks = <&clks 33>;
462				dmas = <&dma_apbh 2>;
463				dma-names = "rx-tx";
464				status = "disabled";
465			};
466
467			tvenc@80038000 {
468				reg = <0x80038000 0x2000>;
469				status = "disabled";
470			};
471		};
472
473		apbx@80040000 {
474			compatible = "simple-bus";
475			#address-cells = <1>;
476			#size-cells = <1>;
477			reg = <0x80040000 0x40000>;
478			ranges;
479
480			clks: clkctrl@80040000 {
481				compatible = "fsl,imx23-clkctrl", "fsl,clkctrl";
482				reg = <0x80040000 0x2000>;
483				#clock-cells = <1>;
484			};
485
486			saif0: saif@80042000 {
487				reg = <0x80042000 0x2000>;
488				dmas = <&dma_apbx 4>;
489				dma-names = "rx-tx";
490				status = "disabled";
491			};
492
493			power@80044000 {
494				reg = <0x80044000 0x2000>;
495				status = "disabled";
496			};
497
498			saif1: saif@80046000 {
499				reg = <0x80046000 0x2000>;
500				dmas = <&dma_apbx 10>;
501				dma-names = "rx-tx";
502				status = "disabled";
503			};
504
505			audio-out@80048000 {
506				reg = <0x80048000 0x2000>;
507				dmas = <&dma_apbx 1>;
508				dma-names = "tx";
509				status = "disabled";
510			};
511
512			audio-in@8004c000 {
513				reg = <0x8004c000 0x2000>;
514				dmas = <&dma_apbx 0>;
515				dma-names = "rx";
516				status = "disabled";
517			};
518
519			lradc: lradc@80050000 {
520				compatible = "fsl,imx23-lradc";
521				reg = <0x80050000 0x2000>;
522				interrupts = <36 37 38 39 40 41 42 43 44>;
523				status = "disabled";
524				clocks = <&clks 26>;
525				#io-channel-cells = <1>;
526			};
527
528			spdif@80054000 {
529				reg = <0x80054000 2000>;
530				dmas = <&dma_apbx 2>;
531				dma-names = "tx";
532				status = "disabled";
533			};
534
535			i2c: i2c@80058000 {
536				#address-cells = <1>;
537				#size-cells = <0>;
538				compatible = "fsl,imx23-i2c";
539				reg = <0x80058000 0x2000>;
540				interrupts = <27>;
541				clock-frequency = <100000>;
542				dmas = <&dma_apbx 3>;
543				dma-names = "rx-tx";
544				status = "disabled";
545			};
546
547			rtc@8005c000 {
548				compatible = "fsl,imx23-rtc", "fsl,stmp3xxx-rtc";
549				reg = <0x8005c000 0x2000>;
550				interrupts = <22>;
551			};
552
553			pwm: pwm@80064000 {
554				compatible = "fsl,imx23-pwm";
555				reg = <0x80064000 0x2000>;
556				clocks = <&clks 30>;
557				#pwm-cells = <2>;
558				fsl,pwm-number = <5>;
559				status = "disabled";
560			};
561
562			timrot@80068000 {
563				compatible = "fsl,imx23-timrot", "fsl,timrot";
564				reg = <0x80068000 0x2000>;
565				interrupts = <28 29 30 31>;
566				clocks = <&clks 28>;
567			};
568
569			auart0: serial@8006c000 {
570				compatible = "fsl,imx23-auart";
571				reg = <0x8006c000 0x2000>;
572				interrupts = <24>;
573				clocks = <&clks 32>;
574				dmas = <&dma_apbx 6>, <&dma_apbx 7>;
575				dma-names = "rx", "tx";
576				status = "disabled";
577			};
578
579			auart1: serial@8006e000 {
580				compatible = "fsl,imx23-auart";
581				reg = <0x8006e000 0x2000>;
582				interrupts = <59>;
583				clocks = <&clks 32>;
584				dmas = <&dma_apbx 8>, <&dma_apbx 9>;
585				dma-names = "rx", "tx";
586				status = "disabled";
587			};
588
589			duart: serial@80070000 {
590				compatible = "arm,pl011", "arm,primecell";
591				reg = <0x80070000 0x2000>;
592				interrupts = <0>;
593				clocks = <&clks 32>, <&clks 16>;
594				clock-names = "uart", "apb_pclk";
595				status = "disabled";
596			};
597
598			usbphy0: usbphy@8007c000 {
599				compatible = "fsl,imx23-usbphy";
600				reg = <0x8007c000 0x2000>;
601				clocks = <&clks 41>;
602				status = "disabled";
603			};
604		};
605	};
606
607	ahb@80080000 {
608		compatible = "simple-bus";
609		#address-cells = <1>;
610		#size-cells = <1>;
611		reg = <0x80080000 0x80000>;
612		ranges;
613
614		usb0: usb@80080000 {
615			compatible = "fsl,imx23-usb", "fsl,imx27-usb";
616			reg = <0x80080000 0x40000>;
617			interrupts = <11>;
618			fsl,usbphy = <&usbphy0>;
619			clocks = <&clks 40>;
620			status = "disabled";
621		};
622	};
623
624	iio-hwmon {
625		compatible = "iio-hwmon";
626		io-channels = <&lradc 8>;
627	};
628};
629