blob: 769504cfcc654c5f3b288068e0a02663b0745acf [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
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000140 pmu {
141 compatible = "arm,cortex-a53-pmu";
142 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
143 interrupt-parent = <&gic>;
144 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
145 };
146
Lucas Stach748f9082018-12-09 14:26:07 +0000147 psci {
148 compatible = "arm,psci-1.0";
149 method = "smc";
150 };
151
152 timer {
153 compatible = "arm,armv8-timer";
154 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
155 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
156 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
157 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
158 interrupt-parent = <&gic>;
159 arm,no-tick-in-suspend;
160 };
161
162 soc@0 {
163 compatible = "simple-bus";
164 #address-cells = <1>;
165 #size-cells = <1>;
166 ranges = <0x0 0x0 0x0 0x3e000000>;
Lucas Stachca04fed2019-02-08 19:53:49 +0100167 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000168
169 bus@30000000 { /* AIPS1 */
170 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
171 #address-cells = <1>;
172 #size-cells = <1>;
173 ranges = <0x30000000 0x30000000 0x400000>;
174
175 gpio1: gpio@30200000 {
176 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
177 reg = <0x30200000 0x10000>;
178 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
179 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000180 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000181 gpio-controller;
182 #gpio-cells = <2>;
183 interrupt-controller;
184 #interrupt-cells = <2>;
185 };
186
187 gpio2: gpio@30210000 {
188 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
189 reg = <0x30210000 0x10000>;
190 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
191 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000192 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000193 gpio-controller;
194 #gpio-cells = <2>;
195 interrupt-controller;
196 #interrupt-cells = <2>;
197 };
198
199 gpio3: gpio@30220000 {
200 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
201 reg = <0x30220000 0x10000>;
202 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
203 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000204 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000205 gpio-controller;
206 #gpio-cells = <2>;
207 interrupt-controller;
208 #interrupt-cells = <2>;
209 };
210
211 gpio4: gpio@30230000 {
212 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
213 reg = <0x30230000 0x10000>;
214 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
215 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000216 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000217 gpio-controller;
218 #gpio-cells = <2>;
219 interrupt-controller;
220 #interrupt-cells = <2>;
221 };
222
223 gpio5: gpio@30240000 {
224 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
225 reg = <0x30240000 0x10000>;
226 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
227 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000228 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000229 gpio-controller;
230 #gpio-cells = <2>;
231 interrupt-controller;
232 #interrupt-cells = <2>;
233 };
234
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800235 tmu: tmu@30260000 {
236 compatible = "fsl,imx8mq-tmu";
237 reg = <0x30260000 0x10000>;
238 interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
239 little-endian;
240 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
241 fsl,tmu-calibration = <0x00000000 0x00000023
242 0x00000001 0x00000029
243 0x00000002 0x0000002f
244 0x00000003 0x00000035
245 0x00000004 0x0000003d
246 0x00000005 0x00000043
247 0x00000006 0x0000004b
248 0x00000007 0x00000051
249 0x00000008 0x00000057
250 0x00000009 0x0000005f
251 0x0000000a 0x00000067
252 0x0000000b 0x0000006f
253
254 0x00010000 0x0000001b
255 0x00010001 0x00000023
256 0x00010002 0x0000002b
257 0x00010003 0x00000033
258 0x00010004 0x0000003b
259 0x00010005 0x00000043
260 0x00010006 0x0000004b
261 0x00010007 0x00000055
262 0x00010008 0x0000005d
263 0x00010009 0x00000067
264 0x0001000a 0x00000070
265
266 0x00020000 0x00000017
267 0x00020001 0x00000023
268 0x00020002 0x0000002d
269 0x00020003 0x00000037
270 0x00020004 0x00000041
271 0x00020005 0x0000004b
272 0x00020006 0x00000057
273 0x00020007 0x00000063
274 0x00020008 0x0000006f
275
276 0x00030000 0x00000015
277 0x00030001 0x00000021
278 0x00030002 0x0000002d
279 0x00030003 0x00000039
280 0x00030004 0x00000045
281 0x00030005 0x00000053
282 0x00030006 0x0000005f
283 0x00030007 0x00000071>;
284 #thermal-sensor-cells = <1>;
285 };
286
287 thermal-zones {
288 cpu-thermal {
289 polling-delay-passive = <250>;
290 polling-delay = <2000>;
291 thermal-sensors = <&tmu 0>;
292
293 trips {
294 cpu_alert: cpu-alert {
295 temperature = <80000>;
296 hysteresis = <2000>;
297 type = "passive";
298 };
299
300 cpu-crit {
301 temperature = <90000>;
302 hysteresis = <2000>;
303 type = "critical";
304 };
305 };
306
307 cooling-maps {
308 map0 {
309 trip = <&cpu_alert>;
310 cooling-device =
311 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
312 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
313 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
314 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
315 };
316 };
317 };
318
319 gpu-thermal {
320 polling-delay-passive = <250>;
321 polling-delay = <2000>;
322 thermal-sensors = <&tmu 1>;
323
324 trips {
325 gpu-crit {
326 temperature = <90000>;
327 hysteresis = <2000>;
328 type = "critical";
329 };
330 };
331 };
332
333 vpu-thermal {
334 polling-delay-passive = <250>;
335 polling-delay = <2000>;
336 thermal-sensors = <&tmu 2>;
337
338 trips {
339 vpu-crit {
340 temperature = <90000>;
341 hysteresis = <2000>;
342 type = "critical";
343 };
344 };
345 };
346 };
347
Baruch Siachd3a2d722018-12-09 14:26:10 +0000348 wdog1: watchdog@30280000 {
349 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
350 reg = <0x30280000 0x10000>;
351 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
352 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
353 status = "disabled";
354 };
355
356 wdog2: watchdog@30290000 {
357 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
358 reg = <0x30290000 0x10000>;
359 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
360 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
361 status = "disabled";
362 };
363
364 wdog3: watchdog@302a0000 {
365 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
366 reg = <0x302a0000 0x10000>;
367 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
368 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
369 status = "disabled";
370 };
Lucas Stacha2b91ef2018-12-14 11:55:09 +0100371
Daniel Baluta1474d482019-03-19 17:48:37 +0000372 sdma2: sdma@302c0000 {
373 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
374 reg = <0x302c0000 0x10000>;
375 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
376 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
377 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
378 clock-names = "ipg", "ahb";
379 #dma-cells = <3>;
380 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
381 };
382
Lucas Stach748f9082018-12-09 14:26:07 +0000383 iomuxc: iomuxc@30330000 {
384 compatible = "fsl,imx8mq-iomuxc";
385 reg = <0x30330000 0x10000>;
386 };
387
388 iomuxc_gpr: syscon@30340000 {
389 compatible = "fsl,imx8mq-iomuxc-gpr", "syscon";
390 reg = <0x30340000 0x10000>;
391 };
392
Carlo Caione9e113b22019-02-26 09:04:48 +0000393 ocotp: ocotp-ctrl@30350000 {
394 compatible = "fsl,imx8mq-ocotp", "syscon";
395 reg = <0x30350000 0x10000>;
396 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
397 #address-cells = <1>;
398 #size-cells = <1>;
399 };
400
Lucas Stach748f9082018-12-09 14:26:07 +0000401 anatop: syscon@30360000 {
402 compatible = "fsl,imx8mq-anatop", "syscon";
403 reg = <0x30360000 0x10000>;
404 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
405 };
406
Abel Vesa3ea95c32019-01-31 15:01:22 +0000407 snvs: snvs@30370000 {
408 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
409 reg = <0x30370000 0x10000>;
410
411 snvs_rtc: snvs-rtc-lp{
412 compatible = "fsl,sec-v4.0-mon-rtc-lp";
413 regmap =<&snvs>;
414 offset = <0x34>;
415 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
416 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
417 };
418
419 };
420
Lucas Stach748f9082018-12-09 14:26:07 +0000421 clk: clock-controller@30380000 {
422 compatible = "fsl,imx8mq-ccm";
423 reg = <0x30380000 0x10000>;
424 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
425 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
426 #clock-cells = <1>;
427 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
428 <&clk_ext1>, <&clk_ext2>,
429 <&clk_ext3>, <&clk_ext4>;
430 clock-names = "ckil", "osc_25m", "osc_27m",
431 "clk_ext1", "clk_ext2",
432 "clk_ext3", "clk_ext4";
433 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100434
435 gpc: gpc@303a0000 {
436 compatible = "fsl,imx8mq-gpc";
437 reg = <0x303a0000 0x10000>;
Lucas Stachc4121232019-01-25 17:20:33 +0100438 interrupt-parent = <&gic>;
439 interrupt-controller;
440 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100441
442 pgc {
443 #address-cells = <1>;
444 #size-cells = <0>;
445
446 pgc_mipi: power-domain@0 {
447 #power-domain-cells = <0>;
448 reg = <IMX8M_POWER_DOMAIN_MIPI>;
449 };
450
451 pgc_pcie1: power-domain@1 {
452 #power-domain-cells = <0>;
453 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
454 };
455
456 pgc_otg1: power-domain@2 {
457 #power-domain-cells = <0>;
458 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
459 };
460
461 pgc_otg2: power-domain@3 {
462 #power-domain-cells = <0>;
463 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
464 };
465
466 pgc_ddr1: power-domain@4 {
467 #power-domain-cells = <0>;
468 reg = <IMX8M_POWER_DOMAIN_DDR1>;
469 };
470
471 pgc_gpu: power-domain@5 {
472 #power-domain-cells = <0>;
473 reg = <IMX8M_POWER_DOMAIN_GPU>;
474 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
475 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
476 <&clk IMX8MQ_CLK_GPU_AXI>,
477 <&clk IMX8MQ_CLK_GPU_AHB>;
478 };
479
480 pgc_vpu: power-domain@6 {
481 #power-domain-cells = <0>;
482 reg = <IMX8M_POWER_DOMAIN_VPU>;
483 };
484
485 pgc_disp: power-domain@7 {
486 #power-domain-cells = <0>;
487 reg = <IMX8M_POWER_DOMAIN_DISP>;
488 };
489
490 pgc_mipi_csi1: power-domain@8 {
491 #power-domain-cells = <0>;
492 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
493 };
494
495 pgc_mipi_csi2: power-domain@9 {
496 #power-domain-cells = <0>;
497 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
498 };
499
500 pgc_pcie2: power-domain@a {
501 #power-domain-cells = <0>;
502 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
503 };
504 };
505 };
Lucas Stach748f9082018-12-09 14:26:07 +0000506 };
507
508 bus@30400000 { /* AIPS2 */
509 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
510 #address-cells = <1>;
511 #size-cells = <1>;
512 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100513
514 pwm1: pwm@30660000 {
515 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
516 reg = <0x30660000 0x10000>;
517 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
518 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
519 <&clk IMX8MQ_CLK_PWM1_ROOT>;
520 clock-names = "ipg", "per";
521 #pwm-cells = <2>;
522 status = "disabled";
523 };
524
525 pwm2: pwm@30670000 {
526 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
527 reg = <0x30670000 0x10000>;
528 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
529 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
530 <&clk IMX8MQ_CLK_PWM2_ROOT>;
531 clock-names = "ipg", "per";
532 #pwm-cells = <2>;
533 status = "disabled";
534 };
535
536 pwm3: pwm@30680000 {
537 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
538 reg = <0x30680000 0x10000>;
539 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
540 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
541 <&clk IMX8MQ_CLK_PWM3_ROOT>;
542 clock-names = "ipg", "per";
543 #pwm-cells = <2>;
544 status = "disabled";
545 };
546
547 pwm4: pwm@30690000 {
548 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
549 reg = <0x30690000 0x10000>;
550 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
551 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
552 <&clk IMX8MQ_CLK_PWM4_ROOT>;
553 clock-names = "ipg", "per";
554 #pwm-cells = <2>;
555 status = "disabled";
556 };
Lucas Stach748f9082018-12-09 14:26:07 +0000557 };
558
559 bus@30800000 { /* AIPS3 */
560 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
561 #address-cells = <1>;
562 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800563 ranges = <0x30800000 0x30800000 0x400000>,
564 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000565
Fabio Estevam85761f42019-01-28 10:08:13 -0200566 ecspi1: spi@30820000 {
567 #address-cells = <1>;
568 #size-cells = <0>;
569 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
570 reg = <0x30820000 0x10000>;
571 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
572 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
573 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
574 clock-names = "ipg", "per";
575 status = "disabled";
576 };
577
578 ecspi2: spi@30830000 {
579 #address-cells = <1>;
580 #size-cells = <0>;
581 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
582 reg = <0x30830000 0x10000>;
583 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
584 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
585 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
586 clock-names = "ipg", "per";
587 status = "disabled";
588 };
589
590 ecspi3: spi@30840000 {
591 #address-cells = <1>;
592 #size-cells = <0>;
593 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
594 reg = <0x30840000 0x10000>;
595 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
596 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
597 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
598 clock-names = "ipg", "per";
599 status = "disabled";
600 };
Lucas Stach748f9082018-12-09 14:26:07 +0000601
602 uart1: serial@30860000 {
603 compatible = "fsl,imx8mq-uart",
604 "fsl,imx6q-uart";
605 reg = <0x30860000 0x10000>;
606 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
607 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
608 <&clk IMX8MQ_CLK_UART1_ROOT>;
609 clock-names = "ipg", "per";
610 status = "disabled";
611 };
612
613 uart3: serial@30880000 {
614 compatible = "fsl,imx8mq-uart",
615 "fsl,imx6q-uart";
616 reg = <0x30880000 0x10000>;
617 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
618 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
619 <&clk IMX8MQ_CLK_UART3_ROOT>;
620 clock-names = "ipg", "per";
621 status = "disabled";
622 };
623
624 uart2: serial@30890000 {
625 compatible = "fsl,imx8mq-uart",
626 "fsl,imx6q-uart";
627 reg = <0x30890000 0x10000>;
628 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
629 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
630 <&clk IMX8MQ_CLK_UART2_ROOT>;
631 clock-names = "ipg", "per";
632 status = "disabled";
633 };
634
Daniel Baluta8c615382019-03-19 17:48:40 +0000635 sai2: sai@308b0000 {
636 #sound-dai-cells = <0>;
637 compatible = "fsl,imx8mq-sai",
638 "fsl,imx6sx-sai";
639 reg = <0x308b0000 0x10000>;
640 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
641 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
642 <&clk IMX8MQ_CLK_SAI2_ROOT>,
643 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
644 clock-names = "bus", "mclk1", "mclk2", "mclk3";
645 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
646 dma-names = "rx", "tx";
647 status = "disabled";
648 };
649
Lucas Stach748f9082018-12-09 14:26:07 +0000650 i2c1: i2c@30a20000 {
651 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
652 reg = <0x30a20000 0x10000>;
653 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
654 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
655 #address-cells = <1>;
656 #size-cells = <0>;
657 status = "disabled";
658 };
659
660 i2c2: i2c@30a30000 {
661 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
662 reg = <0x30a30000 0x10000>;
663 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
664 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
665 #address-cells = <1>;
666 #size-cells = <0>;
667 status = "disabled";
668 };
669
670 i2c3: i2c@30a40000 {
671 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
672 reg = <0x30a40000 0x10000>;
673 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
674 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
675 #address-cells = <1>;
676 #size-cells = <0>;
677 status = "disabled";
678 };
679
680 i2c4: i2c@30a50000 {
681 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
682 reg = <0x30a50000 0x10000>;
683 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
684 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
685 #address-cells = <1>;
686 #size-cells = <0>;
687 status = "disabled";
688 };
689
690 uart4: serial@30a60000 {
691 compatible = "fsl,imx8mq-uart",
692 "fsl,imx6q-uart";
693 reg = <0x30a60000 0x10000>;
694 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
695 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
696 <&clk IMX8MQ_CLK_UART4_ROOT>;
697 clock-names = "ipg", "per";
698 status = "disabled";
699 };
700
701 usdhc1: mmc@30b40000 {
702 compatible = "fsl,imx8mq-usdhc",
703 "fsl,imx7d-usdhc";
704 reg = <0x30b40000 0x10000>;
705 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
706 clocks = <&clk IMX8MQ_CLK_DUMMY>,
707 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
708 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
709 clock-names = "ipg", "ahb", "per";
Carlo Caionef2ce6ed2019-01-25 13:55:58 +0000710 assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
711 assigned-clock-rates = <400000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000712 fsl,tuning-start-tap = <20>;
713 fsl,tuning-step = <2>;
714 bus-width = <4>;
715 status = "disabled";
716 };
717
718 usdhc2: mmc@30b50000 {
719 compatible = "fsl,imx8mq-usdhc",
720 "fsl,imx7d-usdhc";
721 reg = <0x30b50000 0x10000>;
722 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
723 clocks = <&clk IMX8MQ_CLK_DUMMY>,
724 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
725 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
726 clock-names = "ipg", "ahb", "per";
727 fsl,tuning-start-tap = <20>;
728 fsl,tuning-step = <2>;
729 bus-width = <4>;
730 status = "disabled";
731 };
732
Carlo Caione39f16222019-02-11 09:53:35 +0800733 qspi0: spi@30bb0000 {
734 #address-cells = <1>;
735 #size-cells = <0>;
736 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
737 reg = <0x30bb0000 0x10000>,
738 <0x08000000 0x10000000>;
739 reg-names = "QuadSPI", "QuadSPI-memory";
740 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
741 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
742 <&clk IMX8MQ_CLK_QSPI_ROOT>;
743 clock-names = "qspi_en", "qspi";
744 status = "disabled";
745 };
746
Daniel Baluta1474d482019-03-19 17:48:37 +0000747 sdma1: sdma@30bd0000 {
748 compatible = "fsl, imx8mq-sdma","fsl,imx7d-sdma";
749 reg = <0x30bd0000 0x10000>;
750 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
751 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
752 <&clk IMX8MQ_CLK_SDMA1_ROOT>;
753 clock-names = "ipg", "ahb";
754 #dma-cells = <3>;
755 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
756 };
757
Lucas Stach748f9082018-12-09 14:26:07 +0000758 fec1: ethernet@30be0000 {
759 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
760 reg = <0x30be0000 0x10000>;
761 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
762 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
763 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
764 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
765 <&clk IMX8MQ_CLK_ENET1_ROOT>,
766 <&clk IMX8MQ_CLK_ENET_TIMER>,
767 <&clk IMX8MQ_CLK_ENET_REF>,
768 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
769 clock-names = "ipg", "ahb", "ptp",
770 "enet_clk_ref", "enet_out";
771 fsl,num-tx-queues = <3>;
772 fsl,num-rx-queues = <3>;
773 status = "disabled";
774 };
775 };
776
Lucas Stachad375492019-01-25 17:25:58 +0100777 usb_dwc3_0: usb@38100000 {
778 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
779 reg = <0x38100000 0x10000>;
780 clocks = <&clk IMX8MQ_CLK_USB_BUS>,
781 <&clk IMX8MQ_CLK_USB_CORE_REF>,
782 <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>;
783 clock-names = "bus_early", "ref", "suspend";
784 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
785 <&clk IMX8MQ_CLK_USB_CORE_REF>;
786 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
787 <&clk IMX8MQ_SYS1_PLL_100M>;
788 assigned-clock-rates = <500000000>, <100000000>;
789 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
790 phys = <&usb3_phy0>, <&usb3_phy0>;
791 phy-names = "usb2-phy", "usb3-phy";
792 power-domains = <&pgc_otg1>;
793 usb3-resume-missing-cas;
794 status = "disabled";
795 };
796
797 usb3_phy0: usb-phy@381f0040 {
798 compatible = "fsl,imx8mq-usb-phy";
799 reg = <0x381f0040 0x40>;
800 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
801 clock-names = "phy";
802 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
803 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
804 assigned-clock-rates = <100000000>;
805 #phy-cells = <0>;
806 status = "disabled";
807 };
808
809 usb_dwc3_1: usb@38200000 {
810 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
811 reg = <0x38200000 0x10000>;
812 clocks = <&clk IMX8MQ_CLK_USB_BUS>,
813 <&clk IMX8MQ_CLK_USB_CORE_REF>,
814 <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>;
815 clock-names = "bus_early", "ref", "suspend";
816 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
817 <&clk IMX8MQ_CLK_USB_CORE_REF>;
818 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
819 <&clk IMX8MQ_SYS1_PLL_100M>;
820 assigned-clock-rates = <500000000>, <100000000>;
821 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
822 phys = <&usb3_phy1>, <&usb3_phy1>;
823 phy-names = "usb2-phy", "usb3-phy";
824 power-domains = <&pgc_otg2>;
825 usb3-resume-missing-cas;
826 status = "disabled";
827 };
828
829 usb3_phy1: usb-phy@382f0040 {
830 compatible = "fsl,imx8mq-usb-phy";
831 reg = <0x382f0040 0x40>;
832 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
833 clock-names = "phy";
834 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
835 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
836 assigned-clock-rates = <100000000>;
837 #phy-cells = <0>;
838 status = "disabled";
839 };
840
Abel Vesa64d26f82019-02-28 21:42:46 +0000841
842 a53_opp_table: opp-table {
843 compatible = "operating-points-v2";
844 opp-shared;
845
846 opp-800000000 {
847 opp-hz = /bits/ 64 <800000000>;
848 opp-microvolt = <900000>;
849 clock-latency-ns = <150000>;
850 };
851
852 opp-1000000000 {
853 opp-hz = /bits/ 64 <1000000000>;
854 opp-microvolt = <1000000>;
855 clock-latency-ns = <150000>;
856 opp-suspend;
857 };
858 };
859
Lucas Stach748f9082018-12-09 14:26:07 +0000860 gic: interrupt-controller@38800000 {
861 compatible = "arm,gic-v3";
862 reg = <0x38800000 0x10000>, /* GIC Dist */
863 <0x38880000 0xc0000>, /* GICR */
864 <0x31000000 0x2000>, /* GICC */
865 <0x31010000 0x2000>, /* GICV */
866 <0x31020000 0x2000>; /* GICH */
867 #interrupt-cells = <3>;
868 interrupt-controller;
869 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
870 interrupt-parent = <&gic>;
871 };
872 };
873};