xref: /linux/arch/arm64/boot/dts/freescale/imx8mq.dtsi (revision bdd1a21b52557ea8f61d0a5dc2f77151b576eb70)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright 2017 NXP
4 * Copyright (C) 2017-2018 Pengutronix, Lucas Stach <kernel@pengutronix.de>
5 */
6
7#include <dt-bindings/clock/imx8mq-clock.h>
8#include <dt-bindings/power/imx8mq-power.h>
9#include <dt-bindings/reset/imx8mq-reset.h>
10#include <dt-bindings/gpio/gpio.h>
11#include "dt-bindings/input/input.h"
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/thermal/thermal.h>
14#include <dt-bindings/interconnect/imx8mq.h>
15#include "imx8mq-pinfunc.h"
16
17/ {
18	interrupt-parent = <&gpc>;
19
20	#address-cells = <2>;
21	#size-cells = <2>;
22
23	aliases {
24		ethernet0 = &fec1;
25		gpio0 = &gpio1;
26		gpio1 = &gpio2;
27		gpio2 = &gpio3;
28		gpio3 = &gpio4;
29		gpio4 = &gpio5;
30		i2c0 = &i2c1;
31		i2c1 = &i2c2;
32		i2c2 = &i2c3;
33		i2c3 = &i2c4;
34		mmc0 = &usdhc1;
35		mmc1 = &usdhc2;
36		serial0 = &uart1;
37		serial1 = &uart2;
38		serial2 = &uart3;
39		serial3 = &uart4;
40		spi0 = &ecspi1;
41		spi1 = &ecspi2;
42		spi2 = &ecspi3;
43	};
44
45	ckil: clock-ckil {
46		compatible = "fixed-clock";
47		#clock-cells = <0>;
48		clock-frequency = <32768>;
49		clock-output-names = "ckil";
50	};
51
52	osc_25m: clock-osc-25m {
53		compatible = "fixed-clock";
54		#clock-cells = <0>;
55		clock-frequency = <25000000>;
56		clock-output-names = "osc_25m";
57	};
58
59	osc_27m: clock-osc-27m {
60		compatible = "fixed-clock";
61		#clock-cells = <0>;
62		clock-frequency = <27000000>;
63		clock-output-names = "osc_27m";
64	};
65
66	clk_ext1: clock-ext1 {
67		compatible = "fixed-clock";
68		#clock-cells = <0>;
69		clock-frequency = <133000000>;
70		clock-output-names = "clk_ext1";
71	};
72
73	clk_ext2: clock-ext2 {
74		compatible = "fixed-clock";
75		#clock-cells = <0>;
76		clock-frequency = <133000000>;
77		clock-output-names = "clk_ext2";
78	};
79
80	clk_ext3: clock-ext3 {
81		compatible = "fixed-clock";
82		#clock-cells = <0>;
83		clock-frequency = <133000000>;
84		clock-output-names = "clk_ext3";
85	};
86
87	clk_ext4: clock-ext4 {
88		compatible = "fixed-clock";
89		#clock-cells = <0>;
90		clock-frequency= <133000000>;
91		clock-output-names = "clk_ext4";
92	};
93
94	cpus {
95		#address-cells = <1>;
96		#size-cells = <0>;
97
98		A53_0: cpu@0 {
99			device_type = "cpu";
100			compatible = "arm,cortex-a53";
101			reg = <0x0>;
102			clock-latency = <61036>; /* two CLK32 periods */
103			clocks = <&clk IMX8MQ_CLK_ARM>;
104			enable-method = "psci";
105			next-level-cache = <&A53_L2>;
106			operating-points-v2 = <&a53_opp_table>;
107			#cooling-cells = <2>;
108			nvmem-cells = <&cpu_speed_grade>;
109			nvmem-cell-names = "speed_grade";
110		};
111
112		A53_1: cpu@1 {
113			device_type = "cpu";
114			compatible = "arm,cortex-a53";
115			reg = <0x1>;
116			clock-latency = <61036>; /* two CLK32 periods */
117			clocks = <&clk IMX8MQ_CLK_ARM>;
118			enable-method = "psci";
119			next-level-cache = <&A53_L2>;
120			operating-points-v2 = <&a53_opp_table>;
121			#cooling-cells = <2>;
122		};
123
124		A53_2: cpu@2 {
125			device_type = "cpu";
126			compatible = "arm,cortex-a53";
127			reg = <0x2>;
128			clock-latency = <61036>; /* two CLK32 periods */
129			clocks = <&clk IMX8MQ_CLK_ARM>;
130			enable-method = "psci";
131			next-level-cache = <&A53_L2>;
132			operating-points-v2 = <&a53_opp_table>;
133			#cooling-cells = <2>;
134		};
135
136		A53_3: cpu@3 {
137			device_type = "cpu";
138			compatible = "arm,cortex-a53";
139			reg = <0x3>;
140			clock-latency = <61036>; /* two CLK32 periods */
141			clocks = <&clk IMX8MQ_CLK_ARM>;
142			enable-method = "psci";
143			next-level-cache = <&A53_L2>;
144			operating-points-v2 = <&a53_opp_table>;
145			#cooling-cells = <2>;
146		};
147
148		A53_L2: l2-cache0 {
149			compatible = "cache";
150		};
151	};
152
153	a53_opp_table: opp-table {
154		compatible = "operating-points-v2";
155		opp-shared;
156
157		opp-800000000 {
158			opp-hz = /bits/ 64 <800000000>;
159			opp-microvolt = <900000>;
160			/* Industrial only */
161			opp-supported-hw = <0xf>, <0x4>;
162			clock-latency-ns = <150000>;
163			opp-suspend;
164		};
165
166		opp-1000000000 {
167			opp-hz = /bits/ 64 <1000000000>;
168			opp-microvolt = <900000>;
169			/* Consumer only */
170			opp-supported-hw = <0xe>, <0x3>;
171			clock-latency-ns = <150000>;
172			opp-suspend;
173		};
174
175		opp-1300000000 {
176			opp-hz = /bits/ 64 <1300000000>;
177			opp-microvolt = <1000000>;
178			opp-supported-hw = <0xc>, <0x4>;
179			clock-latency-ns = <150000>;
180			opp-suspend;
181		};
182
183		opp-1500000000 {
184			opp-hz = /bits/ 64 <1500000000>;
185			opp-microvolt = <1000000>;
186			opp-supported-hw = <0x8>, <0x3>;
187			clock-latency-ns = <150000>;
188			opp-suspend;
189		};
190	};
191
192	pmu {
193		compatible = "arm,cortex-a53-pmu";
194		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
195		interrupt-parent = <&gic>;
196		interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
197	};
198
199	psci {
200		compatible = "arm,psci-1.0";
201		method = "smc";
202	};
203
204	thermal-zones {
205		cpu_thermal: cpu-thermal {
206			polling-delay-passive = <250>;
207			polling-delay = <2000>;
208			thermal-sensors = <&tmu 0>;
209
210			trips {
211				cpu_alert: cpu-alert {
212					temperature = <80000>;
213					hysteresis = <2000>;
214					type = "passive";
215				};
216
217				cpu-crit {
218					temperature = <90000>;
219					hysteresis = <2000>;
220					type = "critical";
221				};
222			};
223
224			cooling-maps {
225				map0 {
226					trip = <&cpu_alert>;
227					cooling-device =
228						<&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
229						<&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
230						<&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
231						<&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
232				};
233			};
234		};
235
236		gpu-thermal {
237			polling-delay-passive = <250>;
238			polling-delay = <2000>;
239			thermal-sensors = <&tmu 1>;
240
241			trips {
242				gpu_alert: gpu-alert {
243					temperature = <80000>;
244					hysteresis = <2000>;
245					type = "passive";
246				};
247
248				gpu-crit {
249					temperature = <90000>;
250					hysteresis = <2000>;
251					type = "critical";
252				};
253			};
254
255			cooling-maps {
256				map0 {
257					trip = <&gpu_alert>;
258					cooling-device =
259						<&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
260				};
261			};
262		};
263
264		vpu-thermal {
265			polling-delay-passive = <250>;
266			polling-delay = <2000>;
267			thermal-sensors = <&tmu 2>;
268
269			trips {
270				vpu-crit {
271					temperature = <90000>;
272					hysteresis = <2000>;
273					type = "critical";
274				};
275			};
276		};
277	};
278
279	timer {
280		compatible = "arm,armv8-timer";
281		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
282		             <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
283		             <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
284		             <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
285		interrupt-parent = <&gic>;
286		arm,no-tick-in-suspend;
287	};
288
289	soc@0 {
290		compatible = "fsl,imx8mq-soc", "simple-bus";
291		#address-cells = <1>;
292		#size-cells = <1>;
293		ranges = <0x0 0x0 0x0 0x3e000000>;
294		dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
295		nvmem-cells = <&imx8mq_uid>;
296		nvmem-cell-names = "soc_unique_id";
297
298		bus@30000000 { /* AIPS1 */
299			compatible = "fsl,aips-bus", "simple-bus";
300			reg = <0x30000000 0x400000>;
301			#address-cells = <1>;
302			#size-cells = <1>;
303			ranges = <0x30000000 0x30000000 0x400000>;
304
305			sai1: sai@30010000 {
306				#sound-dai-cells = <0>;
307				compatible = "fsl,imx8mq-sai";
308				reg = <0x30010000 0x10000>;
309				interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
310				clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
311				         <&clk IMX8MQ_CLK_SAI1_ROOT>,
312				         <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
313				clock-names = "bus", "mclk1", "mclk2", "mclk3";
314				dmas = <&sdma2 8 24 0>, <&sdma1 9 24 0>;
315				dma-names = "rx", "tx";
316				status = "disabled";
317			};
318
319			sai6: sai@30030000 {
320				#sound-dai-cells = <0>;
321				compatible = "fsl,imx8mq-sai";
322				reg = <0x30030000 0x10000>;
323				interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
324				clocks = <&clk IMX8MQ_CLK_SAI6_IPG>,
325				         <&clk IMX8MQ_CLK_SAI6_ROOT>,
326				         <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
327				clock-names = "bus", "mclk1", "mclk2", "mclk3";
328				dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
329				dma-names = "rx", "tx";
330				status = "disabled";
331			};
332
333			sai5: sai@30040000 {
334				#sound-dai-cells = <0>;
335				compatible = "fsl,imx8mq-sai";
336				reg = <0x30040000 0x10000>;
337				interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
338				clocks = <&clk IMX8MQ_CLK_SAI5_IPG>,
339				         <&clk IMX8MQ_CLK_SAI5_ROOT>,
340				         <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
341				clock-names = "bus", "mclk1", "mclk2", "mclk3";
342				dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
343				dma-names = "rx", "tx";
344				status = "disabled";
345			};
346
347			sai4: sai@30050000 {
348				#sound-dai-cells = <0>;
349				compatible = "fsl,imx8mq-sai";
350				reg = <0x30050000 0x10000>;
351				interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
352				clocks = <&clk IMX8MQ_CLK_SAI4_IPG>,
353				         <&clk IMX8MQ_CLK_SAI4_ROOT>,
354				         <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
355				clock-names = "bus", "mclk1", "mclk2", "mclk3";
356				dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
357				dma-names = "rx", "tx";
358				status = "disabled";
359			};
360
361			gpio1: gpio@30200000 {
362				compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
363				reg = <0x30200000 0x10000>;
364				interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
365				             <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
366				clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
367				gpio-controller;
368				#gpio-cells = <2>;
369				interrupt-controller;
370				#interrupt-cells = <2>;
371				gpio-ranges = <&iomuxc 0 10 30>;
372			};
373
374			gpio2: gpio@30210000 {
375				compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
376				reg = <0x30210000 0x10000>;
377				interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
378				             <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
379				clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
380				gpio-controller;
381				#gpio-cells = <2>;
382				interrupt-controller;
383				#interrupt-cells = <2>;
384				gpio-ranges = <&iomuxc 0 40 21>;
385			};
386
387			gpio3: gpio@30220000 {
388				compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
389				reg = <0x30220000 0x10000>;
390				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
391				             <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
392				clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
393				gpio-controller;
394				#gpio-cells = <2>;
395				interrupt-controller;
396				#interrupt-cells = <2>;
397				gpio-ranges = <&iomuxc 0 61 26>;
398			};
399
400			gpio4: gpio@30230000 {
401				compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
402				reg = <0x30230000 0x10000>;
403				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
404				             <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
405				clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
406				gpio-controller;
407				#gpio-cells = <2>;
408				interrupt-controller;
409				#interrupt-cells = <2>;
410				gpio-ranges = <&iomuxc 0 87 32>;
411			};
412
413			gpio5: gpio@30240000 {
414				compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
415				reg = <0x30240000 0x10000>;
416				interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
417				             <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
418				clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
419				gpio-controller;
420				#gpio-cells = <2>;
421				interrupt-controller;
422				#interrupt-cells = <2>;
423				gpio-ranges = <&iomuxc 0 119 30>;
424			};
425
426			tmu: tmu@30260000 {
427				compatible = "fsl,imx8mq-tmu";
428				reg = <0x30260000 0x10000>;
429				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
430				clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
431				little-endian;
432				fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
433				fsl,tmu-calibration = <0x00000000 0x00000023
434						       0x00000001 0x00000029
435						       0x00000002 0x0000002f
436						       0x00000003 0x00000035
437						       0x00000004 0x0000003d
438						       0x00000005 0x00000043
439						       0x00000006 0x0000004b
440						       0x00000007 0x00000051
441						       0x00000008 0x00000057
442						       0x00000009 0x0000005f
443						       0x0000000a 0x00000067
444						       0x0000000b 0x0000006f
445
446						       0x00010000 0x0000001b
447						       0x00010001 0x00000023
448						       0x00010002 0x0000002b
449						       0x00010003 0x00000033
450						       0x00010004 0x0000003b
451						       0x00010005 0x00000043
452						       0x00010006 0x0000004b
453						       0x00010007 0x00000055
454						       0x00010008 0x0000005d
455						       0x00010009 0x00000067
456						       0x0001000a 0x00000070
457
458						       0x00020000 0x00000017
459						       0x00020001 0x00000023
460						       0x00020002 0x0000002d
461						       0x00020003 0x00000037
462						       0x00020004 0x00000041
463						       0x00020005 0x0000004b
464						       0x00020006 0x00000057
465						       0x00020007 0x00000063
466						       0x00020008 0x0000006f
467
468						       0x00030000 0x00000015
469						       0x00030001 0x00000021
470						       0x00030002 0x0000002d
471						       0x00030003 0x00000039
472						       0x00030004 0x00000045
473						       0x00030005 0x00000053
474						       0x00030006 0x0000005f
475						       0x00030007 0x00000071>;
476				#thermal-sensor-cells =  <1>;
477			};
478
479			wdog1: watchdog@30280000 {
480				compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
481				reg = <0x30280000 0x10000>;
482				interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
483				clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
484				status = "disabled";
485			};
486
487			wdog2: watchdog@30290000 {
488				compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
489				reg = <0x30290000 0x10000>;
490				interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
491				clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
492				status = "disabled";
493			};
494
495			wdog3: watchdog@302a0000 {
496				compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
497				reg = <0x302a0000 0x10000>;
498				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
499				clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
500				status = "disabled";
501			};
502
503			sdma2: sdma@302c0000 {
504				compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
505				reg = <0x302c0000 0x10000>;
506				interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
507				clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
508					 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
509				clock-names = "ipg", "ahb";
510				#dma-cells = <3>;
511				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
512			};
513
514			lcdif: lcd-controller@30320000 {
515				compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif";
516				reg = <0x30320000 0x10000>;
517				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
518				clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
519				clock-names = "pix";
520				assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
521						  <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
522						  <&clk IMX8MQ_CLK_LCDIF_PIXEL>,
523						  <&clk IMX8MQ_VIDEO_PLL1>;
524				assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
525						  <&clk IMX8MQ_VIDEO_PLL1>,
526						  <&clk IMX8MQ_VIDEO_PLL1_OUT>;
527				assigned-clock-rates = <0>, <0>, <0>, <594000000>;
528				interconnects = <&noc IMX8MQ_ICM_LCDIF &noc IMX8MQ_ICS_DRAM>;
529				interconnect-names = "dram";
530				status = "disabled";
531
532				port@0 {
533					lcdif_mipi_dsi: endpoint {
534						remote-endpoint = <&mipi_dsi_lcdif_in>;
535					};
536				};
537			};
538
539			iomuxc: pinctrl@30330000 {
540				compatible = "fsl,imx8mq-iomuxc";
541				reg = <0x30330000 0x10000>;
542			};
543
544			iomuxc_gpr: syscon@30340000 {
545				compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr",
546					     "syscon", "simple-mfd";
547				reg = <0x30340000 0x10000>;
548
549				mux: mux-controller {
550					compatible = "mmio-mux";
551					#mux-control-cells = <1>;
552					mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */
553				};
554			};
555
556			ocotp: efuse@30350000 {
557				compatible = "fsl,imx8mq-ocotp", "syscon";
558				reg = <0x30350000 0x10000>;
559				clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
560				#address-cells = <1>;
561				#size-cells = <1>;
562
563				imx8mq_uid: soc-uid@410 {
564					reg = <0x4 0x8>;
565				};
566
567				cpu_speed_grade: speed-grade@10 {
568					reg = <0x10 4>;
569				};
570
571				fec_mac_address: mac-address@90 {
572					reg = <0x90 6>;
573				};
574			};
575
576			anatop: syscon@30360000 {
577				compatible = "fsl,imx8mq-anatop", "syscon";
578				reg = <0x30360000 0x10000>;
579				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
580			};
581
582			snvs: snvs@30370000 {
583				compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
584				reg = <0x30370000 0x10000>;
585
586				snvs_rtc: snvs-rtc-lp{
587					compatible = "fsl,sec-v4.0-mon-rtc-lp";
588					regmap =<&snvs>;
589					offset = <0x34>;
590					interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
591						<GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
592					clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
593					clock-names = "snvs-rtc";
594				};
595
596				snvs_pwrkey: snvs-powerkey {
597					compatible = "fsl,sec-v4.0-pwrkey";
598					regmap = <&snvs>;
599					interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
600					clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
601					clock-names = "snvs-pwrkey";
602					linux,keycode = <KEY_POWER>;
603					wakeup-source;
604					status = "disabled";
605				};
606			};
607
608			clk: clock-controller@30380000 {
609				compatible = "fsl,imx8mq-ccm";
610				reg = <0x30380000 0x10000>;
611				interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
612				             <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
613				#clock-cells = <1>;
614				clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
615				         <&clk_ext1>, <&clk_ext2>,
616				         <&clk_ext3>, <&clk_ext4>;
617				clock-names = "ckil", "osc_25m", "osc_27m",
618				              "clk_ext1", "clk_ext2",
619				              "clk_ext3", "clk_ext4";
620				assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
621						  <&clk IMX8MQ_CLK_A53_CORE>,
622						  <&clk IMX8MQ_CLK_NOC>,
623						  <&clk IMX8MQ_CLK_AUDIO_AHB>,
624						  <&clk IMX8MQ_AUDIO_PLL1_BYPASS>,
625						  <&clk IMX8MQ_AUDIO_PLL2_BYPASS>,
626						  <&clk IMX8MQ_AUDIO_PLL1>,
627						  <&clk IMX8MQ_AUDIO_PLL2>;
628				assigned-clock-rates = <0>, <0>,
629						       <800000000>,
630						       <0>,
631						       <0>,
632						       <0>,
633						       <786432000>,
634						       <722534400>;
635				assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
636							 <&clk IMX8MQ_ARM_PLL_OUT>,
637							 <0>,
638							 <&clk IMX8MQ_SYS2_PLL_500M>,
639							 <&clk IMX8MQ_AUDIO_PLL1>,
640							 <&clk IMX8MQ_AUDIO_PLL2>;
641			};
642
643			src: reset-controller@30390000 {
644				compatible = "fsl,imx8mq-src", "syscon";
645				reg = <0x30390000 0x10000>;
646				interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
647				#reset-cells = <1>;
648			};
649
650			gpc: gpc@303a0000 {
651				compatible = "fsl,imx8mq-gpc";
652				reg = <0x303a0000 0x10000>;
653				interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
654				interrupt-parent = <&gic>;
655				interrupt-controller;
656				#interrupt-cells = <3>;
657
658				pgc {
659					#address-cells = <1>;
660					#size-cells = <0>;
661
662					pgc_mipi: power-domain@0 {
663						#power-domain-cells = <0>;
664						reg = <IMX8M_POWER_DOMAIN_MIPI>;
665					};
666
667					/*
668					 * As per comment in ATF source code:
669					 *
670					 * PCIE1 and PCIE2 share the
671					 * same reset signal, if we
672					 * power down PCIE2, PCIE1
673					 * will be held in reset too.
674					 *
675					 * So instead of creating two
676					 * separate power domains for
677					 * PCIE1 and PCIE2 we create a
678					 * link between both and use
679					 * it as a shared PCIE power
680					 * domain.
681					 */
682					pgc_pcie: power-domain@1 {
683						#power-domain-cells = <0>;
684						reg = <IMX8M_POWER_DOMAIN_PCIE1>;
685						power-domains = <&pgc_pcie2>;
686					};
687
688					pgc_otg1: power-domain@2 {
689						#power-domain-cells = <0>;
690						reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
691					};
692
693					pgc_otg2: power-domain@3 {
694						#power-domain-cells = <0>;
695						reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
696					};
697
698					pgc_ddr1: power-domain@4 {
699						#power-domain-cells = <0>;
700						reg = <IMX8M_POWER_DOMAIN_DDR1>;
701					};
702
703					pgc_gpu: power-domain@5 {
704						#power-domain-cells = <0>;
705						reg = <IMX8M_POWER_DOMAIN_GPU>;
706						clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
707						         <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
708							 <&clk IMX8MQ_CLK_GPU_AXI>,
709						         <&clk IMX8MQ_CLK_GPU_AHB>;
710					};
711
712					pgc_vpu: power-domain@6 {
713						#power-domain-cells = <0>;
714						reg = <IMX8M_POWER_DOMAIN_VPU>;
715						clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
716					};
717
718					pgc_disp: power-domain@7 {
719						#power-domain-cells = <0>;
720						reg = <IMX8M_POWER_DOMAIN_DISP>;
721					};
722
723					pgc_mipi_csi1: power-domain@8 {
724						#power-domain-cells = <0>;
725						reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
726					};
727
728					pgc_mipi_csi2: power-domain@9 {
729						#power-domain-cells = <0>;
730						reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
731					};
732
733					pgc_pcie2: power-domain@a {
734						#power-domain-cells = <0>;
735						reg = <IMX8M_POWER_DOMAIN_PCIE2>;
736					};
737				};
738			};
739		};
740
741		bus@30400000 { /* AIPS2 */
742			compatible = "fsl,aips-bus", "simple-bus";
743			reg = <0x30400000 0x400000>;
744			#address-cells = <1>;
745			#size-cells = <1>;
746			ranges = <0x30400000 0x30400000 0x400000>;
747
748			pwm1: pwm@30660000 {
749				compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
750				reg = <0x30660000 0x10000>;
751				interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
752				clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
753				         <&clk IMX8MQ_CLK_PWM1_ROOT>;
754				clock-names = "ipg", "per";
755				#pwm-cells = <2>;
756				status = "disabled";
757			};
758
759			pwm2: pwm@30670000 {
760				compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
761				reg = <0x30670000 0x10000>;
762				interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
763				clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
764				         <&clk IMX8MQ_CLK_PWM2_ROOT>;
765				clock-names = "ipg", "per";
766				#pwm-cells = <2>;
767				status = "disabled";
768			};
769
770			pwm3: pwm@30680000 {
771				compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
772				reg = <0x30680000 0x10000>;
773				interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
774				clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
775				         <&clk IMX8MQ_CLK_PWM3_ROOT>;
776				clock-names = "ipg", "per";
777				#pwm-cells = <2>;
778				status = "disabled";
779			};
780
781			pwm4: pwm@30690000 {
782				compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
783				reg = <0x30690000 0x10000>;
784				interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
785				clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
786				         <&clk IMX8MQ_CLK_PWM4_ROOT>;
787				clock-names = "ipg", "per";
788				#pwm-cells = <2>;
789				status = "disabled";
790			};
791
792			system_counter: timer@306a0000 {
793				compatible = "nxp,sysctr-timer";
794				reg = <0x306a0000 0x20000>;
795				interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
796				clocks = <&osc_25m>;
797				clock-names = "per";
798			};
799		};
800
801		bus@30800000 { /* AIPS3 */
802			compatible = "fsl,aips-bus", "simple-bus";
803			reg = <0x30800000 0x400000>;
804			#address-cells = <1>;
805			#size-cells = <1>;
806			ranges = <0x30800000 0x30800000 0x400000>,
807				 <0x08000000 0x08000000 0x10000000>;
808
809			spdif1: spdif@30810000 {
810				compatible = "fsl,imx35-spdif";
811				reg = <0x30810000 0x10000>;
812				interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
813				clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
814					<&clk IMX8MQ_CLK_25M>, /* rxtx0 */
815					<&clk IMX8MQ_CLK_SPDIF1>, /* rxtx1 */
816					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
817					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
818					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
819					<&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
820					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
821					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
822					<&clk IMX8MQ_CLK_DUMMY>; /* spba */
823				clock-names = "core", "rxtx0",
824					      "rxtx1", "rxtx2",
825					      "rxtx3", "rxtx4",
826					      "rxtx5", "rxtx6",
827					      "rxtx7", "spba";
828				dmas = <&sdma1 8 18 0>, <&sdma1 9 18 0>;
829				dma-names = "rx", "tx";
830				status = "disabled";
831			};
832
833			ecspi1: spi@30820000 {
834				#address-cells = <1>;
835				#size-cells = <0>;
836				compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
837				reg = <0x30820000 0x10000>;
838				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
839				clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
840					 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
841				clock-names = "ipg", "per";
842				dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
843				dma-names = "rx", "tx";
844				status = "disabled";
845			};
846
847			ecspi2: spi@30830000 {
848				#address-cells = <1>;
849				#size-cells = <0>;
850				compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
851				reg = <0x30830000 0x10000>;
852				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
853				clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
854					 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
855				clock-names = "ipg", "per";
856				dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
857				dma-names = "rx", "tx";
858				status = "disabled";
859			};
860
861			ecspi3: spi@30840000 {
862				#address-cells = <1>;
863				#size-cells = <0>;
864				compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
865				reg = <0x30840000 0x10000>;
866				interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
867				clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
868					 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
869				clock-names = "ipg", "per";
870				dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
871				dma-names = "rx", "tx";
872				status = "disabled";
873			};
874
875			uart1: serial@30860000 {
876				compatible = "fsl,imx8mq-uart",
877				             "fsl,imx6q-uart";
878				reg = <0x30860000 0x10000>;
879				interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
880				clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
881				         <&clk IMX8MQ_CLK_UART1_ROOT>;
882				clock-names = "ipg", "per";
883				status = "disabled";
884			};
885
886			uart3: serial@30880000 {
887				compatible = "fsl,imx8mq-uart",
888				             "fsl,imx6q-uart";
889				reg = <0x30880000 0x10000>;
890				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
891				clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
892				         <&clk IMX8MQ_CLK_UART3_ROOT>;
893				clock-names = "ipg", "per";
894				status = "disabled";
895			};
896
897			uart2: serial@30890000 {
898				compatible = "fsl,imx8mq-uart",
899				             "fsl,imx6q-uart";
900				reg = <0x30890000 0x10000>;
901				interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
902				clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
903				         <&clk IMX8MQ_CLK_UART2_ROOT>;
904				clock-names = "ipg", "per";
905				status = "disabled";
906			};
907
908			spdif2: spdif@308a0000 {
909				compatible = "fsl,imx35-spdif";
910				reg = <0x308a0000 0x10000>;
911				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
912				clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
913					<&clk IMX8MQ_CLK_25M>, /* rxtx0 */
914					<&clk IMX8MQ_CLK_SPDIF2>, /* rxtx1 */
915					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
916					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
917					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
918					<&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
919					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
920					<&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
921					<&clk IMX8MQ_CLK_DUMMY>; /* spba */
922				clock-names = "core", "rxtx0",
923					      "rxtx1", "rxtx2",
924					      "rxtx3", "rxtx4",
925					      "rxtx5", "rxtx6",
926					      "rxtx7", "spba";
927				dmas = <&sdma1 16 18 0>, <&sdma1 17 18 0>;
928				dma-names = "rx", "tx";
929				status = "disabled";
930			};
931
932			sai2: sai@308b0000 {
933				#sound-dai-cells = <0>;
934				compatible = "fsl,imx8mq-sai";
935				reg = <0x308b0000 0x10000>;
936				interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
937				clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
938					 <&clk IMX8MQ_CLK_SAI2_ROOT>,
939					 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
940				clock-names = "bus", "mclk1", "mclk2", "mclk3";
941				dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
942				dma-names = "rx", "tx";
943				status = "disabled";
944			};
945
946			sai3: sai@308c0000 {
947				#sound-dai-cells = <0>;
948				compatible = "fsl,imx8mq-sai";
949				reg = <0x308c0000 0x10000>;
950				interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
951				clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
952				         <&clk IMX8MQ_CLK_SAI3_ROOT>,
953				         <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
954				clock-names = "bus", "mclk1", "mclk2", "mclk3";
955				dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
956				dma-names = "rx", "tx";
957				status = "disabled";
958			};
959
960			crypto: crypto@30900000 {
961				compatible = "fsl,sec-v4.0";
962				#address-cells = <1>;
963				#size-cells = <1>;
964				reg = <0x30900000 0x40000>;
965				ranges = <0 0x30900000 0x40000>;
966				interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
967				clocks = <&clk IMX8MQ_CLK_AHB>,
968					 <&clk IMX8MQ_CLK_IPG_ROOT>;
969				clock-names = "aclk", "ipg";
970
971				sec_jr0: jr@1000 {
972					compatible = "fsl,sec-v4.0-job-ring";
973					reg = <0x1000 0x1000>;
974					interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
975				};
976
977				sec_jr1: jr@2000 {
978					compatible = "fsl,sec-v4.0-job-ring";
979					reg = <0x2000 0x1000>;
980					interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
981				};
982
983				sec_jr2: jr@3000 {
984					compatible = "fsl,sec-v4.0-job-ring";
985					reg = <0x3000 0x1000>;
986					interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
987				};
988			};
989
990			mipi_dsi: mipi-dsi@30a00000 {
991				compatible = "fsl,imx8mq-nwl-dsi";
992				reg = <0x30a00000 0x300>;
993				clocks = <&clk IMX8MQ_CLK_DSI_CORE>,
994					 <&clk IMX8MQ_CLK_DSI_AHB>,
995					 <&clk IMX8MQ_CLK_DSI_IPG_DIV>,
996					 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
997					 <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
998				clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif";
999				assigned-clocks = <&clk IMX8MQ_CLK_DSI_AHB>,
1000						  <&clk IMX8MQ_CLK_DSI_CORE>,
1001						  <&clk IMX8MQ_CLK_DSI_IPG_DIV>;
1002				assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>,
1003							 <&clk IMX8MQ_SYS1_PLL_266M>;
1004				assigned-clock-rates = <80000000>, <266000000>, <20000000>;
1005				interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1006				mux-controls = <&mux 0>;
1007				power-domains = <&pgc_mipi>;
1008				phys = <&dphy>;
1009				phy-names = "dphy";
1010				resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>,
1011					 <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>,
1012					 <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>,
1013					 <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>;
1014				reset-names = "byte", "dpi", "esc", "pclk";
1015				status = "disabled";
1016
1017				ports {
1018					#address-cells = <1>;
1019					#size-cells = <0>;
1020
1021					port@0 {
1022						reg = <0>;
1023						#address-cells = <1>;
1024						#size-cells = <0>;
1025						mipi_dsi_lcdif_in: endpoint@0 {
1026							reg = <0>;
1027							remote-endpoint = <&lcdif_mipi_dsi>;
1028						};
1029					};
1030				};
1031			};
1032
1033			dphy: dphy@30a00300 {
1034				compatible = "fsl,imx8mq-mipi-dphy";
1035				reg = <0x30a00300 0x100>;
1036				clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
1037				clock-names = "phy_ref";
1038				assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
1039						  <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
1040						  <&clk IMX8MQ_CLK_DSI_PHY_REF>,
1041						  <&clk IMX8MQ_VIDEO_PLL1>;
1042				assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
1043						  <&clk IMX8MQ_VIDEO_PLL1>,
1044						  <&clk IMX8MQ_VIDEO_PLL1_OUT>;
1045				assigned-clock-rates = <0>, <0>, <24000000>, <594000000>;
1046				#phy-cells = <0>;
1047				power-domains = <&pgc_mipi>;
1048				status = "disabled";
1049			};
1050
1051			i2c1: i2c@30a20000 {
1052				compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1053				reg = <0x30a20000 0x10000>;
1054				interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
1055				clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
1056				#address-cells = <1>;
1057				#size-cells = <0>;
1058				status = "disabled";
1059			};
1060
1061			i2c2: i2c@30a30000 {
1062				compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1063				reg = <0x30a30000 0x10000>;
1064				interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
1065				clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
1066				#address-cells = <1>;
1067				#size-cells = <0>;
1068				status = "disabled";
1069			};
1070
1071			i2c3: i2c@30a40000 {
1072				compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1073				reg = <0x30a40000 0x10000>;
1074				interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1075				clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
1076				#address-cells = <1>;
1077				#size-cells = <0>;
1078				status = "disabled";
1079			};
1080
1081			i2c4: i2c@30a50000 {
1082				compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1083				reg = <0x30a50000 0x10000>;
1084				interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1085				clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
1086				#address-cells = <1>;
1087				#size-cells = <0>;
1088				status = "disabled";
1089			};
1090
1091			uart4: serial@30a60000 {
1092				compatible = "fsl,imx8mq-uart",
1093				             "fsl,imx6q-uart";
1094				reg = <0x30a60000 0x10000>;
1095				interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
1096				clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
1097				         <&clk IMX8MQ_CLK_UART4_ROOT>;
1098				clock-names = "ipg", "per";
1099				status = "disabled";
1100			};
1101
1102			mu: mailbox@30aa0000 {
1103				compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
1104				reg = <0x30aa0000 0x10000>;
1105				interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1106				clocks = <&clk IMX8MQ_CLK_MU_ROOT>;
1107				#mbox-cells = <2>;
1108			};
1109
1110			usdhc1: mmc@30b40000 {
1111				compatible = "fsl,imx8mq-usdhc",
1112				             "fsl,imx7d-usdhc";
1113				reg = <0x30b40000 0x10000>;
1114				interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
1115				clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
1116				         <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1117				         <&clk IMX8MQ_CLK_USDHC1_ROOT>;
1118				clock-names = "ipg", "ahb", "per";
1119				fsl,tuning-start-tap = <20>;
1120				fsl,tuning-step = <2>;
1121				bus-width = <4>;
1122				status = "disabled";
1123			};
1124
1125			usdhc2: mmc@30b50000 {
1126				compatible = "fsl,imx8mq-usdhc",
1127				             "fsl,imx7d-usdhc";
1128				reg = <0x30b50000 0x10000>;
1129				interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
1130				clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
1131				         <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1132				         <&clk IMX8MQ_CLK_USDHC2_ROOT>;
1133				clock-names = "ipg", "ahb", "per";
1134				fsl,tuning-start-tap = <20>;
1135				fsl,tuning-step = <2>;
1136				bus-width = <4>;
1137				status = "disabled";
1138			};
1139
1140			qspi0: spi@30bb0000 {
1141				#address-cells = <1>;
1142				#size-cells = <0>;
1143				compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
1144				reg = <0x30bb0000 0x10000>,
1145				      <0x08000000 0x10000000>;
1146				reg-names = "QuadSPI", "QuadSPI-memory";
1147				interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1148				clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1149					 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1150				clock-names = "qspi_en", "qspi";
1151				status = "disabled";
1152			};
1153
1154			sdma1: sdma@30bd0000 {
1155				compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
1156				reg = <0x30bd0000 0x10000>;
1157				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1158				clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
1159					 <&clk IMX8MQ_CLK_AHB>;
1160				clock-names = "ipg", "ahb";
1161				#dma-cells = <3>;
1162				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1163			};
1164
1165			fec1: ethernet@30be0000 {
1166				compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1167				reg = <0x30be0000 0x10000>;
1168				interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1169				             <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
1170					     <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
1171					     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
1172				clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1173				         <&clk IMX8MQ_CLK_ENET1_ROOT>,
1174				         <&clk IMX8MQ_CLK_ENET_TIMER>,
1175				         <&clk IMX8MQ_CLK_ENET_REF>,
1176				         <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1177				clock-names = "ipg", "ahb", "ptp",
1178				              "enet_clk_ref", "enet_out";
1179				assigned-clocks = <&clk IMX8MQ_CLK_ENET_AXI>,
1180						  <&clk IMX8MQ_CLK_ENET_TIMER>,
1181						  <&clk IMX8MQ_CLK_ENET_REF>,
1182						  <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1183				assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1184							 <&clk IMX8MQ_SYS2_PLL_100M>,
1185							 <&clk IMX8MQ_SYS2_PLL_125M>,
1186							 <&clk IMX8MQ_SYS2_PLL_50M>;
1187				assigned-clock-rates = <0>, <100000000>, <125000000>, <0>;
1188				fsl,num-tx-queues = <3>;
1189				fsl,num-rx-queues = <3>;
1190				nvmem-cells = <&fec_mac_address>;
1191				nvmem-cell-names = "mac-address";
1192				nvmem_macaddr_swap;
1193				fsl,stop-mode = <&iomuxc_gpr 0x10 3>;
1194				status = "disabled";
1195			};
1196		};
1197
1198		noc: interconnect@32700000 {
1199			compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc";
1200			reg = <0x32700000 0x100000>;
1201			clocks = <&clk IMX8MQ_CLK_NOC>;
1202			fsl,ddrc = <&ddrc>;
1203			#interconnect-cells = <1>;
1204			operating-points-v2 = <&noc_opp_table>;
1205
1206			noc_opp_table: opp-table {
1207				compatible = "operating-points-v2";
1208
1209				opp-133M {
1210					opp-hz = /bits/ 64 <133333333>;
1211				};
1212
1213				opp-400M {
1214					opp-hz = /bits/ 64 <400000000>;
1215				};
1216
1217				opp-800M {
1218					opp-hz = /bits/ 64 <800000000>;
1219				};
1220			};
1221		};
1222
1223		bus@32c00000 { /* AIPS4 */
1224			compatible = "fsl,aips-bus", "simple-bus";
1225			reg = <0x32c00000 0x400000>;
1226			#address-cells = <1>;
1227			#size-cells = <1>;
1228			ranges = <0x32c00000 0x32c00000 0x400000>;
1229
1230			irqsteer: interrupt-controller@32e2d000 {
1231				compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1232				reg = <0x32e2d000 0x1000>;
1233				interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1234				clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1235				clock-names = "ipg";
1236				fsl,channel = <0>;
1237				fsl,num-irqs = <64>;
1238				interrupt-controller;
1239				#interrupt-cells = <1>;
1240			};
1241		};
1242
1243		gpu: gpu@38000000 {
1244			compatible = "vivante,gc";
1245			reg = <0x38000000 0x40000>;
1246			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1247			clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1248			         <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1249			         <&clk IMX8MQ_CLK_GPU_AXI>,
1250			         <&clk IMX8MQ_CLK_GPU_AHB>;
1251			clock-names = "core", "shader", "bus", "reg";
1252			#cooling-cells = <2>;
1253			assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1254			                  <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1255			                  <&clk IMX8MQ_CLK_GPU_AXI>,
1256			                  <&clk IMX8MQ_CLK_GPU_AHB>,
1257			                  <&clk IMX8MQ_GPU_PLL_BYPASS>;
1258			assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1259			                         <&clk IMX8MQ_GPU_PLL_OUT>,
1260			                         <&clk IMX8MQ_GPU_PLL_OUT>,
1261			                         <&clk IMX8MQ_GPU_PLL_OUT>,
1262			                         <&clk IMX8MQ_GPU_PLL>;
1263			assigned-clock-rates = <800000000>, <800000000>,
1264			                       <800000000>, <800000000>, <0>;
1265			power-domains = <&pgc_gpu>;
1266		};
1267
1268		usb_dwc3_0: usb@38100000 {
1269			compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1270			reg = <0x38100000 0x10000>;
1271			clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
1272			         <&clk IMX8MQ_CLK_USB_CORE_REF>,
1273				 <&clk IMX8MQ_CLK_32K>;
1274			clock-names = "bus_early", "ref", "suspend";
1275			assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1276			                  <&clk IMX8MQ_CLK_USB_CORE_REF>;
1277			assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1278			                         <&clk IMX8MQ_SYS1_PLL_100M>;
1279			assigned-clock-rates = <500000000>, <100000000>;
1280			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1281			phys = <&usb3_phy0>, <&usb3_phy0>;
1282			phy-names = "usb2-phy", "usb3-phy";
1283			power-domains = <&pgc_otg1>;
1284			usb3-resume-missing-cas;
1285			status = "disabled";
1286		};
1287
1288		usb3_phy0: usb-phy@381f0040 {
1289			compatible = "fsl,imx8mq-usb-phy";
1290			reg = <0x381f0040 0x40>;
1291			clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1292			clock-names = "phy";
1293			assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1294			assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1295			assigned-clock-rates = <100000000>;
1296			#phy-cells = <0>;
1297			status = "disabled";
1298		};
1299
1300		usb_dwc3_1: usb@38200000 {
1301			compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1302			reg = <0x38200000 0x10000>;
1303			clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
1304			         <&clk IMX8MQ_CLK_USB_CORE_REF>,
1305				 <&clk IMX8MQ_CLK_32K>;
1306			clock-names = "bus_early", "ref", "suspend";
1307			assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1308			                  <&clk IMX8MQ_CLK_USB_CORE_REF>;
1309			assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1310			                         <&clk IMX8MQ_SYS1_PLL_100M>;
1311			assigned-clock-rates = <500000000>, <100000000>;
1312			interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1313			phys = <&usb3_phy1>, <&usb3_phy1>;
1314			phy-names = "usb2-phy", "usb3-phy";
1315			power-domains = <&pgc_otg2>;
1316			usb3-resume-missing-cas;
1317			status = "disabled";
1318		};
1319
1320		usb3_phy1: usb-phy@382f0040 {
1321			compatible = "fsl,imx8mq-usb-phy";
1322			reg = <0x382f0040 0x40>;
1323			clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1324			clock-names = "phy";
1325			assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1326			assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1327			assigned-clock-rates = <100000000>;
1328			#phy-cells = <0>;
1329			status = "disabled";
1330		};
1331
1332		vpu: video-codec@38300000 {
1333			compatible = "nxp,imx8mq-vpu";
1334			reg = <0x38300000 0x10000>,
1335			      <0x38310000 0x10000>,
1336			      <0x38320000 0x10000>;
1337			reg-names = "g1", "g2", "ctrl";
1338			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1339				     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1340			interrupt-names = "g1", "g2";
1341			clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>,
1342				 <&clk IMX8MQ_CLK_VPU_G2_ROOT>,
1343				 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
1344			clock-names = "g1", "g2", "bus";
1345			assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>,
1346					  <&clk IMX8MQ_CLK_VPU_G2>,
1347					  <&clk IMX8MQ_CLK_VPU_BUS>,
1348					  <&clk IMX8MQ_VPU_PLL_BYPASS>;
1349			assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>,
1350						 <&clk IMX8MQ_VPU_PLL_OUT>,
1351						 <&clk IMX8MQ_SYS1_PLL_800M>,
1352						 <&clk IMX8MQ_VPU_PLL>;
1353			assigned-clock-rates = <600000000>, <600000000>,
1354					       <800000000>, <0>;
1355			power-domains = <&pgc_vpu>;
1356		};
1357
1358		pcie0: pcie@33800000 {
1359			compatible = "fsl,imx8mq-pcie";
1360			reg = <0x33800000 0x400000>,
1361			      <0x1ff00000 0x80000>;
1362			reg-names = "dbi", "config";
1363			#address-cells = <3>;
1364			#size-cells = <2>;
1365			device_type = "pci";
1366			bus-range = <0x00 0xff>;
1367			ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
1368			          0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
1369			num-lanes = <1>;
1370			num-viewport = <4>;
1371			interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1372			interrupt-names = "msi";
1373			#interrupt-cells = <1>;
1374			interrupt-map-mask = <0 0 0 0x7>;
1375			interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1376			                <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1377			                <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1378			                <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1379			fsl,max-link-speed = <2>;
1380			linux,pci-domain = <0>;
1381			power-domains = <&pgc_pcie>;
1382			resets = <&src IMX8MQ_RESET_PCIEPHY>,
1383			         <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1384			         <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1385			reset-names = "pciephy", "apps", "turnoff";
1386			assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
1387			                  <&clk IMX8MQ_CLK_PCIE1_PHY>,
1388			                  <&clk IMX8MQ_CLK_PCIE1_AUX>;
1389			assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1390			                         <&clk IMX8MQ_SYS2_PLL_100M>,
1391			                         <&clk IMX8MQ_SYS1_PLL_80M>;
1392			assigned-clock-rates = <250000000>, <100000000>,
1393			                       <10000000>;
1394			status = "disabled";
1395		};
1396
1397		pcie1: pcie@33c00000 {
1398			compatible = "fsl,imx8mq-pcie";
1399			reg = <0x33c00000 0x400000>,
1400			      <0x27f00000 0x80000>;
1401			reg-names = "dbi", "config";
1402			#address-cells = <3>;
1403			#size-cells = <2>;
1404			device_type = "pci";
1405			ranges =  <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
1406				   0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
1407			num-lanes = <1>;
1408			num-viewport = <4>;
1409			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1410			interrupt-names = "msi";
1411			#interrupt-cells = <1>;
1412			interrupt-map-mask = <0 0 0 0x7>;
1413			interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1414					<0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1415					<0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1416					<0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1417			fsl,max-link-speed = <2>;
1418			linux,pci-domain = <1>;
1419			power-domains = <&pgc_pcie>;
1420			resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1421			         <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1422			         <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1423			reset-names = "pciephy", "apps", "turnoff";
1424			assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
1425			                  <&clk IMX8MQ_CLK_PCIE2_PHY>,
1426			                  <&clk IMX8MQ_CLK_PCIE2_AUX>;
1427			assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1428			                         <&clk IMX8MQ_SYS2_PLL_100M>,
1429			                         <&clk IMX8MQ_SYS1_PLL_80M>;
1430			assigned-clock-rates = <250000000>, <100000000>,
1431			                       <10000000>;
1432			status = "disabled";
1433		};
1434
1435		gic: interrupt-controller@38800000 {
1436			compatible = "arm,gic-v3";
1437			reg = <0x38800000 0x10000>,	/* GIC Dist */
1438			      <0x38880000 0xc0000>,	/* GICR */
1439			      <0x31000000 0x2000>,	/* GICC */
1440			      <0x31010000 0x2000>,	/* GICV */
1441			      <0x31020000 0x2000>;	/* GICH */
1442			#interrupt-cells = <3>;
1443			interrupt-controller;
1444			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1445			interrupt-parent = <&gic>;
1446		};
1447
1448		ddrc: memory-controller@3d400000 {
1449			compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1450			reg = <0x3d400000 0x400000>;
1451			clock-names = "core", "pll", "alt", "apb";
1452			clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1453				 <&clk IMX8MQ_DRAM_PLL_OUT>,
1454				 <&clk IMX8MQ_CLK_DRAM_ALT>,
1455				 <&clk IMX8MQ_CLK_DRAM_APB>;
1456		};
1457
1458		ddr-pmu@3d800000 {
1459			compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1460			reg = <0x3d800000 0x400000>;
1461			interrupt-parent = <&gic>;
1462			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1463		};
1464	};
1465};
1466