blob: 7c0b12ad7ccfab10ad8dd6e67316e2b01dfb7041 [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>
Andrey Smirnovfc26e602019-04-05 10:30:03 -07009#include <dt-bindings/reset/imx8mq-reset.h>
Lucas Stach748f9082018-12-09 14:26:07 +000010#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/interrupt-controller/arm-gic.h>
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +080012#include <dt-bindings/thermal/thermal.h>
Lucas Stach748f9082018-12-09 14:26:07 +000013#include "imx8mq-pinfunc.h"
14
15/ {
Lucas Stachc4121232019-01-25 17:20:33 +010016 interrupt-parent = <&gpc>;
Lucas Stach748f9082018-12-09 14:26:07 +000017
18 #address-cells = <2>;
19 #size-cells = <2>;
20
21 aliases {
22 i2c0 = &i2c1;
23 i2c1 = &i2c2;
24 i2c2 = &i2c3;
25 i2c3 = &i2c4;
26 serial0 = &uart1;
27 serial1 = &uart2;
28 serial2 = &uart3;
29 serial3 = &uart4;
Fabio Estevam85761f42019-01-28 10:08:13 -020030 spi0 = &ecspi1;
31 spi1 = &ecspi2;
32 spi2 = &ecspi3;
Lucas Stach748f9082018-12-09 14:26:07 +000033 };
34
35 ckil: clock-ckil {
36 compatible = "fixed-clock";
37 #clock-cells = <0>;
38 clock-frequency = <32768>;
39 clock-output-names = "ckil";
40 };
41
42 osc_25m: clock-osc-25m {
43 compatible = "fixed-clock";
44 #clock-cells = <0>;
45 clock-frequency = <25000000>;
46 clock-output-names = "osc_25m";
47 };
48
49 osc_27m: clock-osc-27m {
50 compatible = "fixed-clock";
51 #clock-cells = <0>;
52 clock-frequency = <27000000>;
53 clock-output-names = "osc_27m";
54 };
55
56 clk_ext1: clock-ext1 {
57 compatible = "fixed-clock";
58 #clock-cells = <0>;
59 clock-frequency = <133000000>;
60 clock-output-names = "clk_ext1";
61 };
62
63 clk_ext2: clock-ext2 {
64 compatible = "fixed-clock";
65 #clock-cells = <0>;
66 clock-frequency = <133000000>;
67 clock-output-names = "clk_ext2";
68 };
69
70 clk_ext3: clock-ext3 {
71 compatible = "fixed-clock";
72 #clock-cells = <0>;
73 clock-frequency = <133000000>;
74 clock-output-names = "clk_ext3";
75 };
76
77 clk_ext4: clock-ext4 {
78 compatible = "fixed-clock";
79 #clock-cells = <0>;
80 clock-frequency= <133000000>;
81 clock-output-names = "clk_ext4";
82 };
83
84 cpus {
85 #address-cells = <1>;
86 #size-cells = <0>;
87
88 A53_0: cpu@0 {
89 device_type = "cpu";
90 compatible = "arm,cortex-a53";
91 reg = <0x0>;
Abel Vesab810641a2019-02-28 21:42:44 +000092 clock-latency = <61036>; /* two CLK32 periods */
93 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +000094 enable-method = "psci";
95 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +000096 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +080097 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +000098 };
99
100 A53_1: cpu@1 {
101 device_type = "cpu";
102 compatible = "arm,cortex-a53";
103 reg = <0x1>;
Abel Vesab810641a2019-02-28 21:42:44 +0000104 clock-latency = <61036>; /* two CLK32 periods */
105 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000106 enable-method = "psci";
107 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000108 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800109 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000110 };
111
112 A53_2: cpu@2 {
113 device_type = "cpu";
114 compatible = "arm,cortex-a53";
115 reg = <0x2>;
Abel Vesab810641a2019-02-28 21:42:44 +0000116 clock-latency = <61036>; /* two CLK32 periods */
117 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000118 enable-method = "psci";
119 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000120 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800121 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000122 };
123
124 A53_3: cpu@3 {
125 device_type = "cpu";
126 compatible = "arm,cortex-a53";
127 reg = <0x3>;
Abel Vesab810641a2019-02-28 21:42:44 +0000128 clock-latency = <61036>; /* two CLK32 periods */
129 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000130 enable-method = "psci";
131 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000132 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800133 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000134 };
135
136 A53_L2: l2-cache0 {
137 compatible = "cache";
138 };
139 };
140
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300141 a53_opp_table: opp-table {
142 compatible = "operating-points-v2";
143 opp-shared;
144
145 opp-800000000 {
146 opp-hz = /bits/ 64 <800000000>;
147 opp-microvolt = <900000>;
148 clock-latency-ns = <150000>;
149 };
150
Lucas Stach8cfd8132019-04-03 18:52:18 +0200151 opp-1300000000 {
152 opp-hz = /bits/ 64 <1300000000>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300153 opp-microvolt = <1000000>;
154 clock-latency-ns = <150000>;
155 opp-suspend;
156 };
157 };
158
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000159 pmu {
160 compatible = "arm,cortex-a53-pmu";
161 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
162 interrupt-parent = <&gic>;
163 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
164 };
165
Lucas Stach748f9082018-12-09 14:26:07 +0000166 psci {
167 compatible = "arm,psci-1.0";
168 method = "smc";
169 };
170
Fabio Estevamcddbea82019-03-25 12:19:59 -0300171 thermal-zones {
172 cpu-thermal {
173 polling-delay-passive = <250>;
174 polling-delay = <2000>;
175 thermal-sensors = <&tmu 0>;
176
177 trips {
178 cpu_alert: cpu-alert {
179 temperature = <80000>;
180 hysteresis = <2000>;
181 type = "passive";
182 };
183
184 cpu-crit {
185 temperature = <90000>;
186 hysteresis = <2000>;
187 type = "critical";
188 };
189 };
190
191 cooling-maps {
192 map0 {
193 trip = <&cpu_alert>;
194 cooling-device =
195 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
196 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
197 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
198 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
199 };
200 };
201 };
202
203 gpu-thermal {
204 polling-delay-passive = <250>;
205 polling-delay = <2000>;
206 thermal-sensors = <&tmu 1>;
207
208 trips {
209 gpu-crit {
210 temperature = <90000>;
211 hysteresis = <2000>;
212 type = "critical";
213 };
214 };
215 };
216
217 vpu-thermal {
218 polling-delay-passive = <250>;
219 polling-delay = <2000>;
220 thermal-sensors = <&tmu 2>;
221
222 trips {
223 vpu-crit {
224 temperature = <90000>;
225 hysteresis = <2000>;
226 type = "critical";
227 };
228 };
229 };
230 };
231
Lucas Stach748f9082018-12-09 14:26:07 +0000232 timer {
233 compatible = "arm,armv8-timer";
234 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
235 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
236 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
237 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
238 interrupt-parent = <&gic>;
239 arm,no-tick-in-suspend;
240 };
241
242 soc@0 {
243 compatible = "simple-bus";
244 #address-cells = <1>;
245 #size-cells = <1>;
246 ranges = <0x0 0x0 0x0 0x3e000000>;
Lucas Stachca04fed2019-02-08 19:53:49 +0100247 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000248
249 bus@30000000 { /* AIPS1 */
250 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
251 #address-cells = <1>;
252 #size-cells = <1>;
253 ranges = <0x30000000 0x30000000 0x400000>;
254
255 gpio1: gpio@30200000 {
256 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
257 reg = <0x30200000 0x10000>;
258 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
259 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000260 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000261 gpio-controller;
262 #gpio-cells = <2>;
263 interrupt-controller;
264 #interrupt-cells = <2>;
265 };
266
267 gpio2: gpio@30210000 {
268 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
269 reg = <0x30210000 0x10000>;
270 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
271 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000272 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000273 gpio-controller;
274 #gpio-cells = <2>;
275 interrupt-controller;
276 #interrupt-cells = <2>;
277 };
278
279 gpio3: gpio@30220000 {
280 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
281 reg = <0x30220000 0x10000>;
282 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
283 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000284 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000285 gpio-controller;
286 #gpio-cells = <2>;
287 interrupt-controller;
288 #interrupt-cells = <2>;
289 };
290
291 gpio4: gpio@30230000 {
292 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
293 reg = <0x30230000 0x10000>;
294 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
295 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000296 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000297 gpio-controller;
298 #gpio-cells = <2>;
299 interrupt-controller;
300 #interrupt-cells = <2>;
301 };
302
303 gpio5: gpio@30240000 {
304 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
305 reg = <0x30240000 0x10000>;
306 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
307 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000308 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000309 gpio-controller;
310 #gpio-cells = <2>;
311 interrupt-controller;
312 #interrupt-cells = <2>;
313 };
314
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800315 tmu: tmu@30260000 {
316 compatible = "fsl,imx8mq-tmu";
317 reg = <0x30260000 0x10000>;
318 interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
319 little-endian;
320 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
321 fsl,tmu-calibration = <0x00000000 0x00000023
322 0x00000001 0x00000029
323 0x00000002 0x0000002f
324 0x00000003 0x00000035
325 0x00000004 0x0000003d
326 0x00000005 0x00000043
327 0x00000006 0x0000004b
328 0x00000007 0x00000051
329 0x00000008 0x00000057
330 0x00000009 0x0000005f
331 0x0000000a 0x00000067
332 0x0000000b 0x0000006f
333
334 0x00010000 0x0000001b
335 0x00010001 0x00000023
336 0x00010002 0x0000002b
337 0x00010003 0x00000033
338 0x00010004 0x0000003b
339 0x00010005 0x00000043
340 0x00010006 0x0000004b
341 0x00010007 0x00000055
342 0x00010008 0x0000005d
343 0x00010009 0x00000067
344 0x0001000a 0x00000070
345
346 0x00020000 0x00000017
347 0x00020001 0x00000023
348 0x00020002 0x0000002d
349 0x00020003 0x00000037
350 0x00020004 0x00000041
351 0x00020005 0x0000004b
352 0x00020006 0x00000057
353 0x00020007 0x00000063
354 0x00020008 0x0000006f
355
356 0x00030000 0x00000015
357 0x00030001 0x00000021
358 0x00030002 0x0000002d
359 0x00030003 0x00000039
360 0x00030004 0x00000045
361 0x00030005 0x00000053
362 0x00030006 0x0000005f
363 0x00030007 0x00000071>;
364 #thermal-sensor-cells = <1>;
365 };
366
Baruch Siachd3a2d722018-12-09 14:26:10 +0000367 wdog1: watchdog@30280000 {
368 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
369 reg = <0x30280000 0x10000>;
370 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
371 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
372 status = "disabled";
373 };
374
375 wdog2: watchdog@30290000 {
376 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
377 reg = <0x30290000 0x10000>;
378 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
379 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
380 status = "disabled";
381 };
382
383 wdog3: watchdog@302a0000 {
384 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
385 reg = <0x302a0000 0x10000>;
386 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
387 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
388 status = "disabled";
389 };
Lucas Stacha2b91ef2018-12-14 11:55:09 +0100390
Daniel Baluta1474d482019-03-19 17:48:37 +0000391 sdma2: sdma@302c0000 {
392 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
393 reg = <0x302c0000 0x10000>;
394 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
395 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
396 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
397 clock-names = "ipg", "ahb";
398 #dma-cells = <3>;
399 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
400 };
401
Lucas Stach748f9082018-12-09 14:26:07 +0000402 iomuxc: iomuxc@30330000 {
403 compatible = "fsl,imx8mq-iomuxc";
404 reg = <0x30330000 0x10000>;
405 };
406
407 iomuxc_gpr: syscon@30340000 {
Andrey Smirnovbeea0f22019-04-05 10:30:00 -0700408 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", "syscon";
Lucas Stach748f9082018-12-09 14:26:07 +0000409 reg = <0x30340000 0x10000>;
410 };
411
Carlo Caione9e113b22019-02-26 09:04:48 +0000412 ocotp: ocotp-ctrl@30350000 {
413 compatible = "fsl,imx8mq-ocotp", "syscon";
414 reg = <0x30350000 0x10000>;
415 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
416 #address-cells = <1>;
417 #size-cells = <1>;
418 };
419
Lucas Stach748f9082018-12-09 14:26:07 +0000420 anatop: syscon@30360000 {
421 compatible = "fsl,imx8mq-anatop", "syscon";
422 reg = <0x30360000 0x10000>;
423 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
424 };
425
Abel Vesa3ea95c32019-01-31 15:01:22 +0000426 snvs: snvs@30370000 {
427 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
428 reg = <0x30370000 0x10000>;
429
430 snvs_rtc: snvs-rtc-lp{
431 compatible = "fsl,sec-v4.0-mon-rtc-lp";
432 regmap =<&snvs>;
433 offset = <0x34>;
434 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
435 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
436 };
437
438 };
439
Lucas Stach748f9082018-12-09 14:26:07 +0000440 clk: clock-controller@30380000 {
441 compatible = "fsl,imx8mq-ccm";
442 reg = <0x30380000 0x10000>;
443 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
444 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
445 #clock-cells = <1>;
446 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
447 <&clk_ext1>, <&clk_ext2>,
448 <&clk_ext3>, <&clk_ext4>;
449 clock-names = "ckil", "osc_25m", "osc_27m",
450 "clk_ext1", "clk_ext2",
451 "clk_ext3", "clk_ext4";
452 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100453
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700454 src: reset-controller@30390000 {
455 compatible = "fsl,imx8mq-src", "syscon";
456 reg = <0x30390000 0x10000>;
457 #reset-cells = <1>;
458 };
459
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100460 gpc: gpc@303a0000 {
461 compatible = "fsl,imx8mq-gpc";
462 reg = <0x303a0000 0x10000>;
Lucas Stachc4121232019-01-25 17:20:33 +0100463 interrupt-parent = <&gic>;
464 interrupt-controller;
465 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100466
467 pgc {
468 #address-cells = <1>;
469 #size-cells = <0>;
470
471 pgc_mipi: power-domain@0 {
472 #power-domain-cells = <0>;
473 reg = <IMX8M_POWER_DOMAIN_MIPI>;
474 };
475
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700476 /*
477 * As per comment in ATF source code:
478 *
479 * PCIE1 and PCIE2 share the
480 * same reset signal, if we
481 * power down PCIE2, PCIE1
482 * will be held in reset too.
483 *
484 * So instead of creating two
485 * separate power domains for
486 * PCIE1 and PCIE2 we create a
487 * link between both and use
488 * it as a shared PCIE power
489 * domain.
490 */
491 pgc_pcie: power-domain@1 {
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100492 #power-domain-cells = <0>;
493 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700494 power-domains = <&pgc_pcie2>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100495 };
496
497 pgc_otg1: power-domain@2 {
498 #power-domain-cells = <0>;
499 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
500 };
501
502 pgc_otg2: power-domain@3 {
503 #power-domain-cells = <0>;
504 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
505 };
506
507 pgc_ddr1: power-domain@4 {
508 #power-domain-cells = <0>;
509 reg = <IMX8M_POWER_DOMAIN_DDR1>;
510 };
511
512 pgc_gpu: power-domain@5 {
513 #power-domain-cells = <0>;
514 reg = <IMX8M_POWER_DOMAIN_GPU>;
515 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
516 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
517 <&clk IMX8MQ_CLK_GPU_AXI>,
518 <&clk IMX8MQ_CLK_GPU_AHB>;
519 };
520
521 pgc_vpu: power-domain@6 {
522 #power-domain-cells = <0>;
523 reg = <IMX8M_POWER_DOMAIN_VPU>;
524 };
525
526 pgc_disp: power-domain@7 {
527 #power-domain-cells = <0>;
528 reg = <IMX8M_POWER_DOMAIN_DISP>;
529 };
530
531 pgc_mipi_csi1: power-domain@8 {
532 #power-domain-cells = <0>;
533 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
534 };
535
536 pgc_mipi_csi2: power-domain@9 {
537 #power-domain-cells = <0>;
538 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
539 };
540
541 pgc_pcie2: power-domain@a {
542 #power-domain-cells = <0>;
543 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
544 };
545 };
546 };
Lucas Stach748f9082018-12-09 14:26:07 +0000547 };
548
549 bus@30400000 { /* AIPS2 */
550 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
551 #address-cells = <1>;
552 #size-cells = <1>;
553 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100554
555 pwm1: pwm@30660000 {
556 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
557 reg = <0x30660000 0x10000>;
558 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
559 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
560 <&clk IMX8MQ_CLK_PWM1_ROOT>;
561 clock-names = "ipg", "per";
562 #pwm-cells = <2>;
563 status = "disabled";
564 };
565
566 pwm2: pwm@30670000 {
567 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
568 reg = <0x30670000 0x10000>;
569 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
570 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
571 <&clk IMX8MQ_CLK_PWM2_ROOT>;
572 clock-names = "ipg", "per";
573 #pwm-cells = <2>;
574 status = "disabled";
575 };
576
577 pwm3: pwm@30680000 {
578 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
579 reg = <0x30680000 0x10000>;
580 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
581 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
582 <&clk IMX8MQ_CLK_PWM3_ROOT>;
583 clock-names = "ipg", "per";
584 #pwm-cells = <2>;
585 status = "disabled";
586 };
587
588 pwm4: pwm@30690000 {
589 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
590 reg = <0x30690000 0x10000>;
591 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
592 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
593 <&clk IMX8MQ_CLK_PWM4_ROOT>;
594 clock-names = "ipg", "per";
595 #pwm-cells = <2>;
596 status = "disabled";
597 };
Lucas Stach748f9082018-12-09 14:26:07 +0000598 };
599
600 bus@30800000 { /* AIPS3 */
601 compatible = "fsl,imx8mq-aips-bus", "simple-bus";
602 #address-cells = <1>;
603 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800604 ranges = <0x30800000 0x30800000 0x400000>,
605 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000606
Fabio Estevam85761f42019-01-28 10:08:13 -0200607 ecspi1: spi@30820000 {
608 #address-cells = <1>;
609 #size-cells = <0>;
610 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
611 reg = <0x30820000 0x10000>;
612 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
613 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
614 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
615 clock-names = "ipg", "per";
616 status = "disabled";
617 };
618
619 ecspi2: spi@30830000 {
620 #address-cells = <1>;
621 #size-cells = <0>;
622 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
623 reg = <0x30830000 0x10000>;
624 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
625 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
626 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
627 clock-names = "ipg", "per";
628 status = "disabled";
629 };
630
631 ecspi3: spi@30840000 {
632 #address-cells = <1>;
633 #size-cells = <0>;
634 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
635 reg = <0x30840000 0x10000>;
636 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
637 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
638 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
639 clock-names = "ipg", "per";
640 status = "disabled";
641 };
Lucas Stach748f9082018-12-09 14:26:07 +0000642
643 uart1: serial@30860000 {
644 compatible = "fsl,imx8mq-uart",
645 "fsl,imx6q-uart";
646 reg = <0x30860000 0x10000>;
647 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
648 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
649 <&clk IMX8MQ_CLK_UART1_ROOT>;
650 clock-names = "ipg", "per";
651 status = "disabled";
652 };
653
654 uart3: serial@30880000 {
655 compatible = "fsl,imx8mq-uart",
656 "fsl,imx6q-uart";
657 reg = <0x30880000 0x10000>;
658 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
659 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
660 <&clk IMX8MQ_CLK_UART3_ROOT>;
661 clock-names = "ipg", "per";
662 status = "disabled";
663 };
664
665 uart2: serial@30890000 {
666 compatible = "fsl,imx8mq-uart",
667 "fsl,imx6q-uart";
668 reg = <0x30890000 0x10000>;
669 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
670 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
671 <&clk IMX8MQ_CLK_UART2_ROOT>;
672 clock-names = "ipg", "per";
673 status = "disabled";
674 };
675
Daniel Baluta8c615382019-03-19 17:48:40 +0000676 sai2: sai@308b0000 {
677 #sound-dai-cells = <0>;
678 compatible = "fsl,imx8mq-sai",
679 "fsl,imx6sx-sai";
680 reg = <0x308b0000 0x10000>;
681 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
682 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
683 <&clk IMX8MQ_CLK_SAI2_ROOT>,
684 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
685 clock-names = "bus", "mclk1", "mclk2", "mclk3";
686 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
687 dma-names = "rx", "tx";
688 status = "disabled";
689 };
690
Lucas Stach748f9082018-12-09 14:26:07 +0000691 i2c1: i2c@30a20000 {
692 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
693 reg = <0x30a20000 0x10000>;
694 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
695 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
696 #address-cells = <1>;
697 #size-cells = <0>;
698 status = "disabled";
699 };
700
701 i2c2: i2c@30a30000 {
702 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
703 reg = <0x30a30000 0x10000>;
704 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
705 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
706 #address-cells = <1>;
707 #size-cells = <0>;
708 status = "disabled";
709 };
710
711 i2c3: i2c@30a40000 {
712 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
713 reg = <0x30a40000 0x10000>;
714 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
715 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
716 #address-cells = <1>;
717 #size-cells = <0>;
718 status = "disabled";
719 };
720
721 i2c4: i2c@30a50000 {
722 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
723 reg = <0x30a50000 0x10000>;
724 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
725 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
726 #address-cells = <1>;
727 #size-cells = <0>;
728 status = "disabled";
729 };
730
731 uart4: serial@30a60000 {
732 compatible = "fsl,imx8mq-uart",
733 "fsl,imx6q-uart";
734 reg = <0x30a60000 0x10000>;
735 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
736 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
737 <&clk IMX8MQ_CLK_UART4_ROOT>;
738 clock-names = "ipg", "per";
739 status = "disabled";
740 };
741
742 usdhc1: mmc@30b40000 {
743 compatible = "fsl,imx8mq-usdhc",
744 "fsl,imx7d-usdhc";
745 reg = <0x30b40000 0x10000>;
746 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
747 clocks = <&clk IMX8MQ_CLK_DUMMY>,
748 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
749 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
750 clock-names = "ipg", "ahb", "per";
Carlo Caionef2ce6ed2019-01-25 13:55:58 +0000751 assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
752 assigned-clock-rates = <400000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000753 fsl,tuning-start-tap = <20>;
754 fsl,tuning-step = <2>;
755 bus-width = <4>;
756 status = "disabled";
757 };
758
759 usdhc2: mmc@30b50000 {
760 compatible = "fsl,imx8mq-usdhc",
761 "fsl,imx7d-usdhc";
762 reg = <0x30b50000 0x10000>;
763 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
764 clocks = <&clk IMX8MQ_CLK_DUMMY>,
765 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
766 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
767 clock-names = "ipg", "ahb", "per";
768 fsl,tuning-start-tap = <20>;
769 fsl,tuning-step = <2>;
770 bus-width = <4>;
771 status = "disabled";
772 };
773
Carlo Caione39f16222019-02-11 09:53:35 +0800774 qspi0: spi@30bb0000 {
775 #address-cells = <1>;
776 #size-cells = <0>;
777 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
778 reg = <0x30bb0000 0x10000>,
779 <0x08000000 0x10000000>;
780 reg-names = "QuadSPI", "QuadSPI-memory";
781 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
782 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
783 <&clk IMX8MQ_CLK_QSPI_ROOT>;
784 clock-names = "qspi_en", "qspi";
785 status = "disabled";
786 };
787
Daniel Baluta1474d482019-03-19 17:48:37 +0000788 sdma1: sdma@30bd0000 {
Angus Ainslie (Purism)b6c846b2019-03-29 08:21:28 -0700789 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
Daniel Baluta1474d482019-03-19 17:48:37 +0000790 reg = <0x30bd0000 0x10000>;
791 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
792 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
Angus Ainslie (Purism)7240d7d2019-03-29 08:21:30 -0700793 <&clk IMX8MQ_CLK_AHB>;
Daniel Baluta1474d482019-03-19 17:48:37 +0000794 clock-names = "ipg", "ahb";
795 #dma-cells = <3>;
796 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
797 };
798
Lucas Stach748f9082018-12-09 14:26:07 +0000799 fec1: ethernet@30be0000 {
800 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
801 reg = <0x30be0000 0x10000>;
802 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
803 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
804 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
805 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
806 <&clk IMX8MQ_CLK_ENET1_ROOT>,
807 <&clk IMX8MQ_CLK_ENET_TIMER>,
808 <&clk IMX8MQ_CLK_ENET_REF>,
809 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
810 clock-names = "ipg", "ahb", "ptp",
811 "enet_clk_ref", "enet_out";
812 fsl,num-tx-queues = <3>;
813 fsl,num-rx-queues = <3>;
814 status = "disabled";
815 };
816 };
817
Lucas Stach45d2c842019-04-04 18:52:11 +0200818 gpu: gpu@38000000 {
819 compatible = "vivante,gc";
820 reg = <0x38000000 0x40000>;
821 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
822 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
823 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
824 <&clk IMX8MQ_CLK_GPU_AXI>,
825 <&clk IMX8MQ_CLK_GPU_AHB>;
826 clock-names = "core", "shader", "bus", "reg";
827 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
828 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
829 <&clk IMX8MQ_CLK_GPU_AXI>,
830 <&clk IMX8MQ_CLK_GPU_AHB>;
831 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
832 <&clk IMX8MQ_GPU_PLL_OUT>,
833 <&clk IMX8MQ_GPU_PLL_OUT>,
834 <&clk IMX8MQ_GPU_PLL_OUT>;
835 assigned-clock-rates = <800000000>, <800000000>,
836 <800000000>, <800000000>;
837 power-domains = <&pgc_gpu>;
838 };
839
Lucas Stachad375492019-01-25 17:25:58 +0100840 usb_dwc3_0: usb@38100000 {
841 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
842 reg = <0x38100000 0x10000>;
843 clocks = <&clk IMX8MQ_CLK_USB_BUS>,
844 <&clk IMX8MQ_CLK_USB_CORE_REF>,
845 <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>;
846 clock-names = "bus_early", "ref", "suspend";
847 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
848 <&clk IMX8MQ_CLK_USB_CORE_REF>;
849 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
850 <&clk IMX8MQ_SYS1_PLL_100M>;
851 assigned-clock-rates = <500000000>, <100000000>;
852 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
853 phys = <&usb3_phy0>, <&usb3_phy0>;
854 phy-names = "usb2-phy", "usb3-phy";
855 power-domains = <&pgc_otg1>;
856 usb3-resume-missing-cas;
857 status = "disabled";
858 };
859
860 usb3_phy0: usb-phy@381f0040 {
861 compatible = "fsl,imx8mq-usb-phy";
862 reg = <0x381f0040 0x40>;
863 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
864 clock-names = "phy";
865 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
866 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
867 assigned-clock-rates = <100000000>;
868 #phy-cells = <0>;
869 status = "disabled";
870 };
871
872 usb_dwc3_1: usb@38200000 {
873 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
874 reg = <0x38200000 0x10000>;
875 clocks = <&clk IMX8MQ_CLK_USB_BUS>,
876 <&clk IMX8MQ_CLK_USB_CORE_REF>,
877 <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>;
878 clock-names = "bus_early", "ref", "suspend";
879 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
880 <&clk IMX8MQ_CLK_USB_CORE_REF>;
881 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
882 <&clk IMX8MQ_SYS1_PLL_100M>;
883 assigned-clock-rates = <500000000>, <100000000>;
884 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
885 phys = <&usb3_phy1>, <&usb3_phy1>;
886 phy-names = "usb2-phy", "usb3-phy";
887 power-domains = <&pgc_otg2>;
888 usb3-resume-missing-cas;
889 status = "disabled";
890 };
891
892 usb3_phy1: usb-phy@382f0040 {
893 compatible = "fsl,imx8mq-usb-phy";
894 reg = <0x382f0040 0x40>;
895 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
896 clock-names = "phy";
897 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
898 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
899 assigned-clock-rates = <100000000>;
900 #phy-cells = <0>;
901 status = "disabled";
902 };
903
Andrey Smirnovfc26e602019-04-05 10:30:03 -0700904
905 pcie0: pcie@33800000 {
906 compatible = "fsl,imx8mq-pcie";
907 reg = <0x33800000 0x400000>,
908 <0x1ff00000 0x80000>;
909 reg-names = "dbi", "config";
910 #address-cells = <3>;
911 #size-cells = <2>;
912 device_type = "pci";
913 bus-range = <0x00 0xff>;
914 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
915 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
916 num-lanes = <1>;
917 num-viewport = <4>;
918 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
919 interrupt-names = "msi";
920 #interrupt-cells = <1>;
921 interrupt-map-mask = <0 0 0 0x7>;
922 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
923 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
924 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
925 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
926 fsl,max-link-speed = <2>;
927 power-domains = <&pgc_pcie>;
928 resets = <&src IMX8MQ_RESET_PCIEPHY>,
929 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
930 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
931 reset-names = "pciephy", "apps", "turnoff";
932 status = "disabled";
933 };
934
935 pcie1: pcie@33c00000 {
936 compatible = "fsl,imx8mq-pcie";
937 reg = <0x33c00000 0x400000>,
938 <0x27f00000 0x80000>;
939 reg-names = "dbi", "config";
940 #address-cells = <3>;
941 #size-cells = <2>;
942 device_type = "pci";
943 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
944 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
945 num-lanes = <1>;
946 num-viewport = <4>;
947 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
948 interrupt-names = "msi";
949 #interrupt-cells = <1>;
950 interrupt-map-mask = <0 0 0 0x7>;
951 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
952 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
953 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
954 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
955 fsl,max-link-speed = <2>;
956 power-domains = <&pgc_pcie>;
957 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
958 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
959 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
960 reset-names = "pciephy", "apps", "turnoff";
961 status = "disabled";
962 };
963
Lucas Stach748f9082018-12-09 14:26:07 +0000964 gic: interrupt-controller@38800000 {
965 compatible = "arm,gic-v3";
966 reg = <0x38800000 0x10000>, /* GIC Dist */
967 <0x38880000 0xc0000>, /* GICR */
968 <0x31000000 0x2000>, /* GICC */
969 <0x31010000 0x2000>, /* GICV */
970 <0x31020000 0x2000>; /* GICH */
971 #interrupt-cells = <3>;
972 interrupt-controller;
973 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
974 interrupt-parent = <&gic>;
975 };
976 };
977};