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