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 <dt-bindings/interconnect/imx8mq.h>
15 #include "imx8mq-pinfunc.h"
18 interrupt-parent = <&gpc>;
46 compatible = "fixed-clock";
48 clock-frequency = <32768>;
49 clock-output-names = "ckil";
52 osc_25m: clock-osc-25m {
53 compatible = "fixed-clock";
55 clock-frequency = <25000000>;
56 clock-output-names = "osc_25m";
59 osc_27m: clock-osc-27m {
60 compatible = "fixed-clock";
62 clock-frequency = <27000000>;
63 clock-output-names = "osc_27m";
66 clk_ext1: clock-ext1 {
67 compatible = "fixed-clock";
69 clock-frequency = <133000000>;
70 clock-output-names = "clk_ext1";
73 clk_ext2: clock-ext2 {
74 compatible = "fixed-clock";
76 clock-frequency = <133000000>;
77 clock-output-names = "clk_ext2";
80 clk_ext3: clock-ext3 {
81 compatible = "fixed-clock";
83 clock-frequency = <133000000>;
84 clock-output-names = "clk_ext3";
87 clk_ext4: clock-ext4 {
88 compatible = "fixed-clock";
90 clock-frequency= <133000000>;
91 clock-output-names = "clk_ext4";
100 compatible = "arm,cortex-a53";
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";
114 compatible = "arm,cortex-a53";
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>;
126 compatible = "arm,cortex-a53";
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>;
138 compatible = "arm,cortex-a53";
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>;
149 compatible = "cache";
153 a53_opp_table: opp-table {
154 compatible = "operating-points-v2";
158 opp-hz = /bits/ 64 <800000000>;
159 opp-microvolt = <900000>;
160 /* Industrial only */
161 opp-supported-hw = <0xf>, <0x4>;
162 clock-latency-ns = <150000>;
167 opp-hz = /bits/ 64 <1000000000>;
168 opp-microvolt = <900000>;
170 opp-supported-hw = <0xe>, <0x3>;
171 clock-latency-ns = <150000>;
176 opp-hz = /bits/ 64 <1300000000>;
177 opp-microvolt = <1000000>;
178 opp-supported-hw = <0xc>, <0x4>;
179 clock-latency-ns = <150000>;
184 opp-hz = /bits/ 64 <1500000000>;
185 opp-microvolt = <1000000>;
186 opp-supported-hw = <0x8>, <0x3>;
187 clock-latency-ns = <150000>;
193 compatible = "arm,cortex-a53-pmu";
194 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
195 interrupt-parent = <&gic>;
199 compatible = "arm,psci-1.0";
204 cpu_thermal: cpu-thermal {
205 polling-delay-passive = <250>;
206 polling-delay = <2000>;
207 thermal-sensors = <&tmu 0>;
210 cpu_alert: cpu-alert {
211 temperature = <80000>;
217 temperature = <90000>;
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>;
236 polling-delay-passive = <250>;
237 polling-delay = <2000>;
238 thermal-sensors = <&tmu 1>;
241 gpu_alert: gpu-alert {
242 temperature = <80000>;
248 temperature = <90000>;
258 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
264 polling-delay-passive = <250>;
265 polling-delay = <2000>;
266 thermal-sensors = <&tmu 2>;
270 temperature = <90000>;
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;
289 compatible = "fsl,imx8mq-soc", "simple-bus";
290 #address-cells = <1>;
292 ranges = <0x0 0x0 0x0 0x3e000000>;
293 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
294 nvmem-cells = <&imx8mq_uid>;
295 nvmem-cell-names = "soc_unique_id";
297 bus@30000000 { /* AIPS1 */
298 compatible = "fsl,aips-bus", "simple-bus";
299 reg = <0x30000000 0x400000>;
300 #address-cells = <1>;
302 ranges = <0x30000000 0x30000000 0x400000>;
305 #sound-dai-cells = <0>;
306 compatible = "fsl,imx8mq-sai";
307 reg = <0x30010000 0x10000>;
308 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
309 clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
310 <&clk IMX8MQ_CLK_SAI1_ROOT>,
311 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
312 clock-names = "bus", "mclk1", "mclk2", "mclk3";
313 dmas = <&sdma2 8 24 0>, <&sdma1 9 24 0>;
314 dma-names = "rx", "tx";
319 #sound-dai-cells = <0>;
320 compatible = "fsl,imx8mq-sai";
321 reg = <0x30030000 0x10000>;
322 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
323 clocks = <&clk IMX8MQ_CLK_SAI6_IPG>,
324 <&clk IMX8MQ_CLK_SAI6_ROOT>,
325 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
326 clock-names = "bus", "mclk1", "mclk2", "mclk3";
327 dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
328 dma-names = "rx", "tx";
333 #sound-dai-cells = <0>;
334 compatible = "fsl,imx8mq-sai";
335 reg = <0x30040000 0x10000>;
336 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
337 clocks = <&clk IMX8MQ_CLK_SAI5_IPG>,
338 <&clk IMX8MQ_CLK_SAI5_ROOT>,
339 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
340 clock-names = "bus", "mclk1", "mclk2", "mclk3";
341 dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
342 dma-names = "rx", "tx";
347 #sound-dai-cells = <0>;
348 compatible = "fsl,imx8mq-sai";
349 reg = <0x30050000 0x10000>;
350 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
351 clocks = <&clk IMX8MQ_CLK_SAI4_IPG>,
352 <&clk IMX8MQ_CLK_SAI4_ROOT>,
353 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
354 clock-names = "bus", "mclk1", "mclk2", "mclk3";
355 dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
356 dma-names = "rx", "tx";
360 gpio1: gpio@30200000 {
361 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
362 reg = <0x30200000 0x10000>;
363 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
364 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
365 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
368 interrupt-controller;
369 #interrupt-cells = <2>;
370 gpio-ranges = <&iomuxc 0 10 30>;
373 gpio2: gpio@30210000 {
374 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
375 reg = <0x30210000 0x10000>;
376 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
377 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
378 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
381 interrupt-controller;
382 #interrupt-cells = <2>;
383 gpio-ranges = <&iomuxc 0 40 21>;
386 gpio3: gpio@30220000 {
387 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
388 reg = <0x30220000 0x10000>;
389 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
390 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
391 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
394 interrupt-controller;
395 #interrupt-cells = <2>;
396 gpio-ranges = <&iomuxc 0 61 26>;
399 gpio4: gpio@30230000 {
400 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
401 reg = <0x30230000 0x10000>;
402 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
403 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
404 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
407 interrupt-controller;
408 #interrupt-cells = <2>;
409 gpio-ranges = <&iomuxc 0 87 32>;
412 gpio5: gpio@30240000 {
413 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
414 reg = <0x30240000 0x10000>;
415 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
416 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
417 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
420 interrupt-controller;
421 #interrupt-cells = <2>;
422 gpio-ranges = <&iomuxc 0 119 30>;
426 compatible = "fsl,imx8mq-tmu";
427 reg = <0x30260000 0x10000>;
428 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
429 clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
431 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
432 fsl,tmu-calibration = <0x00000000 0x00000023
433 0x00000001 0x00000029
434 0x00000002 0x0000002f
435 0x00000003 0x00000035
436 0x00000004 0x0000003d
437 0x00000005 0x00000043
438 0x00000006 0x0000004b
439 0x00000007 0x00000051
440 0x00000008 0x00000057
441 0x00000009 0x0000005f
442 0x0000000a 0x00000067
443 0x0000000b 0x0000006f
445 0x00010000 0x0000001b
446 0x00010001 0x00000023
447 0x00010002 0x0000002b
448 0x00010003 0x00000033
449 0x00010004 0x0000003b
450 0x00010005 0x00000043
451 0x00010006 0x0000004b
452 0x00010007 0x00000055
453 0x00010008 0x0000005d
454 0x00010009 0x00000067
455 0x0001000a 0x00000070
457 0x00020000 0x00000017
458 0x00020001 0x00000023
459 0x00020002 0x0000002d
460 0x00020003 0x00000037
461 0x00020004 0x00000041
462 0x00020005 0x0000004b
463 0x00020006 0x00000057
464 0x00020007 0x00000063
465 0x00020008 0x0000006f
467 0x00030000 0x00000015
468 0x00030001 0x00000021
469 0x00030002 0x0000002d
470 0x00030003 0x00000039
471 0x00030004 0x00000045
472 0x00030005 0x00000053
473 0x00030006 0x0000005f
474 0x00030007 0x00000071>;
475 #thermal-sensor-cells = <1>;
478 wdog1: watchdog@30280000 {
479 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
480 reg = <0x30280000 0x10000>;
481 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
482 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
486 wdog2: watchdog@30290000 {
487 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
488 reg = <0x30290000 0x10000>;
489 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
490 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
494 wdog3: watchdog@302a0000 {
495 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
496 reg = <0x302a0000 0x10000>;
497 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
498 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
502 sdma2: sdma@302c0000 {
503 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
504 reg = <0x302c0000 0x10000>;
505 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
506 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
507 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
508 clock-names = "ipg", "ahb";
510 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
513 lcdif: lcd-controller@30320000 {
514 compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif";
515 reg = <0x30320000 0x10000>;
516 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
517 clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
519 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
520 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
521 <&clk IMX8MQ_CLK_LCDIF_PIXEL>,
522 <&clk IMX8MQ_VIDEO_PLL1>;
523 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
524 <&clk IMX8MQ_VIDEO_PLL1>,
525 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
526 assigned-clock-rates = <0>, <0>, <0>, <594000000>;
527 interconnects = <&noc IMX8MQ_ICM_LCDIF &noc IMX8MQ_ICS_DRAM>;
528 interconnect-names = "dram";
532 lcdif_mipi_dsi: endpoint {
533 remote-endpoint = <&mipi_dsi_lcdif_in>;
538 iomuxc: pinctrl@30330000 {
539 compatible = "fsl,imx8mq-iomuxc";
540 reg = <0x30330000 0x10000>;
543 iomuxc_gpr: syscon@30340000 {
544 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr",
545 "syscon", "simple-mfd";
546 reg = <0x30340000 0x10000>;
548 mux: mux-controller {
549 compatible = "mmio-mux";
550 #mux-control-cells = <1>;
551 mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */
555 ocotp: efuse@30350000 {
556 compatible = "fsl,imx8mq-ocotp", "syscon";
557 reg = <0x30350000 0x10000>;
558 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
559 #address-cells = <1>;
562 imx8mq_uid: soc-uid@410 {
566 cpu_speed_grade: speed-grade@10 {
570 fec_mac_address: mac-address@90 {
575 anatop: syscon@30360000 {
576 compatible = "fsl,imx8mq-anatop", "syscon";
577 reg = <0x30360000 0x10000>;
578 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
581 snvs: snvs@30370000 {
582 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
583 reg = <0x30370000 0x10000>;
585 snvs_rtc: snvs-rtc-lp{
586 compatible = "fsl,sec-v4.0-mon-rtc-lp";
589 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
590 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
591 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
592 clock-names = "snvs-rtc";
595 snvs_pwrkey: snvs-powerkey {
596 compatible = "fsl,sec-v4.0-pwrkey";
598 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
599 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
600 clock-names = "snvs-pwrkey";
601 linux,keycode = <KEY_POWER>;
607 clk: clock-controller@30380000 {
608 compatible = "fsl,imx8mq-ccm";
609 reg = <0x30380000 0x10000>;
610 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
611 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
613 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
614 <&clk_ext1>, <&clk_ext2>,
615 <&clk_ext3>, <&clk_ext4>;
616 clock-names = "ckil", "osc_25m", "osc_27m",
617 "clk_ext1", "clk_ext2",
618 "clk_ext3", "clk_ext4";
619 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
620 <&clk IMX8MQ_CLK_A53_CORE>,
621 <&clk IMX8MQ_CLK_NOC>,
622 <&clk IMX8MQ_CLK_AUDIO_AHB>,
623 <&clk IMX8MQ_AUDIO_PLL1_BYPASS>,
624 <&clk IMX8MQ_AUDIO_PLL2_BYPASS>,
625 <&clk IMX8MQ_AUDIO_PLL1>,
626 <&clk IMX8MQ_AUDIO_PLL2>;
627 assigned-clock-rates = <0>, <0>,
634 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
635 <&clk IMX8MQ_ARM_PLL_OUT>,
637 <&clk IMX8MQ_SYS2_PLL_500M>,
638 <&clk IMX8MQ_AUDIO_PLL1>,
639 <&clk IMX8MQ_AUDIO_PLL2>;
642 src: reset-controller@30390000 {
643 compatible = "fsl,imx8mq-src", "syscon";
644 reg = <0x30390000 0x10000>;
645 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
650 compatible = "fsl,imx8mq-gpc";
651 reg = <0x303a0000 0x10000>;
652 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
653 interrupt-parent = <&gic>;
654 interrupt-controller;
655 #interrupt-cells = <3>;
658 #address-cells = <1>;
661 pgc_mipi: power-domain@0 {
662 #power-domain-cells = <0>;
663 reg = <IMX8M_POWER_DOMAIN_MIPI>;
667 * As per comment in ATF source code:
669 * PCIE1 and PCIE2 share the
670 * same reset signal, if we
671 * power down PCIE2, PCIE1
672 * will be held in reset too.
674 * So instead of creating two
675 * separate power domains for
676 * PCIE1 and PCIE2 we create a
677 * link between both and use
678 * it as a shared PCIE power
681 pgc_pcie: power-domain@1 {
682 #power-domain-cells = <0>;
683 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
684 power-domains = <&pgc_pcie2>;
687 pgc_otg1: power-domain@2 {
688 #power-domain-cells = <0>;
689 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
692 pgc_otg2: power-domain@3 {
693 #power-domain-cells = <0>;
694 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
697 pgc_ddr1: power-domain@4 {
698 #power-domain-cells = <0>;
699 reg = <IMX8M_POWER_DOMAIN_DDR1>;
702 pgc_gpu: power-domain@5 {
703 #power-domain-cells = <0>;
704 reg = <IMX8M_POWER_DOMAIN_GPU>;
705 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
706 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
707 <&clk IMX8MQ_CLK_GPU_AXI>,
708 <&clk IMX8MQ_CLK_GPU_AHB>;
711 pgc_vpu: power-domain@6 {
712 #power-domain-cells = <0>;
713 reg = <IMX8M_POWER_DOMAIN_VPU>;
714 clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
717 pgc_disp: power-domain@7 {
718 #power-domain-cells = <0>;
719 reg = <IMX8M_POWER_DOMAIN_DISP>;
722 pgc_mipi_csi1: power-domain@8 {
723 #power-domain-cells = <0>;
724 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
727 pgc_mipi_csi2: power-domain@9 {
728 #power-domain-cells = <0>;
729 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
732 pgc_pcie2: power-domain@a {
733 #power-domain-cells = <0>;
734 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
740 bus@30400000 { /* AIPS2 */
741 compatible = "fsl,aips-bus", "simple-bus";
742 reg = <0x30400000 0x400000>;
743 #address-cells = <1>;
745 ranges = <0x30400000 0x30400000 0x400000>;
748 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
749 reg = <0x30660000 0x10000>;
750 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
751 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
752 <&clk IMX8MQ_CLK_PWM1_ROOT>;
753 clock-names = "ipg", "per";
759 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
760 reg = <0x30670000 0x10000>;
761 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
762 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
763 <&clk IMX8MQ_CLK_PWM2_ROOT>;
764 clock-names = "ipg", "per";
770 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
771 reg = <0x30680000 0x10000>;
772 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
773 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
774 <&clk IMX8MQ_CLK_PWM3_ROOT>;
775 clock-names = "ipg", "per";
781 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
782 reg = <0x30690000 0x10000>;
783 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
784 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
785 <&clk IMX8MQ_CLK_PWM4_ROOT>;
786 clock-names = "ipg", "per";
791 system_counter: timer@306a0000 {
792 compatible = "nxp,sysctr-timer";
793 reg = <0x306a0000 0x20000>;
794 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
800 bus@30800000 { /* AIPS3 */
801 compatible = "fsl,aips-bus", "simple-bus";
802 reg = <0x30800000 0x400000>;
803 #address-cells = <1>;
805 ranges = <0x30800000 0x30800000 0x400000>,
806 <0x08000000 0x08000000 0x10000000>;
808 spdif1: spdif@30810000 {
809 compatible = "fsl,imx35-spdif";
810 reg = <0x30810000 0x10000>;
811 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
812 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
813 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
814 <&clk IMX8MQ_CLK_SPDIF1>, /* rxtx1 */
815 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
816 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
817 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
818 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
819 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
820 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
821 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
822 clock-names = "core", "rxtx0",
827 dmas = <&sdma1 8 18 0>, <&sdma1 9 18 0>;
828 dma-names = "rx", "tx";
832 ecspi1: spi@30820000 {
833 #address-cells = <1>;
835 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
836 reg = <0x30820000 0x10000>;
837 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
838 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
839 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
840 clock-names = "ipg", "per";
841 dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
842 dma-names = "rx", "tx";
846 ecspi2: spi@30830000 {
847 #address-cells = <1>;
849 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
850 reg = <0x30830000 0x10000>;
851 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
852 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
853 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
854 clock-names = "ipg", "per";
855 dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
856 dma-names = "rx", "tx";
860 ecspi3: spi@30840000 {
861 #address-cells = <1>;
863 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
864 reg = <0x30840000 0x10000>;
865 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
866 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
867 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
868 clock-names = "ipg", "per";
869 dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
870 dma-names = "rx", "tx";
874 uart1: serial@30860000 {
875 compatible = "fsl,imx8mq-uart",
877 reg = <0x30860000 0x10000>;
878 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
879 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
880 <&clk IMX8MQ_CLK_UART1_ROOT>;
881 clock-names = "ipg", "per";
885 uart3: serial@30880000 {
886 compatible = "fsl,imx8mq-uart",
888 reg = <0x30880000 0x10000>;
889 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
890 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
891 <&clk IMX8MQ_CLK_UART3_ROOT>;
892 clock-names = "ipg", "per";
896 uart2: serial@30890000 {
897 compatible = "fsl,imx8mq-uart",
899 reg = <0x30890000 0x10000>;
900 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
901 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
902 <&clk IMX8MQ_CLK_UART2_ROOT>;
903 clock-names = "ipg", "per";
907 spdif2: spdif@308a0000 {
908 compatible = "fsl,imx35-spdif";
909 reg = <0x308a0000 0x10000>;
910 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
911 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
912 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
913 <&clk IMX8MQ_CLK_SPDIF2>, /* rxtx1 */
914 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
915 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
916 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
917 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
918 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
919 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
920 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
921 clock-names = "core", "rxtx0",
926 dmas = <&sdma1 16 18 0>, <&sdma1 17 18 0>;
927 dma-names = "rx", "tx";
932 #sound-dai-cells = <0>;
933 compatible = "fsl,imx8mq-sai";
934 reg = <0x308b0000 0x10000>;
935 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
936 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
937 <&clk IMX8MQ_CLK_SAI2_ROOT>,
938 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
939 clock-names = "bus", "mclk1", "mclk2", "mclk3";
940 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
941 dma-names = "rx", "tx";
946 #sound-dai-cells = <0>;
947 compatible = "fsl,imx8mq-sai";
948 reg = <0x308c0000 0x10000>;
949 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
950 clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
951 <&clk IMX8MQ_CLK_SAI3_ROOT>,
952 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
953 clock-names = "bus", "mclk1", "mclk2", "mclk3";
954 dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
955 dma-names = "rx", "tx";
959 crypto: crypto@30900000 {
960 compatible = "fsl,sec-v4.0";
961 #address-cells = <1>;
963 reg = <0x30900000 0x40000>;
964 ranges = <0 0x30900000 0x40000>;
965 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
966 clocks = <&clk IMX8MQ_CLK_AHB>,
967 <&clk IMX8MQ_CLK_IPG_ROOT>;
968 clock-names = "aclk", "ipg";
971 compatible = "fsl,sec-v4.0-job-ring";
972 reg = <0x1000 0x1000>;
973 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
977 compatible = "fsl,sec-v4.0-job-ring";
978 reg = <0x2000 0x1000>;
979 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
983 compatible = "fsl,sec-v4.0-job-ring";
984 reg = <0x3000 0x1000>;
985 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
989 mipi_dsi: mipi-dsi@30a00000 {
990 compatible = "fsl,imx8mq-nwl-dsi";
991 reg = <0x30a00000 0x300>;
992 clocks = <&clk IMX8MQ_CLK_DSI_CORE>,
993 <&clk IMX8MQ_CLK_DSI_AHB>,
994 <&clk IMX8MQ_CLK_DSI_IPG_DIV>,
995 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
996 <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
997 clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif";
998 assigned-clocks = <&clk IMX8MQ_CLK_DSI_AHB>,
999 <&clk IMX8MQ_CLK_DSI_CORE>,
1000 <&clk IMX8MQ_CLK_DSI_IPG_DIV>;
1001 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>,
1002 <&clk IMX8MQ_SYS1_PLL_266M>;
1003 assigned-clock-rates = <80000000>, <266000000>, <20000000>;
1004 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1005 mux-controls = <&mux 0>;
1006 power-domains = <&pgc_mipi>;
1009 resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>,
1010 <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>,
1011 <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>,
1012 <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>;
1013 reset-names = "byte", "dpi", "esc", "pclk";
1014 status = "disabled";
1017 #address-cells = <1>;
1022 #address-cells = <1>;
1024 mipi_dsi_lcdif_in: endpoint@0 {
1026 remote-endpoint = <&lcdif_mipi_dsi>;
1032 dphy: dphy@30a00300 {
1033 compatible = "fsl,imx8mq-mipi-dphy";
1034 reg = <0x30a00300 0x100>;
1035 clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
1036 clock-names = "phy_ref";
1037 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
1038 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
1039 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
1040 <&clk IMX8MQ_VIDEO_PLL1>;
1041 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
1042 <&clk IMX8MQ_VIDEO_PLL1>,
1043 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
1044 assigned-clock-rates = <0>, <0>, <24000000>, <594000000>;
1046 power-domains = <&pgc_mipi>;
1047 status = "disabled";
1050 i2c1: i2c@30a20000 {
1051 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1052 reg = <0x30a20000 0x10000>;
1053 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
1054 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
1055 #address-cells = <1>;
1057 status = "disabled";
1060 i2c2: i2c@30a30000 {
1061 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1062 reg = <0x30a30000 0x10000>;
1063 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
1064 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
1065 #address-cells = <1>;
1067 status = "disabled";
1070 i2c3: i2c@30a40000 {
1071 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1072 reg = <0x30a40000 0x10000>;
1073 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1074 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
1075 #address-cells = <1>;
1077 status = "disabled";
1080 i2c4: i2c@30a50000 {
1081 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1082 reg = <0x30a50000 0x10000>;
1083 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1084 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
1085 #address-cells = <1>;
1087 status = "disabled";
1090 uart4: serial@30a60000 {
1091 compatible = "fsl,imx8mq-uart",
1093 reg = <0x30a60000 0x10000>;
1094 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
1095 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
1096 <&clk IMX8MQ_CLK_UART4_ROOT>;
1097 clock-names = "ipg", "per";
1098 status = "disabled";
1101 mipi_csi1: csi@30a70000 {
1102 compatible = "fsl,imx8mq-mipi-csi2";
1103 reg = <0x30a70000 0x1000>;
1104 clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
1105 <&clk IMX8MQ_CLK_CSI1_ESC>,
1106 <&clk IMX8MQ_CLK_CSI1_PHY_REF>;
1107 clock-names = "core", "esc", "ui";
1108 assigned-clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
1109 <&clk IMX8MQ_CLK_CSI1_PHY_REF>,
1110 <&clk IMX8MQ_CLK_CSI1_ESC>;
1111 assigned-clock-rates = <266000000>, <333000000>, <66000000>;
1112 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1113 <&clk IMX8MQ_SYS2_PLL_1000M>,
1114 <&clk IMX8MQ_SYS1_PLL_800M>;
1115 power-domains = <&pgc_mipi_csi1>;
1116 resets = <&src IMX8MQ_RESET_MIPI_CSI1_CORE_RESET>,
1117 <&src IMX8MQ_RESET_MIPI_CSI1_PHY_REF_RESET>,
1118 <&src IMX8MQ_RESET_MIPI_CSI1_ESC_RESET>;
1119 fsl,mipi-phy-gpr = <&iomuxc_gpr 0x88>;
1120 interconnects = <&noc IMX8MQ_ICM_CSI1 &noc IMX8MQ_ICS_DRAM>;
1121 interconnect-names = "dram";
1122 status = "disabled";
1125 #address-cells = <1>;
1131 csi1_mipi_ep: endpoint {
1132 remote-endpoint = <&csi1_ep>;
1138 csi1: csi@30a90000 {
1139 compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
1140 reg = <0x30a90000 0x10000>;
1141 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
1142 clocks = <&clk IMX8MQ_CLK_CSI1_ROOT>;
1143 clock-names = "mclk";
1144 status = "disabled";
1148 remote-endpoint = <&csi1_mipi_ep>;
1153 mipi_csi2: csi@30b60000 {
1154 compatible = "fsl,imx8mq-mipi-csi2";
1155 reg = <0x30b60000 0x1000>;
1156 clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
1157 <&clk IMX8MQ_CLK_CSI2_ESC>,
1158 <&clk IMX8MQ_CLK_CSI2_PHY_REF>;
1159 clock-names = "core", "esc", "ui";
1160 assigned-clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
1161 <&clk IMX8MQ_CLK_CSI2_PHY_REF>,
1162 <&clk IMX8MQ_CLK_CSI2_ESC>;
1163 assigned-clock-rates = <266000000>, <333000000>, <66000000>;
1164 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1165 <&clk IMX8MQ_SYS2_PLL_1000M>,
1166 <&clk IMX8MQ_SYS1_PLL_800M>;
1167 power-domains = <&pgc_mipi_csi2>;
1168 resets = <&src IMX8MQ_RESET_MIPI_CSI2_CORE_RESET>,
1169 <&src IMX8MQ_RESET_MIPI_CSI2_PHY_REF_RESET>,
1170 <&src IMX8MQ_RESET_MIPI_CSI2_ESC_RESET>;
1171 fsl,mipi-phy-gpr = <&iomuxc_gpr 0xa4>;
1172 interconnects = <&noc IMX8MQ_ICM_CSI2 &noc IMX8MQ_ICS_DRAM>;
1173 interconnect-names = "dram";
1174 status = "disabled";
1177 #address-cells = <1>;
1183 csi2_mipi_ep: endpoint {
1184 remote-endpoint = <&csi2_ep>;
1190 csi2: csi@30b80000 {
1191 compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
1192 reg = <0x30b80000 0x10000>;
1193 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
1194 clocks = <&clk IMX8MQ_CLK_CSI2_ROOT>;
1195 clock-names = "mclk";
1196 status = "disabled";
1200 remote-endpoint = <&csi2_mipi_ep>;
1205 mu: mailbox@30aa0000 {
1206 compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
1207 reg = <0x30aa0000 0x10000>;
1208 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1209 clocks = <&clk IMX8MQ_CLK_MU_ROOT>;
1213 usdhc1: mmc@30b40000 {
1214 compatible = "fsl,imx8mq-usdhc",
1216 reg = <0x30b40000 0x10000>;
1217 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
1218 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
1219 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1220 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
1221 clock-names = "ipg", "ahb", "per";
1222 fsl,tuning-start-tap = <20>;
1223 fsl,tuning-step = <2>;
1225 status = "disabled";
1228 usdhc2: mmc@30b50000 {
1229 compatible = "fsl,imx8mq-usdhc",
1231 reg = <0x30b50000 0x10000>;
1232 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
1233 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
1234 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1235 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
1236 clock-names = "ipg", "ahb", "per";
1237 fsl,tuning-start-tap = <20>;
1238 fsl,tuning-step = <2>;
1240 status = "disabled";
1243 qspi0: spi@30bb0000 {
1244 #address-cells = <1>;
1246 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
1247 reg = <0x30bb0000 0x10000>,
1248 <0x08000000 0x10000000>;
1249 reg-names = "QuadSPI", "QuadSPI-memory";
1250 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1251 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1252 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1253 clock-names = "qspi_en", "qspi";
1254 status = "disabled";
1257 sdma1: sdma@30bd0000 {
1258 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
1259 reg = <0x30bd0000 0x10000>;
1260 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1261 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
1262 <&clk IMX8MQ_CLK_AHB>;
1263 clock-names = "ipg", "ahb";
1265 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1268 fec1: ethernet@30be0000 {
1269 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1270 reg = <0x30be0000 0x10000>;
1271 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1272 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
1273 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
1274 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
1275 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1276 <&clk IMX8MQ_CLK_ENET1_ROOT>,
1277 <&clk IMX8MQ_CLK_ENET_TIMER>,
1278 <&clk IMX8MQ_CLK_ENET_REF>,
1279 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1280 clock-names = "ipg", "ahb", "ptp",
1281 "enet_clk_ref", "enet_out";
1282 assigned-clocks = <&clk IMX8MQ_CLK_ENET_AXI>,
1283 <&clk IMX8MQ_CLK_ENET_TIMER>,
1284 <&clk IMX8MQ_CLK_ENET_REF>,
1285 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1286 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1287 <&clk IMX8MQ_SYS2_PLL_100M>,
1288 <&clk IMX8MQ_SYS2_PLL_125M>,
1289 <&clk IMX8MQ_SYS2_PLL_50M>;
1290 assigned-clock-rates = <0>, <100000000>, <125000000>, <0>;
1291 fsl,num-tx-queues = <3>;
1292 fsl,num-rx-queues = <3>;
1293 nvmem-cells = <&fec_mac_address>;
1294 nvmem-cell-names = "mac-address";
1296 fsl,stop-mode = <&iomuxc_gpr 0x10 3>;
1297 status = "disabled";
1301 noc: interconnect@32700000 {
1302 compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc";
1303 reg = <0x32700000 0x100000>;
1304 clocks = <&clk IMX8MQ_CLK_NOC>;
1306 #interconnect-cells = <1>;
1307 operating-points-v2 = <&noc_opp_table>;
1309 noc_opp_table: opp-table {
1310 compatible = "operating-points-v2";
1313 opp-hz = /bits/ 64 <133333333>;
1317 opp-hz = /bits/ 64 <400000000>;
1321 opp-hz = /bits/ 64 <800000000>;
1326 bus@32c00000 { /* AIPS4 */
1327 compatible = "fsl,aips-bus", "simple-bus";
1328 reg = <0x32c00000 0x400000>;
1329 #address-cells = <1>;
1331 ranges = <0x32c00000 0x32c00000 0x400000>;
1333 irqsteer: interrupt-controller@32e2d000 {
1334 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1335 reg = <0x32e2d000 0x1000>;
1336 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1337 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1338 clock-names = "ipg";
1340 fsl,num-irqs = <64>;
1341 interrupt-controller;
1342 #interrupt-cells = <1>;
1347 compatible = "vivante,gc";
1348 reg = <0x38000000 0x40000>;
1349 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1350 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1351 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1352 <&clk IMX8MQ_CLK_GPU_AXI>,
1353 <&clk IMX8MQ_CLK_GPU_AHB>;
1354 clock-names = "core", "shader", "bus", "reg";
1355 #cooling-cells = <2>;
1356 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1357 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1358 <&clk IMX8MQ_CLK_GPU_AXI>,
1359 <&clk IMX8MQ_CLK_GPU_AHB>,
1360 <&clk IMX8MQ_GPU_PLL_BYPASS>;
1361 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1362 <&clk IMX8MQ_GPU_PLL_OUT>,
1363 <&clk IMX8MQ_GPU_PLL_OUT>,
1364 <&clk IMX8MQ_GPU_PLL_OUT>,
1365 <&clk IMX8MQ_GPU_PLL>;
1366 assigned-clock-rates = <800000000>, <800000000>,
1367 <800000000>, <800000000>, <0>;
1368 power-domains = <&pgc_gpu>;
1371 usb_dwc3_0: usb@38100000 {
1372 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1373 reg = <0x38100000 0x10000>;
1374 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
1375 <&clk IMX8MQ_CLK_USB_CORE_REF>,
1376 <&clk IMX8MQ_CLK_32K>;
1377 clock-names = "bus_early", "ref", "suspend";
1378 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1379 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1380 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1381 <&clk IMX8MQ_SYS1_PLL_100M>;
1382 assigned-clock-rates = <500000000>, <100000000>;
1383 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1384 phys = <&usb3_phy0>, <&usb3_phy0>;
1385 phy-names = "usb2-phy", "usb3-phy";
1386 power-domains = <&pgc_otg1>;
1387 usb3-resume-missing-cas;
1388 status = "disabled";
1391 usb3_phy0: usb-phy@381f0040 {
1392 compatible = "fsl,imx8mq-usb-phy";
1393 reg = <0x381f0040 0x40>;
1394 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1395 clock-names = "phy";
1396 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1397 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1398 assigned-clock-rates = <100000000>;
1400 status = "disabled";
1403 usb_dwc3_1: usb@38200000 {
1404 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1405 reg = <0x38200000 0x10000>;
1406 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
1407 <&clk IMX8MQ_CLK_USB_CORE_REF>,
1408 <&clk IMX8MQ_CLK_32K>;
1409 clock-names = "bus_early", "ref", "suspend";
1410 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1411 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1412 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1413 <&clk IMX8MQ_SYS1_PLL_100M>;
1414 assigned-clock-rates = <500000000>, <100000000>;
1415 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1416 phys = <&usb3_phy1>, <&usb3_phy1>;
1417 phy-names = "usb2-phy", "usb3-phy";
1418 power-domains = <&pgc_otg2>;
1419 usb3-resume-missing-cas;
1420 status = "disabled";
1423 usb3_phy1: usb-phy@382f0040 {
1424 compatible = "fsl,imx8mq-usb-phy";
1425 reg = <0x382f0040 0x40>;
1426 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1427 clock-names = "phy";
1428 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1429 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1430 assigned-clock-rates = <100000000>;
1432 status = "disabled";
1435 vpu: video-codec@38300000 {
1436 compatible = "nxp,imx8mq-vpu";
1437 reg = <0x38300000 0x10000>,
1438 <0x38310000 0x10000>,
1439 <0x38320000 0x10000>;
1440 reg-names = "g1", "g2", "ctrl";
1441 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1442 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1443 interrupt-names = "g1", "g2";
1444 clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>,
1445 <&clk IMX8MQ_CLK_VPU_G2_ROOT>,
1446 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
1447 clock-names = "g1", "g2", "bus";
1448 assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>,
1449 <&clk IMX8MQ_CLK_VPU_G2>,
1450 <&clk IMX8MQ_CLK_VPU_BUS>,
1451 <&clk IMX8MQ_VPU_PLL_BYPASS>;
1452 assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>,
1453 <&clk IMX8MQ_VPU_PLL_OUT>,
1454 <&clk IMX8MQ_SYS1_PLL_800M>,
1455 <&clk IMX8MQ_VPU_PLL>;
1456 assigned-clock-rates = <600000000>, <600000000>,
1458 power-domains = <&pgc_vpu>;
1461 pcie0: pcie@33800000 {
1462 compatible = "fsl,imx8mq-pcie";
1463 reg = <0x33800000 0x400000>,
1464 <0x1ff00000 0x80000>;
1465 reg-names = "dbi", "config";
1466 #address-cells = <3>;
1468 device_type = "pci";
1469 bus-range = <0x00 0xff>;
1470 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
1471 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
1474 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1475 interrupt-names = "msi";
1476 #interrupt-cells = <1>;
1477 interrupt-map-mask = <0 0 0 0x7>;
1478 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1479 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1480 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1481 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1482 fsl,max-link-speed = <2>;
1483 linux,pci-domain = <0>;
1484 power-domains = <&pgc_pcie>;
1485 resets = <&src IMX8MQ_RESET_PCIEPHY>,
1486 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1487 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1488 reset-names = "pciephy", "apps", "turnoff";
1489 assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
1490 <&clk IMX8MQ_CLK_PCIE1_PHY>,
1491 <&clk IMX8MQ_CLK_PCIE1_AUX>;
1492 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1493 <&clk IMX8MQ_SYS2_PLL_100M>,
1494 <&clk IMX8MQ_SYS1_PLL_80M>;
1495 assigned-clock-rates = <250000000>, <100000000>,
1497 status = "disabled";
1500 pcie1: pcie@33c00000 {
1501 compatible = "fsl,imx8mq-pcie";
1502 reg = <0x33c00000 0x400000>,
1503 <0x27f00000 0x80000>;
1504 reg-names = "dbi", "config";
1505 #address-cells = <3>;
1507 device_type = "pci";
1508 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
1509 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
1512 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1513 interrupt-names = "msi";
1514 #interrupt-cells = <1>;
1515 interrupt-map-mask = <0 0 0 0x7>;
1516 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1517 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1518 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1519 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1520 fsl,max-link-speed = <2>;
1521 linux,pci-domain = <1>;
1522 power-domains = <&pgc_pcie>;
1523 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1524 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1525 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1526 reset-names = "pciephy", "apps", "turnoff";
1527 assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
1528 <&clk IMX8MQ_CLK_PCIE2_PHY>,
1529 <&clk IMX8MQ_CLK_PCIE2_AUX>;
1530 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1531 <&clk IMX8MQ_SYS2_PLL_100M>,
1532 <&clk IMX8MQ_SYS1_PLL_80M>;
1533 assigned-clock-rates = <250000000>, <100000000>,
1535 status = "disabled";
1538 gic: interrupt-controller@38800000 {
1539 compatible = "arm,gic-v3";
1540 reg = <0x38800000 0x10000>, /* GIC Dist */
1541 <0x38880000 0xc0000>, /* GICR */
1542 <0x31000000 0x2000>, /* GICC */
1543 <0x31010000 0x2000>, /* GICV */
1544 <0x31020000 0x2000>; /* GICH */
1545 #interrupt-cells = <3>;
1546 interrupt-controller;
1547 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1548 interrupt-parent = <&gic>;
1551 ddrc: memory-controller@3d400000 {
1552 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1553 reg = <0x3d400000 0x400000>;
1554 clock-names = "core", "pll", "alt", "apb";
1555 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1556 <&clk IMX8MQ_DRAM_PLL_OUT>,
1557 <&clk IMX8MQ_CLK_DRAM_ALT>,
1558 <&clk IMX8MQ_CLK_DRAM_APB>;
1562 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1563 reg = <0x3d800000 0x400000>;
1564 interrupt-parent = <&gic>;
1565 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;