blob: 0235967d1a2ec956d313723e9d871695c608bc95 [file] [log] [blame]
Lucas Stach748f9082018-12-09 14:26:07 +00001// 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>
Lucas Stachfdbcc04d2019-01-15 12:01:44 +01008#include <dt-bindings/power/imx8mq-power.h>
Lucas Stach748f9082018-12-09 14:26:07 +00009#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/interrupt-controller/arm-gic.h>
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +080011#include <dt-bindings/thermal/thermal.h>
Lucas Stach748f9082018-12-09 14:26:07 +000012#include "imx8mq-pinfunc.h"
13
14/ {
Lucas Stachc4121232019-01-25 17:20:33 +010015 interrupt-parent = <&gpc>;
Lucas Stach748f9082018-12-09 14:26:07 +000016
17 #address-cells = <2>;
18 #size-cells = <2>;
19
20 aliases {
21 i2c0 = &i2c1;
22 i2c1 = &i2c2;
23 i2c2 = &i2c3;
24 i2c3 = &i2c4;
25 serial0 = &uart1;
26 serial1 = &uart2;
27 serial2 = &uart3;
28 serial3 = &uart4;
Fabio Estevam85761f42019-01-28 10:08:13 -020029 spi0 = &ecspi1;
30 spi1 = &ecspi2;
31 spi2 = &ecspi3;
Lucas Stach748f9082018-12-09 14:26:07 +000032 };
33
34 ckil: clock-ckil {
35 compatible = "fixed-clock";
36 #clock-cells = <0>;
37 clock-frequency = <32768>;
38 clock-output-names = "ckil";
39 };
40
41 osc_25m: clock-osc-25m {
42 compatible = "fixed-clock";
43 #clock-cells = <0>;
44 clock-frequency = <25000000>;
45 clock-output-names = "osc_25m";
46 };
47
48 osc_27m: clock-osc-27m {
49 compatible = "fixed-clock";
50 #clock-cells = <0>;
51 clock-frequency = <27000000>;
52 clock-output-names = "osc_27m";
53 };
54
55 clk_ext1: clock-ext1 {
56 compatible = "fixed-clock";
57 #clock-cells = <0>;
58 clock-frequency = <133000000>;
59 clock-output-names = "clk_ext1";
60 };
61
62 clk_ext2: clock-ext2 {
63 compatible = "fixed-clock";
64 #clock-cells = <0>;
65 clock-frequency = <133000000>;
66 clock-output-names = "clk_ext2";
67 };
68
69 clk_ext3: clock-ext3 {
70 compatible = "fixed-clock";
71 #clock-cells = <0>;
72 clock-frequency = <133000000>;
73 clock-output-names = "clk_ext3";
74 };
75
76 clk_ext4: clock-ext4 {
77 compatible = "fixed-clock";
78 #clock-cells = <0>;
79 clock-frequency= <133000000>;
80 clock-output-names = "clk_ext4";
81 };
82
83 cpus {
84 #address-cells = <1>;
85 #size-cells = <0>;
86
87 A53_0: cpu@0 {
88 device_type = "cpu";
89 compatible = "arm,cortex-a53";
90 reg = <0x0>;
Abel Vesab810641a2019-02-28 21:42:44 +000091 clock-latency = <61036>; /* two CLK32 periods */
92 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +000093 enable-method = "psci";
94 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +000095 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +080096 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +000097 };
98
99 A53_1: cpu@1 {
100 device_type = "cpu";
101 compatible = "arm,cortex-a53";
102 reg = <0x1>;
Abel Vesab810641a2019-02-28 21:42:44 +0000103 clock-latency = <61036>; /* two CLK32 periods */
104 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000105 enable-method = "psci";
106 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000107 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800108 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000109 };
110
111 A53_2: cpu@2 {
112 device_type = "cpu";
113 compatible = "arm,cortex-a53";
114 reg = <0x2>;
Abel Vesab810641a2019-02-28 21:42:44 +0000115 clock-latency = <61036>; /* two CLK32 periods */
116 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000117 enable-method = "psci";
118 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000119 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800120 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000121 };
122
123 A53_3: cpu@3 {
124 device_type = "cpu";
125 compatible = "arm,cortex-a53";
126 reg = <0x3>;
Abel Vesab810641a2019-02-28 21:42:44 +0000127 clock-latency = <61036>; /* two CLK32 periods */
128 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000129 enable-method = "psci";
130 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000131 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800132 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000133 };
134
135 A53_L2: l2-cache0 {
136 compatible = "cache";
137 };
138 };
139
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300140 a53_opp_table: opp-table {
141 compatible = "operating-points-v2";
142 opp-shared;
143
144 opp-800000000 {
145 opp-hz = /bits/ 64 <800000000>;
146 opp-microvolt = <900000>;
147 clock-latency-ns = <150000>;
148 };
149
150 opp-1000000000 {
151 opp-hz = /bits/ 64 <1000000000>;
152 opp-microvolt = <1000000>;
153 clock-latency-ns = <150000>;
154 opp-suspend;
155 };
156 };
157
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000158 pmu {
159 compatible = "arm,cortex-a53-pmu";
160 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
161 interrupt-parent = <&gic>;
162 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
163 };
164
Lucas Stach748f9082018-12-09 14:26:07 +0000165 psci {
166 compatible = "arm,psci-1.0";
167 method = "smc";
168 };
169
Fabio Estevamcddbea82019-03-25 12:19:59 -0300170 thermal-zones {
171 cpu-thermal {
172 polling-delay-passive = <250>;
173 polling-delay = <2000>;
174 thermal-sensors = <&tmu 0>;
175
176 trips {
177 cpu_alert: cpu-alert {
178 temperature = <80000>;
179 hysteresis = <2000>;
180 type = "passive";
181 };
182
183 cpu-crit {
184 temperature = <90000>;
185 hysteresis = <2000>;
186 type = "critical";
187 };
188 };
189
190 cooling-maps {
191 map0 {
192 trip = <&cpu_alert>;
193 cooling-device =
194 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
195 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
196 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
197 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
198 };
199 };
200 };
201
202 gpu-thermal {
203 polling-delay-passive = <250>;
204 polling-delay = <2000>;
205 thermal-sensors = <&tmu 1>;
206
207 trips {
208 gpu-crit {
209 temperature = <90000>;
210 hysteresis = <2000>;
211 type = "critical";
212 };
213 };
214 };
215
216 vpu-thermal {
217 polling-delay-passive = <250>;
218 polling-delay = <2000>;
219 thermal-sensors = <&tmu 2>;
220
221 trips {
222 vpu-crit {
223 temperature = <90000>;
224 hysteresis = <2000>;
225 type = "critical";
226 };
227 };
228 };
229 };
230
Lucas Stach748f9082018-12-09 14:26:07 +0000231 timer {
232 compatible = "arm,armv8-timer";
233 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
234 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
235 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
236 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
237 interrupt-parent = <&gic>;
238 arm,no-tick-in-suspend;
239 };
240
241 soc@0 {
242 compatible = "simple-bus";
243 #address-cells = <1>;
244 #size-cells = <1>;
245 ranges = <0x0 0x0 0x0 0x3e000000>;
Lucas Stachca04fed2019-02-08 19:53:49 +0100246 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000247
248 bus@30000000 { /* AIPS1 */
249 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
250 #address-cells = <1>;
251 #size-cells = <1>;
252 ranges = <0x30000000 0x30000000 0x400000>;
253
254 gpio1: gpio@30200000 {
255 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
256 reg = <0x30200000 0x10000>;
257 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
258 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000259 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000260 gpio-controller;
261 #gpio-cells = <2>;
262 interrupt-controller;
263 #interrupt-cells = <2>;
264 };
265
266 gpio2: gpio@30210000 {
267 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
268 reg = <0x30210000 0x10000>;
269 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
270 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000271 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000272 gpio-controller;
273 #gpio-cells = <2>;
274 interrupt-controller;
275 #interrupt-cells = <2>;
276 };
277
278 gpio3: gpio@30220000 {
279 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
280 reg = <0x30220000 0x10000>;
281 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
282 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000283 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000284 gpio-controller;
285 #gpio-cells = <2>;
286 interrupt-controller;
287 #interrupt-cells = <2>;
288 };
289
290 gpio4: gpio@30230000 {
291 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
292 reg = <0x30230000 0x10000>;
293 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
294 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000295 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000296 gpio-controller;
297 #gpio-cells = <2>;
298 interrupt-controller;
299 #interrupt-cells = <2>;
300 };
301
302 gpio5: gpio@30240000 {
303 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
304 reg = <0x30240000 0x10000>;
305 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
306 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000307 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000308 gpio-controller;
309 #gpio-cells = <2>;
310 interrupt-controller;
311 #interrupt-cells = <2>;
312 };
313
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800314 tmu: tmu@30260000 {
315 compatible = "fsl,imx8mq-tmu";
316 reg = <0x30260000 0x10000>;
317 interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
318 little-endian;
319 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
320 fsl,tmu-calibration = <0x00000000 0x00000023
321 0x00000001 0x00000029
322 0x00000002 0x0000002f
323 0x00000003 0x00000035
324 0x00000004 0x0000003d
325 0x00000005 0x00000043
326 0x00000006 0x0000004b
327 0x00000007 0x00000051
328 0x00000008 0x00000057
329 0x00000009 0x0000005f
330 0x0000000a 0x00000067
331 0x0000000b 0x0000006f
332
333 0x00010000 0x0000001b
334 0x00010001 0x00000023
335 0x00010002 0x0000002b
336 0x00010003 0x00000033
337 0x00010004 0x0000003b
338 0x00010005 0x00000043
339 0x00010006 0x0000004b
340 0x00010007 0x00000055
341 0x00010008 0x0000005d
342 0x00010009 0x00000067
343 0x0001000a 0x00000070
344
345 0x00020000 0x00000017
346 0x00020001 0x00000023
347 0x00020002 0x0000002d
348 0x00020003 0x00000037
349 0x00020004 0x00000041
350 0x00020005 0x0000004b
351 0x00020006 0x00000057
352 0x00020007 0x00000063
353 0x00020008 0x0000006f
354
355 0x00030000 0x00000015
356 0x00030001 0x00000021
357 0x00030002 0x0000002d
358 0x00030003 0x00000039
359 0x00030004 0x00000045
360 0x00030005 0x00000053
361 0x00030006 0x0000005f
362 0x00030007 0x00000071>;
363 #thermal-sensor-cells = <1>;
364 };
365
Baruch Siachd3a2d722018-12-09 14:26:10 +0000366 wdog1: watchdog@30280000 {
367 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
368 reg = <0x30280000 0x10000>;
369 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
370 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
371 status = "disabled";
372 };
373
374 wdog2: watchdog@30290000 {
375 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
376 reg = <0x30290000 0x10000>;
377 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
378 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
379 status = "disabled";
380 };
381
382 wdog3: watchdog@302a0000 {
383 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
384 reg = <0x302a0000 0x10000>;
385 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
386 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
387 status = "disabled";
388 };
Lucas Stacha2b91ef2018-12-14 11:55:09 +0100389
Daniel Baluta1474d482019-03-19 17:48:37 +0000390 sdma2: sdma@302c0000 {
391 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
392 reg = <0x302c0000 0x10000>;
393 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
394 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
395 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
396 clock-names = "ipg", "ahb";
397 #dma-cells = <3>;
398 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
399 };
400
Lucas Stach748f9082018-12-09 14:26:07 +0000401 iomuxc: iomuxc@30330000 {
402 compatible = "fsl,imx8mq-iomuxc";
403 reg = <0x30330000 0x10000>;
404 };
405
406 iomuxc_gpr: syscon@30340000 {
Andrey Smirnovbeea0f22019-04-05 10:30:00 -0700407 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", "syscon";
Lucas Stach748f9082018-12-09 14:26:07 +0000408 reg = <0x30340000 0x10000>;
409 };
410
Carlo Caione9e113b22019-02-26 09:04:48 +0000411 ocotp: ocotp-ctrl@30350000 {
412 compatible = "fsl,imx8mq-ocotp", "syscon";
413 reg = <0x30350000 0x10000>;
414 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
415 #address-cells = <1>;
416 #size-cells = <1>;
417 };
418
Lucas Stach748f9082018-12-09 14:26:07 +0000419 anatop: syscon@30360000 {
420 compatible = "fsl,imx8mq-anatop", "syscon";
421 reg = <0x30360000 0x10000>;
422 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
423 };
424
Abel Vesa3ea95c32019-01-31 15:01:22 +0000425 snvs: snvs@30370000 {
426 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
427 reg = <0x30370000 0x10000>;
428
429 snvs_rtc: snvs-rtc-lp{
430 compatible = "fsl,sec-v4.0-mon-rtc-lp";
431 regmap =<&snvs>;
432 offset = <0x34>;
433 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
434 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
435 };
436
437 };
438
Lucas Stach748f9082018-12-09 14:26:07 +0000439 clk: clock-controller@30380000 {
440 compatible = "fsl,imx8mq-ccm";
441 reg = <0x30380000 0x10000>;
442 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
443 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
444 #clock-cells = <1>;
445 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
446 <&clk_ext1>, <&clk_ext2>,
447 <&clk_ext3>, <&clk_ext4>;
448 clock-names = "ckil", "osc_25m", "osc_27m",
449 "clk_ext1", "clk_ext2",
450 "clk_ext3", "clk_ext4";
451 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100452
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700453 src: reset-controller@30390000 {
454 compatible = "fsl,imx8mq-src", "syscon";
455 reg = <0x30390000 0x10000>;
456 #reset-cells = <1>;
457 };
458
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100459 gpc: gpc@303a0000 {
460 compatible = "fsl,imx8mq-gpc";
461 reg = <0x303a0000 0x10000>;
Lucas Stachc4121232019-01-25 17:20:33 +0100462 interrupt-parent = <&gic>;
463 interrupt-controller;
464 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100465
466 pgc {
467 #address-cells = <1>;
468 #size-cells = <0>;
469
470 pgc_mipi: power-domain@0 {
471 #power-domain-cells = <0>;
472 reg = <IMX8M_POWER_DOMAIN_MIPI>;
473 };
474
475 pgc_pcie1: power-domain@1 {
476 #power-domain-cells = <0>;
477 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
478 };
479
480 pgc_otg1: power-domain@2 {
481 #power-domain-cells = <0>;
482 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
483 };
484
485 pgc_otg2: power-domain@3 {
486 #power-domain-cells = <0>;
487 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
488 };
489
490 pgc_ddr1: power-domain@4 {
491 #power-domain-cells = <0>;
492 reg = <IMX8M_POWER_DOMAIN_DDR1>;
493 };
494
495 pgc_gpu: power-domain@5 {
496 #power-domain-cells = <0>;
497 reg = <IMX8M_POWER_DOMAIN_GPU>;
498 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
499 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
500 <&clk IMX8MQ_CLK_GPU_AXI>,
501 <&clk IMX8MQ_CLK_GPU_AHB>;
502 };
503
504 pgc_vpu: power-domain@6 {
505 #power-domain-cells = <0>;
506 reg = <IMX8M_POWER_DOMAIN_VPU>;
507 };
508
509 pgc_disp: power-domain@7 {
510 #power-domain-cells = <0>;
511 reg = <IMX8M_POWER_DOMAIN_DISP>;
512 };
513
514 pgc_mipi_csi1: power-domain@8 {
515 #power-domain-cells = <0>;
516 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
517 };
518
519 pgc_mipi_csi2: power-domain@9 {
520 #power-domain-cells = <0>;
521 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
522 };
523
524 pgc_pcie2: power-domain@a {
525 #power-domain-cells = <0>;
526 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
527 };
528 };
529 };
Lucas Stach748f9082018-12-09 14:26:07 +0000530 };
531
532 bus@30400000 { /* AIPS2 */
533 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
534 #address-cells = <1>;
535 #size-cells = <1>;
536 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100537
538 pwm1: pwm@30660000 {
539 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
540 reg = <0x30660000 0x10000>;
541 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
542 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
543 <&clk IMX8MQ_CLK_PWM1_ROOT>;
544 clock-names = "ipg", "per";
545 #pwm-cells = <2>;
546 status = "disabled";
547 };
548
549 pwm2: pwm@30670000 {
550 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
551 reg = <0x30670000 0x10000>;
552 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
553 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
554 <&clk IMX8MQ_CLK_PWM2_ROOT>;
555 clock-names = "ipg", "per";
556 #pwm-cells = <2>;
557 status = "disabled";
558 };
559
560 pwm3: pwm@30680000 {
561 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
562 reg = <0x30680000 0x10000>;
563 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
564 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
565 <&clk IMX8MQ_CLK_PWM3_ROOT>;
566 clock-names = "ipg", "per";
567 #pwm-cells = <2>;
568 status = "disabled";
569 };
570
571 pwm4: pwm@30690000 {
572 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
573 reg = <0x30690000 0x10000>;
574 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
575 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
576 <&clk IMX8MQ_CLK_PWM4_ROOT>;
577 clock-names = "ipg", "per";
578 #pwm-cells = <2>;
579 status = "disabled";
580 };
Lucas Stach748f9082018-12-09 14:26:07 +0000581 };
582
583 bus@30800000 { /* AIPS3 */
584 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
585 #address-cells = <1>;
586 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800587 ranges = <0x30800000 0x30800000 0x400000>,
588 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000589
Fabio Estevam85761f42019-01-28 10:08:13 -0200590 ecspi1: spi@30820000 {
591 #address-cells = <1>;
592 #size-cells = <0>;
593 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
594 reg = <0x30820000 0x10000>;
595 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
596 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
597 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
598 clock-names = "ipg", "per";
599 status = "disabled";
600 };
601
602 ecspi2: spi@30830000 {
603 #address-cells = <1>;
604 #size-cells = <0>;
605 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
606 reg = <0x30830000 0x10000>;
607 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
608 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
609 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
610 clock-names = "ipg", "per";
611 status = "disabled";
612 };
613
614 ecspi3: spi@30840000 {
615 #address-cells = <1>;
616 #size-cells = <0>;
617 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
618 reg = <0x30840000 0x10000>;
619 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
620 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
621 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
622 clock-names = "ipg", "per";
623 status = "disabled";
624 };
Lucas Stach748f9082018-12-09 14:26:07 +0000625
626 uart1: serial@30860000 {
627 compatible = "fsl,imx8mq-uart",
628 "fsl,imx6q-uart";
629 reg = <0x30860000 0x10000>;
630 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
631 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
632 <&clk IMX8MQ_CLK_UART1_ROOT>;
633 clock-names = "ipg", "per";
634 status = "disabled";
635 };
636
637 uart3: serial@30880000 {
638 compatible = "fsl,imx8mq-uart",
639 "fsl,imx6q-uart";
640 reg = <0x30880000 0x10000>;
641 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
642 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
643 <&clk IMX8MQ_CLK_UART3_ROOT>;
644 clock-names = "ipg", "per";
645 status = "disabled";
646 };
647
648 uart2: serial@30890000 {
649 compatible = "fsl,imx8mq-uart",
650 "fsl,imx6q-uart";
651 reg = <0x30890000 0x10000>;
652 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
653 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
654 <&clk IMX8MQ_CLK_UART2_ROOT>;
655 clock-names = "ipg", "per";
656 status = "disabled";
657 };
658
Daniel Baluta8c615382019-03-19 17:48:40 +0000659 sai2: sai@308b0000 {
660 #sound-dai-cells = <0>;
661 compatible = "fsl,imx8mq-sai",
662 "fsl,imx6sx-sai";
663 reg = <0x308b0000 0x10000>;
664 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
665 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
666 <&clk IMX8MQ_CLK_SAI2_ROOT>,
667 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
668 clock-names = "bus", "mclk1", "mclk2", "mclk3";
669 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
670 dma-names = "rx", "tx";
671 status = "disabled";
672 };
673
Lucas Stach748f9082018-12-09 14:26:07 +0000674 i2c1: i2c@30a20000 {
675 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
676 reg = <0x30a20000 0x10000>;
677 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
678 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
679 #address-cells = <1>;
680 #size-cells = <0>;
681 status = "disabled";
682 };
683
684 i2c2: i2c@30a30000 {
685 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
686 reg = <0x30a30000 0x10000>;
687 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
688 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
689 #address-cells = <1>;
690 #size-cells = <0>;
691 status = "disabled";
692 };
693
694 i2c3: i2c@30a40000 {
695 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
696 reg = <0x30a40000 0x10000>;
697 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
698 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
699 #address-cells = <1>;
700 #size-cells = <0>;
701 status = "disabled";
702 };
703
704 i2c4: i2c@30a50000 {
705 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
706 reg = <0x30a50000 0x10000>;
707 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
708 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
709 #address-cells = <1>;
710 #size-cells = <0>;
711 status = "disabled";
712 };
713
714 uart4: serial@30a60000 {
715 compatible = "fsl,imx8mq-uart",
716 "fsl,imx6q-uart";
717 reg = <0x30a60000 0x10000>;
718 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
719 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
720 <&clk IMX8MQ_CLK_UART4_ROOT>;
721 clock-names = "ipg", "per";
722 status = "disabled";
723 };
724
725 usdhc1: mmc@30b40000 {
726 compatible = "fsl,imx8mq-usdhc",
727 "fsl,imx7d-usdhc";
728 reg = <0x30b40000 0x10000>;
729 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
730 clocks = <&clk IMX8MQ_CLK_DUMMY>,
731 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
732 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
733 clock-names = "ipg", "ahb", "per";
Carlo Caionef2ce6ed2019-01-25 13:55:58 +0000734 assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
735 assigned-clock-rates = <400000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000736 fsl,tuning-start-tap = <20>;
737 fsl,tuning-step = <2>;
738 bus-width = <4>;
739 status = "disabled";
740 };
741
742 usdhc2: mmc@30b50000 {
743 compatible = "fsl,imx8mq-usdhc",
744 "fsl,imx7d-usdhc";
745 reg = <0x30b50000 0x10000>;
746 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
747 clocks = <&clk IMX8MQ_CLK_DUMMY>,
748 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
749 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
750 clock-names = "ipg", "ahb", "per";
751 fsl,tuning-start-tap = <20>;
752 fsl,tuning-step = <2>;
753 bus-width = <4>;
754 status = "disabled";
755 };
756
Carlo Caione39f16222019-02-11 09:53:35 +0800757 qspi0: spi@30bb0000 {
758 #address-cells = <1>;
759 #size-cells = <0>;
760 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
761 reg = <0x30bb0000 0x10000>,
762 <0x08000000 0x10000000>;
763 reg-names = "QuadSPI", "QuadSPI-memory";
764 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
765 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
766 <&clk IMX8MQ_CLK_QSPI_ROOT>;
767 clock-names = "qspi_en", "qspi";
768 status = "disabled";
769 };
770
Daniel Baluta1474d482019-03-19 17:48:37 +0000771 sdma1: sdma@30bd0000 {
Angus Ainslie (Purism)b6c846b2019-03-29 08:21:28 -0700772 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
Daniel Baluta1474d482019-03-19 17:48:37 +0000773 reg = <0x30bd0000 0x10000>;
774 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
775 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
Angus Ainslie (Purism)7240d7d2019-03-29 08:21:30 -0700776 <&clk IMX8MQ_CLK_AHB>;
Daniel Baluta1474d482019-03-19 17:48:37 +0000777 clock-names = "ipg", "ahb";
778 #dma-cells = <3>;
779 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
780 };
781
Lucas Stach748f9082018-12-09 14:26:07 +0000782 fec1: ethernet@30be0000 {
783 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
784 reg = <0x30be0000 0x10000>;
785 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
786 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
787 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
788 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
789 <&clk IMX8MQ_CLK_ENET1_ROOT>,
790 <&clk IMX8MQ_CLK_ENET_TIMER>,
791 <&clk IMX8MQ_CLK_ENET_REF>,
792 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
793 clock-names = "ipg", "ahb", "ptp",
794 "enet_clk_ref", "enet_out";
795 fsl,num-tx-queues = <3>;
796 fsl,num-rx-queues = <3>;
797 status = "disabled";
798 };
799 };
800
Lucas Stachad375492019-01-25 17:25:58 +0100801 usb_dwc3_0: usb@38100000 {
802 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
803 reg = <0x38100000 0x10000>;
804 clocks = <&clk IMX8MQ_CLK_USB_BUS>,
805 <&clk IMX8MQ_CLK_USB_CORE_REF>,
806 <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>;
807 clock-names = "bus_early", "ref", "suspend";
808 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
809 <&clk IMX8MQ_CLK_USB_CORE_REF>;
810 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
811 <&clk IMX8MQ_SYS1_PLL_100M>;
812 assigned-clock-rates = <500000000>, <100000000>;
813 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
814 phys = <&usb3_phy0>, <&usb3_phy0>;
815 phy-names = "usb2-phy", "usb3-phy";
816 power-domains = <&pgc_otg1>;
817 usb3-resume-missing-cas;
818 status = "disabled";
819 };
820
821 usb3_phy0: usb-phy@381f0040 {
822 compatible = "fsl,imx8mq-usb-phy";
823 reg = <0x381f0040 0x40>;
824 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
825 clock-names = "phy";
826 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
827 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
828 assigned-clock-rates = <100000000>;
829 #phy-cells = <0>;
830 status = "disabled";
831 };
832
833 usb_dwc3_1: usb@38200000 {
834 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
835 reg = <0x38200000 0x10000>;
836 clocks = <&clk IMX8MQ_CLK_USB_BUS>,
837 <&clk IMX8MQ_CLK_USB_CORE_REF>,
838 <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>;
839 clock-names = "bus_early", "ref", "suspend";
840 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
841 <&clk IMX8MQ_CLK_USB_CORE_REF>;
842 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
843 <&clk IMX8MQ_SYS1_PLL_100M>;
844 assigned-clock-rates = <500000000>, <100000000>;
845 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
846 phys = <&usb3_phy1>, <&usb3_phy1>;
847 phy-names = "usb2-phy", "usb3-phy";
848 power-domains = <&pgc_otg2>;
849 usb3-resume-missing-cas;
850 status = "disabled";
851 };
852
853 usb3_phy1: usb-phy@382f0040 {
854 compatible = "fsl,imx8mq-usb-phy";
855 reg = <0x382f0040 0x40>;
856 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
857 clock-names = "phy";
858 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
859 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
860 assigned-clock-rates = <100000000>;
861 #phy-cells = <0>;
862 status = "disabled";
863 };
864
Lucas Stach748f9082018-12-09 14:26:07 +0000865 gic: interrupt-controller@38800000 {
866 compatible = "arm,gic-v3";
867 reg = <0x38800000 0x10000>, /* GIC Dist */
868 <0x38880000 0xc0000>, /* GICR */
869 <0x31000000 0x2000>, /* GICC */
870 <0x31010000 0x2000>, /* GICV */
871 <0x31020000 0x2000>; /* GICH */
872 #interrupt-cells = <3>;
873 interrupt-controller;
874 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
875 interrupt-parent = <&gic>;
876 };
877 };
878};