1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
4 * Copyright (C) 2017-2018 Pengutronix, Lucas Stach <kernel@pengutronix.de>
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 "imx8mq-pinfunc.h"
17 interrupt-parent = <&gpc>;
42 compatible = "fixed-clock";
44 clock-frequency = <32768>;
45 clock-output-names = "ckil";
48 osc_25m: clock-osc-25m {
49 compatible = "fixed-clock";
51 clock-frequency = <25000000>;
52 clock-output-names = "osc_25m";
55 osc_27m: clock-osc-27m {
56 compatible = "fixed-clock";
58 clock-frequency = <27000000>;
59 clock-output-names = "osc_27m";
62 clk_ext1: clock-ext1 {
63 compatible = "fixed-clock";
65 clock-frequency = <133000000>;
66 clock-output-names = "clk_ext1";
69 clk_ext2: clock-ext2 {
70 compatible = "fixed-clock";
72 clock-frequency = <133000000>;
73 clock-output-names = "clk_ext2";
76 clk_ext3: clock-ext3 {
77 compatible = "fixed-clock";
79 clock-frequency = <133000000>;
80 clock-output-names = "clk_ext3";
83 clk_ext4: clock-ext4 {
84 compatible = "fixed-clock";
86 clock-frequency= <133000000>;
87 clock-output-names = "clk_ext4";
96 compatible = "arm,cortex-a53";
98 clock-latency = <61036>; /* two CLK32 periods */
99 clocks = <&clk IMX8MQ_CLK_ARM>;
100 enable-method = "psci";
101 next-level-cache = <&A53_L2>;
102 operating-points-v2 = <&a53_opp_table>;
103 #cooling-cells = <2>;
104 nvmem-cells = <&cpu_speed_grade>;
105 nvmem-cell-names = "speed_grade";
110 compatible = "arm,cortex-a53";
112 clock-latency = <61036>; /* two CLK32 periods */
113 clocks = <&clk IMX8MQ_CLK_ARM>;
114 enable-method = "psci";
115 next-level-cache = <&A53_L2>;
116 operating-points-v2 = <&a53_opp_table>;
117 #cooling-cells = <2>;
122 compatible = "arm,cortex-a53";
124 clock-latency = <61036>; /* two CLK32 periods */
125 clocks = <&clk IMX8MQ_CLK_ARM>;
126 enable-method = "psci";
127 next-level-cache = <&A53_L2>;
128 operating-points-v2 = <&a53_opp_table>;
129 #cooling-cells = <2>;
134 compatible = "arm,cortex-a53";
136 clock-latency = <61036>; /* two CLK32 periods */
137 clocks = <&clk IMX8MQ_CLK_ARM>;
138 enable-method = "psci";
139 next-level-cache = <&A53_L2>;
140 operating-points-v2 = <&a53_opp_table>;
141 #cooling-cells = <2>;
145 compatible = "cache";
149 a53_opp_table: opp-table {
150 compatible = "operating-points-v2";
154 opp-hz = /bits/ 64 <800000000>;
155 opp-microvolt = <900000>;
156 /* Industrial only */
157 opp-supported-hw = <0xf>, <0x4>;
158 clock-latency-ns = <150000>;
163 opp-hz = /bits/ 64 <1000000000>;
164 opp-microvolt = <900000>;
166 opp-supported-hw = <0xe>, <0x3>;
167 clock-latency-ns = <150000>;
172 opp-hz = /bits/ 64 <1300000000>;
173 opp-microvolt = <1000000>;
174 opp-supported-hw = <0xc>, <0x4>;
175 clock-latency-ns = <150000>;
180 opp-hz = /bits/ 64 <1500000000>;
181 opp-microvolt = <1000000>;
182 opp-supported-hw = <0x8>, <0x3>;
183 clock-latency-ns = <150000>;
189 compatible = "arm,cortex-a53-pmu";
190 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
191 interrupt-parent = <&gic>;
192 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
196 compatible = "arm,psci-1.0";
201 cpu_thermal: cpu-thermal {
202 polling-delay-passive = <250>;
203 polling-delay = <2000>;
204 thermal-sensors = <&tmu 0>;
207 cpu_alert: cpu-alert {
208 temperature = <80000>;
214 temperature = <90000>;
224 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
225 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
226 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
227 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
233 polling-delay-passive = <250>;
234 polling-delay = <2000>;
235 thermal-sensors = <&tmu 1>;
238 gpu_alert: gpu-alert {
239 temperature = <80000>;
245 temperature = <90000>;
255 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
261 polling-delay-passive = <250>;
262 polling-delay = <2000>;
263 thermal-sensors = <&tmu 2>;
267 temperature = <90000>;
276 compatible = "arm,armv8-timer";
277 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
278 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
279 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
280 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
281 interrupt-parent = <&gic>;
282 arm,no-tick-in-suspend;
286 compatible = "simple-bus";
287 #address-cells = <1>;
289 ranges = <0x0 0x0 0x0 0x3e000000>;
290 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
292 bus@30000000 { /* AIPS1 */
293 compatible = "fsl,aips-bus", "simple-bus";
294 reg = <0x301f0000 0x10000>;
295 #address-cells = <1>;
297 ranges = <0x30000000 0x30000000 0x400000>;
300 #sound-dai-cells = <0>;
301 compatible = "fsl,imx8mq-sai";
302 reg = <0x30010000 0x10000>;
303 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
304 clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
305 <&clk IMX8MQ_CLK_SAI1_ROOT>,
306 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
307 clock-names = "bus", "mclk1", "mclk2", "mclk3";
308 dmas = <&sdma2 8 24 0>, <&sdma1 9 24 0>;
309 dma-names = "rx", "tx";
314 #sound-dai-cells = <0>;
315 compatible = "fsl,imx8mq-sai";
316 reg = <0x30030000 0x10000>;
317 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
318 clocks = <&clk IMX8MQ_CLK_SAI6_IPG>,
319 <&clk IMX8MQ_CLK_SAI6_ROOT>,
320 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
321 clock-names = "bus", "mclk1", "mclk2", "mclk3";
322 dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
323 dma-names = "rx", "tx";
328 #sound-dai-cells = <0>;
329 compatible = "fsl,imx8mq-sai";
330 reg = <0x30040000 0x10000>;
331 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
332 clocks = <&clk IMX8MQ_CLK_SAI5_IPG>,
333 <&clk IMX8MQ_CLK_SAI5_ROOT>,
334 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
335 clock-names = "bus", "mclk1", "mclk2", "mclk3";
336 dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
337 dma-names = "rx", "tx";
342 #sound-dai-cells = <0>;
343 compatible = "fsl,imx8mq-sai";
344 reg = <0x30050000 0x10000>;
345 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
346 clocks = <&clk IMX8MQ_CLK_SAI4_IPG>,
347 <&clk IMX8MQ_CLK_SAI4_ROOT>,
348 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
349 clock-names = "bus", "mclk1", "mclk2", "mclk3";
350 dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
351 dma-names = "rx", "tx";
355 gpio1: gpio@30200000 {
356 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
357 reg = <0x30200000 0x10000>;
358 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
359 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
360 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
363 interrupt-controller;
364 #interrupt-cells = <2>;
365 gpio-ranges = <&iomuxc 0 10 30>;
368 gpio2: gpio@30210000 {
369 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
370 reg = <0x30210000 0x10000>;
371 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
372 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
373 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
376 interrupt-controller;
377 #interrupt-cells = <2>;
378 gpio-ranges = <&iomuxc 0 40 21>;
381 gpio3: gpio@30220000 {
382 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
383 reg = <0x30220000 0x10000>;
384 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
385 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
386 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
389 interrupt-controller;
390 #interrupt-cells = <2>;
391 gpio-ranges = <&iomuxc 0 61 26>;
394 gpio4: gpio@30230000 {
395 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
396 reg = <0x30230000 0x10000>;
397 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
398 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
399 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
402 interrupt-controller;
403 #interrupt-cells = <2>;
404 gpio-ranges = <&iomuxc 0 87 32>;
407 gpio5: gpio@30240000 {
408 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
409 reg = <0x30240000 0x10000>;
410 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
411 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
412 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
415 interrupt-controller;
416 #interrupt-cells = <2>;
417 gpio-ranges = <&iomuxc 0 119 30>;
421 compatible = "fsl,imx8mq-tmu";
422 reg = <0x30260000 0x10000>;
423 interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
424 clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
426 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
427 fsl,tmu-calibration = <0x00000000 0x00000023
428 0x00000001 0x00000029
429 0x00000002 0x0000002f
430 0x00000003 0x00000035
431 0x00000004 0x0000003d
432 0x00000005 0x00000043
433 0x00000006 0x0000004b
434 0x00000007 0x00000051
435 0x00000008 0x00000057
436 0x00000009 0x0000005f
437 0x0000000a 0x00000067
438 0x0000000b 0x0000006f
440 0x00010000 0x0000001b
441 0x00010001 0x00000023
442 0x00010002 0x0000002b
443 0x00010003 0x00000033
444 0x00010004 0x0000003b
445 0x00010005 0x00000043
446 0x00010006 0x0000004b
447 0x00010007 0x00000055
448 0x00010008 0x0000005d
449 0x00010009 0x00000067
450 0x0001000a 0x00000070
452 0x00020000 0x00000017
453 0x00020001 0x00000023
454 0x00020002 0x0000002d
455 0x00020003 0x00000037
456 0x00020004 0x00000041
457 0x00020005 0x0000004b
458 0x00020006 0x00000057
459 0x00020007 0x00000063
460 0x00020008 0x0000006f
462 0x00030000 0x00000015
463 0x00030001 0x00000021
464 0x00030002 0x0000002d
465 0x00030003 0x00000039
466 0x00030004 0x00000045
467 0x00030005 0x00000053
468 0x00030006 0x0000005f
469 0x00030007 0x00000071>;
470 #thermal-sensor-cells = <1>;
473 wdog1: watchdog@30280000 {
474 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
475 reg = <0x30280000 0x10000>;
476 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
477 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
481 wdog2: watchdog@30290000 {
482 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
483 reg = <0x30290000 0x10000>;
484 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
485 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
489 wdog3: watchdog@302a0000 {
490 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
491 reg = <0x302a0000 0x10000>;
492 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
493 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
497 sdma2: sdma@302c0000 {
498 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
499 reg = <0x302c0000 0x10000>;
500 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
501 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
502 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
503 clock-names = "ipg", "ahb";
505 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
508 lcdif: lcd-controller@30320000 {
509 compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif";
510 reg = <0x30320000 0x10000>;
511 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
512 clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
514 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
515 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
516 <&clk IMX8MQ_CLK_LCDIF_PIXEL>,
517 <&clk IMX8MQ_VIDEO_PLL1>;
518 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
519 <&clk IMX8MQ_VIDEO_PLL1>,
520 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
521 assigned-clock-rates = <0>, <0>, <0>, <594000000>;
525 iomuxc: pinctrl@30330000 {
526 compatible = "fsl,imx8mq-iomuxc";
527 reg = <0x30330000 0x10000>;
530 iomuxc_gpr: syscon@30340000 {
531 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr",
532 "syscon", "simple-mfd";
533 reg = <0x30340000 0x10000>;
535 mux: mux-controller {
536 compatible = "mmio-mux";
537 #mux-control-cells = <1>;
538 mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */
542 ocotp: ocotp-ctrl@30350000 {
543 compatible = "fsl,imx8mq-ocotp", "syscon";
544 reg = <0x30350000 0x10000>;
545 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
546 #address-cells = <1>;
549 cpu_speed_grade: speed-grade@10 {
554 anatop: syscon@30360000 {
555 compatible = "fsl,imx8mq-anatop", "syscon";
556 reg = <0x30360000 0x10000>;
557 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
560 snvs: snvs@30370000 {
561 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
562 reg = <0x30370000 0x10000>;
564 snvs_rtc: snvs-rtc-lp{
565 compatible = "fsl,sec-v4.0-mon-rtc-lp";
568 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
569 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
570 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
571 clock-names = "snvs-rtc";
574 snvs_pwrkey: snvs-powerkey {
575 compatible = "fsl,sec-v4.0-pwrkey";
577 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
578 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
579 clock-names = "snvs-pwrkey";
580 linux,keycode = <KEY_POWER>;
586 clk: clock-controller@30380000 {
587 compatible = "fsl,imx8mq-ccm";
588 reg = <0x30380000 0x10000>;
589 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
590 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
592 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
593 <&clk_ext1>, <&clk_ext2>,
594 <&clk_ext3>, <&clk_ext4>;
595 clock-names = "ckil", "osc_25m", "osc_27m",
596 "clk_ext1", "clk_ext2",
597 "clk_ext3", "clk_ext4";
598 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
599 <&clk IMX8MQ_CLK_A53_CORE>,
600 <&clk IMX8MQ_CLK_NOC>;
601 assigned-clock-rates = <0>, <0>,
603 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
604 <&clk IMX8MQ_ARM_PLL_OUT>;
607 src: reset-controller@30390000 {
608 compatible = "fsl,imx8mq-src", "syscon";
609 reg = <0x30390000 0x10000>;
614 compatible = "fsl,imx8mq-gpc";
615 reg = <0x303a0000 0x10000>;
616 interrupt-parent = <&gic>;
617 interrupt-controller;
618 #interrupt-cells = <3>;
621 #address-cells = <1>;
624 pgc_mipi: power-domain@0 {
625 #power-domain-cells = <0>;
626 reg = <IMX8M_POWER_DOMAIN_MIPI>;
630 * As per comment in ATF source code:
632 * PCIE1 and PCIE2 share the
633 * same reset signal, if we
634 * power down PCIE2, PCIE1
635 * will be held in reset too.
637 * So instead of creating two
638 * separate power domains for
639 * PCIE1 and PCIE2 we create a
640 * link between both and use
641 * it as a shared PCIE power
644 pgc_pcie: power-domain@1 {
645 #power-domain-cells = <0>;
646 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
647 power-domains = <&pgc_pcie2>;
650 pgc_otg1: power-domain@2 {
651 #power-domain-cells = <0>;
652 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
655 pgc_otg2: power-domain@3 {
656 #power-domain-cells = <0>;
657 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
660 pgc_ddr1: power-domain@4 {
661 #power-domain-cells = <0>;
662 reg = <IMX8M_POWER_DOMAIN_DDR1>;
665 pgc_gpu: power-domain@5 {
666 #power-domain-cells = <0>;
667 reg = <IMX8M_POWER_DOMAIN_GPU>;
668 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
669 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
670 <&clk IMX8MQ_CLK_GPU_AXI>,
671 <&clk IMX8MQ_CLK_GPU_AHB>;
674 pgc_vpu: power-domain@6 {
675 #power-domain-cells = <0>;
676 reg = <IMX8M_POWER_DOMAIN_VPU>;
679 pgc_disp: power-domain@7 {
680 #power-domain-cells = <0>;
681 reg = <IMX8M_POWER_DOMAIN_DISP>;
684 pgc_mipi_csi1: power-domain@8 {
685 #power-domain-cells = <0>;
686 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
689 pgc_mipi_csi2: power-domain@9 {
690 #power-domain-cells = <0>;
691 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
694 pgc_pcie2: power-domain@a {
695 #power-domain-cells = <0>;
696 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
702 bus@30400000 { /* AIPS2 */
703 compatible = "fsl,aips-bus", "simple-bus";
704 reg = <0x305f0000 0x10000>;
705 #address-cells = <1>;
707 ranges = <0x30400000 0x30400000 0x400000>;
710 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
711 reg = <0x30660000 0x10000>;
712 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
713 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
714 <&clk IMX8MQ_CLK_PWM1_ROOT>;
715 clock-names = "ipg", "per";
721 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
722 reg = <0x30670000 0x10000>;
723 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
724 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
725 <&clk IMX8MQ_CLK_PWM2_ROOT>;
726 clock-names = "ipg", "per";
732 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
733 reg = <0x30680000 0x10000>;
734 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
735 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
736 <&clk IMX8MQ_CLK_PWM3_ROOT>;
737 clock-names = "ipg", "per";
743 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
744 reg = <0x30690000 0x10000>;
745 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
746 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
747 <&clk IMX8MQ_CLK_PWM4_ROOT>;
748 clock-names = "ipg", "per";
753 system_counter: timer@306a0000 {
754 compatible = "nxp,sysctr-timer";
755 reg = <0x306a0000 0x20000>;
756 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
762 bus@30800000 { /* AIPS3 */
763 compatible = "fsl,aips-bus", "simple-bus";
764 reg = <0x309f0000 0x10000>;
765 #address-cells = <1>;
767 ranges = <0x30800000 0x30800000 0x400000>,
768 <0x08000000 0x08000000 0x10000000>;
770 ecspi1: spi@30820000 {
771 #address-cells = <1>;
773 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
774 reg = <0x30820000 0x10000>;
775 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
776 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
777 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
778 clock-names = "ipg", "per";
782 ecspi2: spi@30830000 {
783 #address-cells = <1>;
785 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
786 reg = <0x30830000 0x10000>;
787 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
788 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
789 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
790 clock-names = "ipg", "per";
794 ecspi3: spi@30840000 {
795 #address-cells = <1>;
797 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
798 reg = <0x30840000 0x10000>;
799 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
800 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
801 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
802 clock-names = "ipg", "per";
806 uart1: serial@30860000 {
807 compatible = "fsl,imx8mq-uart",
809 reg = <0x30860000 0x10000>;
810 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
811 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
812 <&clk IMX8MQ_CLK_UART1_ROOT>;
813 clock-names = "ipg", "per";
817 uart3: serial@30880000 {
818 compatible = "fsl,imx8mq-uart",
820 reg = <0x30880000 0x10000>;
821 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
822 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
823 <&clk IMX8MQ_CLK_UART3_ROOT>;
824 clock-names = "ipg", "per";
828 uart2: serial@30890000 {
829 compatible = "fsl,imx8mq-uart",
831 reg = <0x30890000 0x10000>;
832 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
833 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
834 <&clk IMX8MQ_CLK_UART2_ROOT>;
835 clock-names = "ipg", "per";
840 #sound-dai-cells = <0>;
841 compatible = "fsl,imx8mq-sai";
842 reg = <0x308b0000 0x10000>;
843 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
844 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
845 <&clk IMX8MQ_CLK_SAI2_ROOT>,
846 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
847 clock-names = "bus", "mclk1", "mclk2", "mclk3";
848 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
849 dma-names = "rx", "tx";
854 #sound-dai-cells = <0>;
855 compatible = "fsl,imx8mq-sai";
856 reg = <0x308c0000 0x10000>;
857 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
858 clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
859 <&clk IMX8MQ_CLK_SAI3_ROOT>,
860 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
861 clock-names = "bus", "mclk1", "mclk2", "mclk3";
862 dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
863 dma-names = "rx", "tx";
867 crypto: crypto@30900000 {
868 compatible = "fsl,sec-v4.0";
869 #address-cells = <1>;
871 reg = <0x30900000 0x40000>;
872 ranges = <0 0x30900000 0x40000>;
873 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
874 clocks = <&clk IMX8MQ_CLK_AHB>,
875 <&clk IMX8MQ_CLK_IPG_ROOT>;
876 clock-names = "aclk", "ipg";
879 compatible = "fsl,sec-v4.0-job-ring";
880 reg = <0x1000 0x1000>;
881 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
885 compatible = "fsl,sec-v4.0-job-ring";
886 reg = <0x2000 0x1000>;
887 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
891 compatible = "fsl,sec-v4.0-job-ring";
892 reg = <0x3000 0x1000>;
893 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
897 dphy: dphy@30a00300 {
898 compatible = "fsl,imx8mq-mipi-dphy";
899 reg = <0x30a00300 0x100>;
900 clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
901 clock-names = "phy_ref";
902 assigned-clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
903 assigned-clock-parents = <&clk IMX8MQ_VIDEO_PLL1_OUT>;
904 assigned-clock-rates = <24000000>;
906 power-domains = <&pgc_mipi>;
911 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
912 reg = <0x30a20000 0x10000>;
913 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
914 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
915 #address-cells = <1>;
921 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
922 reg = <0x30a30000 0x10000>;
923 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
924 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
925 #address-cells = <1>;
931 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
932 reg = <0x30a40000 0x10000>;
933 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
934 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
935 #address-cells = <1>;
941 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
942 reg = <0x30a50000 0x10000>;
943 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
944 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
945 #address-cells = <1>;
950 uart4: serial@30a60000 {
951 compatible = "fsl,imx8mq-uart",
953 reg = <0x30a60000 0x10000>;
954 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
955 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
956 <&clk IMX8MQ_CLK_UART4_ROOT>;
957 clock-names = "ipg", "per";
961 usdhc1: mmc@30b40000 {
962 compatible = "fsl,imx8mq-usdhc",
964 reg = <0x30b40000 0x10000>;
965 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
966 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
967 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
968 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
969 clock-names = "ipg", "ahb", "per";
970 fsl,tuning-start-tap = <20>;
971 fsl,tuning-step = <2>;
976 usdhc2: mmc@30b50000 {
977 compatible = "fsl,imx8mq-usdhc",
979 reg = <0x30b50000 0x10000>;
980 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
981 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
982 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
983 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
984 clock-names = "ipg", "ahb", "per";
985 fsl,tuning-start-tap = <20>;
986 fsl,tuning-step = <2>;
991 qspi0: spi@30bb0000 {
992 #address-cells = <1>;
994 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
995 reg = <0x30bb0000 0x10000>,
996 <0x08000000 0x10000000>;
997 reg-names = "QuadSPI", "QuadSPI-memory";
998 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
999 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1000 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1001 clock-names = "qspi_en", "qspi";
1002 status = "disabled";
1005 sdma1: sdma@30bd0000 {
1006 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
1007 reg = <0x30bd0000 0x10000>;
1008 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1009 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
1010 <&clk IMX8MQ_CLK_AHB>;
1011 clock-names = "ipg", "ahb";
1013 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1016 fec1: ethernet@30be0000 {
1017 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1018 reg = <0x30be0000 0x10000>;
1019 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1020 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
1021 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
1022 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1023 <&clk IMX8MQ_CLK_ENET1_ROOT>,
1024 <&clk IMX8MQ_CLK_ENET_TIMER>,
1025 <&clk IMX8MQ_CLK_ENET_REF>,
1026 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1027 clock-names = "ipg", "ahb", "ptp",
1028 "enet_clk_ref", "enet_out";
1029 fsl,num-tx-queues = <3>;
1030 fsl,num-rx-queues = <3>;
1031 status = "disabled";
1035 bus@32c00000 { /* AIPS4 */
1036 compatible = "fsl,aips-bus", "simple-bus";
1037 reg = <0x32df0000 0x10000>;
1038 #address-cells = <1>;
1040 ranges = <0x32c00000 0x32c00000 0x400000>;
1042 irqsteer: interrupt-controller@32e2d000 {
1043 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1044 reg = <0x32e2d000 0x1000>;
1045 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1046 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1047 clock-names = "ipg";
1049 fsl,num-irqs = <64>;
1050 interrupt-controller;
1051 #interrupt-cells = <1>;
1056 compatible = "vivante,gc";
1057 reg = <0x38000000 0x40000>;
1058 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1059 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1060 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1061 <&clk IMX8MQ_CLK_GPU_AXI>,
1062 <&clk IMX8MQ_CLK_GPU_AHB>;
1063 clock-names = "core", "shader", "bus", "reg";
1064 #cooling-cells = <2>;
1065 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1066 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1067 <&clk IMX8MQ_CLK_GPU_AXI>,
1068 <&clk IMX8MQ_CLK_GPU_AHB>,
1069 <&clk IMX8MQ_GPU_PLL_BYPASS>;
1070 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1071 <&clk IMX8MQ_GPU_PLL_OUT>,
1072 <&clk IMX8MQ_GPU_PLL_OUT>,
1073 <&clk IMX8MQ_GPU_PLL_OUT>,
1074 <&clk IMX8MQ_GPU_PLL>;
1075 assigned-clock-rates = <800000000>, <800000000>,
1076 <800000000>, <800000000>, <0>;
1077 power-domains = <&pgc_gpu>;
1080 usb_dwc3_0: usb@38100000 {
1081 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1082 reg = <0x38100000 0x10000>;
1083 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
1084 <&clk IMX8MQ_CLK_USB_CORE_REF>,
1085 <&clk IMX8MQ_CLK_32K>;
1086 clock-names = "bus_early", "ref", "suspend";
1087 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1088 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1089 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1090 <&clk IMX8MQ_SYS1_PLL_100M>;
1091 assigned-clock-rates = <500000000>, <100000000>;
1092 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1093 phys = <&usb3_phy0>, <&usb3_phy0>;
1094 phy-names = "usb2-phy", "usb3-phy";
1095 power-domains = <&pgc_otg1>;
1096 usb3-resume-missing-cas;
1097 status = "disabled";
1100 usb3_phy0: usb-phy@381f0040 {
1101 compatible = "fsl,imx8mq-usb-phy";
1102 reg = <0x381f0040 0x40>;
1103 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1104 clock-names = "phy";
1105 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1106 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1107 assigned-clock-rates = <100000000>;
1109 status = "disabled";
1112 usb_dwc3_1: usb@38200000 {
1113 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1114 reg = <0x38200000 0x10000>;
1115 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
1116 <&clk IMX8MQ_CLK_USB_CORE_REF>,
1117 <&clk IMX8MQ_CLK_32K>;
1118 clock-names = "bus_early", "ref", "suspend";
1119 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1120 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1121 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1122 <&clk IMX8MQ_SYS1_PLL_100M>;
1123 assigned-clock-rates = <500000000>, <100000000>;
1124 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1125 phys = <&usb3_phy1>, <&usb3_phy1>;
1126 phy-names = "usb2-phy", "usb3-phy";
1127 power-domains = <&pgc_otg2>;
1128 usb3-resume-missing-cas;
1129 status = "disabled";
1132 usb3_phy1: usb-phy@382f0040 {
1133 compatible = "fsl,imx8mq-usb-phy";
1134 reg = <0x382f0040 0x40>;
1135 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1136 clock-names = "phy";
1137 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1138 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1139 assigned-clock-rates = <100000000>;
1141 status = "disabled";
1144 pcie0: pcie@33800000 {
1145 compatible = "fsl,imx8mq-pcie";
1146 reg = <0x33800000 0x400000>,
1147 <0x1ff00000 0x80000>;
1148 reg-names = "dbi", "config";
1149 #address-cells = <3>;
1151 device_type = "pci";
1152 bus-range = <0x00 0xff>;
1153 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
1154 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
1157 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1158 interrupt-names = "msi";
1159 #interrupt-cells = <1>;
1160 interrupt-map-mask = <0 0 0 0x7>;
1161 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1162 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1163 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1164 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1165 fsl,max-link-speed = <2>;
1166 power-domains = <&pgc_pcie>;
1167 resets = <&src IMX8MQ_RESET_PCIEPHY>,
1168 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1169 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1170 reset-names = "pciephy", "apps", "turnoff";
1171 status = "disabled";
1174 pcie1: pcie@33c00000 {
1175 compatible = "fsl,imx8mq-pcie";
1176 reg = <0x33c00000 0x400000>,
1177 <0x27f00000 0x80000>;
1178 reg-names = "dbi", "config";
1179 #address-cells = <3>;
1181 device_type = "pci";
1182 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
1183 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
1186 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1187 interrupt-names = "msi";
1188 #interrupt-cells = <1>;
1189 interrupt-map-mask = <0 0 0 0x7>;
1190 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1191 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1192 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1193 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1194 fsl,max-link-speed = <2>;
1195 power-domains = <&pgc_pcie>;
1196 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1197 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1198 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1199 reset-names = "pciephy", "apps", "turnoff";
1200 status = "disabled";
1203 gic: interrupt-controller@38800000 {
1204 compatible = "arm,gic-v3";
1205 reg = <0x38800000 0x10000>, /* GIC Dist */
1206 <0x38880000 0xc0000>, /* GICR */
1207 <0x31000000 0x2000>, /* GICC */
1208 <0x31010000 0x2000>, /* GICV */
1209 <0x31020000 0x2000>; /* GICH */
1210 #interrupt-cells = <3>;
1211 interrupt-controller;
1212 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1213 interrupt-parent = <&gic>;
1216 ddrc: memory-controller@3d400000 {
1217 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1218 reg = <0x3d400000 0x400000>;
1219 clock-names = "core", "pll", "alt", "apb";
1220 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1221 <&clk IMX8MQ_DRAM_PLL_OUT>,
1222 <&clk IMX8MQ_CLK_DRAM_ALT>,
1223 <&clk IMX8MQ_CLK_DRAM_APB>;
1227 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1228 reg = <0x3d800000 0x400000>;
1229 interrupt-parent = <&gic>;
1230 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;