blob: 561fa792fe5a98508db38a739090551468655a5c [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>
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -070011#include "dt-bindings/input/input.h"
Lucas Stach748f9082018-12-09 14:26:07 +000012#include <dt-bindings/interrupt-controller/arm-gic.h>
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +080013#include <dt-bindings/thermal/thermal.h>
Lucas Stach748f9082018-12-09 14:26:07 +000014#include "imx8mq-pinfunc.h"
15
16/ {
Lucas Stachc4121232019-01-25 17:20:33 +010017 interrupt-parent = <&gpc>;
Lucas Stach748f9082018-12-09 14:26:07 +000018
19 #address-cells = <2>;
20 #size-cells = <2>;
21
22 aliases {
Peng Fan614d88462020-05-20 10:02:44 +080023 ethernet0 = &fec1;
Anson Huang1f370972019-05-21 08:15:26 +000024 gpio0 = &gpio1;
25 gpio1 = &gpio2;
26 gpio2 = &gpio3;
27 gpio3 = &gpio4;
28 gpio4 = &gpio5;
Lucas Stach748f9082018-12-09 14:26:07 +000029 i2c0 = &i2c1;
30 i2c1 = &i2c2;
31 i2c2 = &i2c3;
32 i2c3 = &i2c4;
Peng Fane9a8d992020-05-20 10:02:43 +080033 mmc0 = &usdhc1;
34 mmc1 = &usdhc2;
Lucas Stach748f9082018-12-09 14:26:07 +000035 serial0 = &uart1;
36 serial1 = &uart2;
37 serial2 = &uart3;
38 serial3 = &uart4;
Fabio Estevam85761f42019-01-28 10:08:13 -020039 spi0 = &ecspi1;
40 spi1 = &ecspi2;
41 spi2 = &ecspi3;
Lucas Stach748f9082018-12-09 14:26:07 +000042 };
43
44 ckil: clock-ckil {
45 compatible = "fixed-clock";
46 #clock-cells = <0>;
47 clock-frequency = <32768>;
48 clock-output-names = "ckil";
49 };
50
51 osc_25m: clock-osc-25m {
52 compatible = "fixed-clock";
53 #clock-cells = <0>;
54 clock-frequency = <25000000>;
55 clock-output-names = "osc_25m";
56 };
57
58 osc_27m: clock-osc-27m {
59 compatible = "fixed-clock";
60 #clock-cells = <0>;
61 clock-frequency = <27000000>;
62 clock-output-names = "osc_27m";
63 };
64
65 clk_ext1: clock-ext1 {
66 compatible = "fixed-clock";
67 #clock-cells = <0>;
68 clock-frequency = <133000000>;
69 clock-output-names = "clk_ext1";
70 };
71
72 clk_ext2: clock-ext2 {
73 compatible = "fixed-clock";
74 #clock-cells = <0>;
75 clock-frequency = <133000000>;
76 clock-output-names = "clk_ext2";
77 };
78
79 clk_ext3: clock-ext3 {
80 compatible = "fixed-clock";
81 #clock-cells = <0>;
82 clock-frequency = <133000000>;
83 clock-output-names = "clk_ext3";
84 };
85
86 clk_ext4: clock-ext4 {
87 compatible = "fixed-clock";
88 #clock-cells = <0>;
89 clock-frequency= <133000000>;
90 clock-output-names = "clk_ext4";
91 };
92
93 cpus {
94 #address-cells = <1>;
95 #size-cells = <0>;
96
97 A53_0: cpu@0 {
98 device_type = "cpu";
99 compatible = "arm,cortex-a53";
100 reg = <0x0>;
Abel Vesab810641a2019-02-28 21:42:44 +0000101 clock-latency = <61036>; /* two CLK32 periods */
102 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000103 enable-method = "psci";
104 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000105 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800106 #cooling-cells = <2>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000107 nvmem-cells = <&cpu_speed_grade>;
108 nvmem-cell-names = "speed_grade";
Lucas Stach748f9082018-12-09 14:26:07 +0000109 };
110
111 A53_1: cpu@1 {
112 device_type = "cpu";
113 compatible = "arm,cortex-a53";
114 reg = <0x1>;
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_2: cpu@2 {
124 device_type = "cpu";
125 compatible = "arm,cortex-a53";
126 reg = <0x2>;
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_3: cpu@3 {
136 device_type = "cpu";
137 compatible = "arm,cortex-a53";
138 reg = <0x3>;
Abel Vesab810641a2019-02-28 21:42:44 +0000139 clock-latency = <61036>; /* two CLK32 periods */
140 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000141 enable-method = "psci";
142 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000143 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800144 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000145 };
146
147 A53_L2: l2-cache0 {
148 compatible = "cache";
149 };
150 };
151
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300152 a53_opp_table: opp-table {
153 compatible = "operating-points-v2";
154 opp-shared;
155
156 opp-800000000 {
157 opp-hz = /bits/ 64 <800000000>;
158 opp-microvolt = <900000>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000159 /* Industrial only */
160 opp-supported-hw = <0xf>, <0x4>;
161 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800162 opp-suspend;
Leonard Crestez12629c52019-05-13 11:01:43 +0000163 };
164
165 opp-1000000000 {
166 opp-hz = /bits/ 64 <1000000000>;
167 opp-microvolt = <900000>;
168 /* Consumer only */
169 opp-supported-hw = <0xe>, <0x3>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300170 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800171 opp-suspend;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300172 };
173
Lucas Stach8cfd8132019-04-03 18:52:18 +0200174 opp-1300000000 {
175 opp-hz = /bits/ 64 <1300000000>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300176 opp-microvolt = <1000000>;
Anson Huang9eced3a2019-06-29 18:21:57 +0800177 opp-supported-hw = <0xc>, <0x4>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300178 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800179 opp-suspend;
Leonard Crestez12629c52019-05-13 11:01:43 +0000180 };
181
182 opp-1500000000 {
183 opp-hz = /bits/ 64 <1500000000>;
184 opp-microvolt = <1000000>;
Anson Huang9eced3a2019-06-29 18:21:57 +0800185 opp-supported-hw = <0x8>, <0x3>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000186 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800187 opp-suspend;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300188 };
189 };
190
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000191 pmu {
192 compatible = "arm,cortex-a53-pmu";
193 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
194 interrupt-parent = <&gic>;
195 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
196 };
197
Lucas Stach748f9082018-12-09 14:26:07 +0000198 psci {
199 compatible = "arm,psci-1.0";
200 method = "smc";
201 };
202
Fabio Estevamcddbea82019-03-25 12:19:59 -0300203 thermal-zones {
Vitor Massaru Ihac5486812020-03-02 22:15:16 -0300204 cpu_thermal: cpu-thermal {
Fabio Estevamcddbea82019-03-25 12:19:59 -0300205 polling-delay-passive = <250>;
206 polling-delay = <2000>;
207 thermal-sensors = <&tmu 0>;
208
209 trips {
210 cpu_alert: cpu-alert {
211 temperature = <80000>;
212 hysteresis = <2000>;
213 type = "passive";
214 };
215
216 cpu-crit {
217 temperature = <90000>;
218 hysteresis = <2000>;
219 type = "critical";
220 };
221 };
222
223 cooling-maps {
224 map0 {
225 trip = <&cpu_alert>;
226 cooling-device =
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>;
231 };
232 };
233 };
234
235 gpu-thermal {
236 polling-delay-passive = <250>;
237 polling-delay = <2000>;
238 thermal-sensors = <&tmu 1>;
239
240 trips {
Guido Günther9404f2e2019-09-11 19:40:35 -0700241 gpu_alert: gpu-alert {
242 temperature = <80000>;
243 hysteresis = <2000>;
244 type = "passive";
245 };
246
Fabio Estevamcddbea82019-03-25 12:19:59 -0300247 gpu-crit {
248 temperature = <90000>;
249 hysteresis = <2000>;
250 type = "critical";
251 };
252 };
Guido Günther9404f2e2019-09-11 19:40:35 -0700253
254 cooling-maps {
255 map0 {
256 trip = <&gpu_alert>;
257 cooling-device =
258 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
259 };
260 };
Fabio Estevamcddbea82019-03-25 12:19:59 -0300261 };
262
263 vpu-thermal {
264 polling-delay-passive = <250>;
265 polling-delay = <2000>;
266 thermal-sensors = <&tmu 2>;
267
268 trips {
269 vpu-crit {
270 temperature = <90000>;
271 hysteresis = <2000>;
272 type = "critical";
273 };
274 };
275 };
276 };
277
Lucas Stach748f9082018-12-09 14:26:07 +0000278 timer {
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;
286 };
287
288 soc@0 {
289 compatible = "simple-bus";
290 #address-cells = <1>;
291 #size-cells = <1>;
292 ranges = <0x0 0x0 0x0 0x3e000000>;
Lucas Stachca04fed2019-02-08 19:53:49 +0100293 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000294
295 bus@30000000 { /* AIPS1 */
Peng Fandc3efc62020-03-11 15:17:56 +0800296 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300297 reg = <0x30000000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000298 #address-cells = <1>;
299 #size-cells = <1>;
300 ranges = <0x30000000 0x30000000 0x400000>;
301
Lucas Stachfcb19912019-11-27 19:21:26 +0100302 sai1: sai@30010000 {
303 #sound-dai-cells = <0>;
304 compatible = "fsl,imx8mq-sai";
305 reg = <0x30010000 0x10000>;
306 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
307 clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
308 <&clk IMX8MQ_CLK_SAI1_ROOT>,
309 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
310 clock-names = "bus", "mclk1", "mclk2", "mclk3";
311 dmas = <&sdma2 8 24 0>, <&sdma1 9 24 0>;
312 dma-names = "rx", "tx";
313 status = "disabled";
314 };
315
316 sai6: sai@30030000 {
317 #sound-dai-cells = <0>;
318 compatible = "fsl,imx8mq-sai";
319 reg = <0x30030000 0x10000>;
320 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
321 clocks = <&clk IMX8MQ_CLK_SAI6_IPG>,
322 <&clk IMX8MQ_CLK_SAI6_ROOT>,
323 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
324 clock-names = "bus", "mclk1", "mclk2", "mclk3";
325 dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
326 dma-names = "rx", "tx";
327 status = "disabled";
328 };
329
330 sai5: sai@30040000 {
331 #sound-dai-cells = <0>;
332 compatible = "fsl,imx8mq-sai";
333 reg = <0x30040000 0x10000>;
334 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
335 clocks = <&clk IMX8MQ_CLK_SAI5_IPG>,
336 <&clk IMX8MQ_CLK_SAI5_ROOT>,
337 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
338 clock-names = "bus", "mclk1", "mclk2", "mclk3";
339 dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
340 dma-names = "rx", "tx";
341 status = "disabled";
342 };
343
344 sai4: sai@30050000 {
345 #sound-dai-cells = <0>;
346 compatible = "fsl,imx8mq-sai";
347 reg = <0x30050000 0x10000>;
348 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
349 clocks = <&clk IMX8MQ_CLK_SAI4_IPG>,
350 <&clk IMX8MQ_CLK_SAI4_ROOT>,
351 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
352 clock-names = "bus", "mclk1", "mclk2", "mclk3";
353 dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
354 dma-names = "rx", "tx";
355 status = "disabled";
356 };
357
Lucas Stach748f9082018-12-09 14:26:07 +0000358 gpio1: gpio@30200000 {
359 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
360 reg = <0x30200000 0x10000>;
361 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
362 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000363 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000364 gpio-controller;
365 #gpio-cells = <2>;
366 interrupt-controller;
367 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800368 gpio-ranges = <&iomuxc 0 10 30>;
Lucas Stach748f9082018-12-09 14:26:07 +0000369 };
370
371 gpio2: gpio@30210000 {
372 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
373 reg = <0x30210000 0x10000>;
374 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
375 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000376 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000377 gpio-controller;
378 #gpio-cells = <2>;
379 interrupt-controller;
380 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800381 gpio-ranges = <&iomuxc 0 40 21>;
Lucas Stach748f9082018-12-09 14:26:07 +0000382 };
383
384 gpio3: gpio@30220000 {
385 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
386 reg = <0x30220000 0x10000>;
387 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
388 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000389 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000390 gpio-controller;
391 #gpio-cells = <2>;
392 interrupt-controller;
393 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800394 gpio-ranges = <&iomuxc 0 61 26>;
Lucas Stach748f9082018-12-09 14:26:07 +0000395 };
396
397 gpio4: gpio@30230000 {
398 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
399 reg = <0x30230000 0x10000>;
400 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
401 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000402 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000403 gpio-controller;
404 #gpio-cells = <2>;
405 interrupt-controller;
406 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800407 gpio-ranges = <&iomuxc 0 87 32>;
Lucas Stach748f9082018-12-09 14:26:07 +0000408 };
409
410 gpio5: gpio@30240000 {
411 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
412 reg = <0x30240000 0x10000>;
413 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
414 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000415 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000416 gpio-controller;
417 #gpio-cells = <2>;
418 interrupt-controller;
419 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800420 gpio-ranges = <&iomuxc 0 119 30>;
Lucas Stach748f9082018-12-09 14:26:07 +0000421 };
422
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800423 tmu: tmu@30260000 {
424 compatible = "fsl,imx8mq-tmu";
425 reg = <0x30260000 0x10000>;
Krzysztof Kozlowski1f2f98f2020-08-29 13:12:48 +0200426 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang150736b2019-07-05 12:56:12 +0800427 clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800428 little-endian;
429 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
430 fsl,tmu-calibration = <0x00000000 0x00000023
431 0x00000001 0x00000029
432 0x00000002 0x0000002f
433 0x00000003 0x00000035
434 0x00000004 0x0000003d
435 0x00000005 0x00000043
436 0x00000006 0x0000004b
437 0x00000007 0x00000051
438 0x00000008 0x00000057
439 0x00000009 0x0000005f
440 0x0000000a 0x00000067
441 0x0000000b 0x0000006f
442
443 0x00010000 0x0000001b
444 0x00010001 0x00000023
445 0x00010002 0x0000002b
446 0x00010003 0x00000033
447 0x00010004 0x0000003b
448 0x00010005 0x00000043
449 0x00010006 0x0000004b
450 0x00010007 0x00000055
451 0x00010008 0x0000005d
452 0x00010009 0x00000067
453 0x0001000a 0x00000070
454
455 0x00020000 0x00000017
456 0x00020001 0x00000023
457 0x00020002 0x0000002d
458 0x00020003 0x00000037
459 0x00020004 0x00000041
460 0x00020005 0x0000004b
461 0x00020006 0x00000057
462 0x00020007 0x00000063
463 0x00020008 0x0000006f
464
465 0x00030000 0x00000015
466 0x00030001 0x00000021
467 0x00030002 0x0000002d
468 0x00030003 0x00000039
469 0x00030004 0x00000045
470 0x00030005 0x00000053
471 0x00030006 0x0000005f
472 0x00030007 0x00000071>;
473 #thermal-sensor-cells = <1>;
474 };
475
Baruch Siachd3a2d722018-12-09 14:26:10 +0000476 wdog1: watchdog@30280000 {
477 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
478 reg = <0x30280000 0x10000>;
479 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
480 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
481 status = "disabled";
482 };
483
484 wdog2: watchdog@30290000 {
485 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
486 reg = <0x30290000 0x10000>;
487 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
488 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
489 status = "disabled";
490 };
491
492 wdog3: watchdog@302a0000 {
493 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
494 reg = <0x302a0000 0x10000>;
495 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
496 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
497 status = "disabled";
498 };
Lucas Stacha2b91ef2018-12-14 11:55:09 +0100499
Daniel Baluta1474d482019-03-19 17:48:37 +0000500 sdma2: sdma@302c0000 {
501 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
502 reg = <0x302c0000 0x10000>;
503 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
504 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
505 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
506 clock-names = "ipg", "ahb";
507 #dma-cells = <3>;
508 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
509 };
510
Guido Günther1987ddf2019-11-25 15:50:07 +0100511 lcdif: lcd-controller@30320000 {
512 compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif";
513 reg = <0x30320000 0x10000>;
514 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
515 clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
516 clock-names = "pix";
517 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
518 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
519 <&clk IMX8MQ_CLK_LCDIF_PIXEL>,
520 <&clk IMX8MQ_VIDEO_PLL1>;
521 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
522 <&clk IMX8MQ_VIDEO_PLL1>,
523 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
524 assigned-clock-rates = <0>, <0>, <0>, <594000000>;
525 status = "disabled";
526 };
527
Anson Huangc18696d2020-02-26 13:36:17 +0800528 iomuxc: pinctrl@30330000 {
Lucas Stach748f9082018-12-09 14:26:07 +0000529 compatible = "fsl,imx8mq-iomuxc";
530 reg = <0x30330000 0x10000>;
531 };
532
533 iomuxc_gpr: syscon@30340000 {
Guido Günther21570182019-08-22 13:10:23 +0200534 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr",
535 "syscon", "simple-mfd";
Lucas Stach748f9082018-12-09 14:26:07 +0000536 reg = <0x30340000 0x10000>;
Guido Günther21570182019-08-22 13:10:23 +0200537
538 mux: mux-controller {
539 compatible = "mmio-mux";
540 #mux-control-cells = <1>;
541 mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */
542 };
Lucas Stach748f9082018-12-09 14:26:07 +0000543 };
544
Anson Huang12fa1072020-05-28 11:12:48 +0800545 ocotp: efuse@30350000 {
Carlo Caione9e113b22019-02-26 09:04:48 +0000546 compatible = "fsl,imx8mq-ocotp", "syscon";
547 reg = <0x30350000 0x10000>;
548 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
549 #address-cells = <1>;
550 #size-cells = <1>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000551
552 cpu_speed_grade: speed-grade@10 {
553 reg = <0x10 4>;
554 };
Carlo Caione9e113b22019-02-26 09:04:48 +0000555 };
556
Lucas Stach748f9082018-12-09 14:26:07 +0000557 anatop: syscon@30360000 {
558 compatible = "fsl,imx8mq-anatop", "syscon";
559 reg = <0x30360000 0x10000>;
560 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
561 };
562
Abel Vesa3ea95c32019-01-31 15:01:22 +0000563 snvs: snvs@30370000 {
564 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
565 reg = <0x30370000 0x10000>;
566
567 snvs_rtc: snvs-rtc-lp{
568 compatible = "fsl,sec-v4.0-mon-rtc-lp";
569 regmap =<&snvs>;
570 offset = <0x34>;
571 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
572 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang881b54c2019-05-24 13:44:06 +0800573 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
574 clock-names = "snvs-rtc";
Abel Vesa3ea95c32019-01-31 15:01:22 +0000575 };
576
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700577 snvs_pwrkey: snvs-powerkey {
578 compatible = "fsl,sec-v4.0-pwrkey";
579 regmap = <&snvs>;
580 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
André Draszikedd91ba2020-02-25 16:11:59 +0000581 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
582 clock-names = "snvs-pwrkey";
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700583 linux,keycode = <KEY_POWER>;
584 wakeup-source;
585 status = "disabled";
586 };
Abel Vesa3ea95c32019-01-31 15:01:22 +0000587 };
588
Lucas Stach748f9082018-12-09 14:26:07 +0000589 clk: clock-controller@30380000 {
590 compatible = "fsl,imx8mq-ccm";
591 reg = <0x30380000 0x10000>;
592 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
593 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
594 #clock-cells = <1>;
595 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
596 <&clk_ext1>, <&clk_ext2>,
597 <&clk_ext3>, <&clk_ext4>;
598 clock-names = "ckil", "osc_25m", "osc_27m",
599 "clk_ext1", "clk_ext2",
600 "clk_ext3", "clk_ext4";
Peng Fan9e6337e2020-05-07 13:56:10 +0800601 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
602 <&clk IMX8MQ_CLK_A53_CORE>,
603 <&clk IMX8MQ_CLK_NOC>;
604 assigned-clock-rates = <0>, <0>,
605 <800000000>;
606 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
607 <&clk IMX8MQ_ARM_PLL_OUT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000608 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100609
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700610 src: reset-controller@30390000 {
611 compatible = "fsl,imx8mq-src", "syscon";
612 reg = <0x30390000 0x10000>;
Anson Huangd0955f62020-05-09 16:17:50 +0800613 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700614 #reset-cells = <1>;
615 };
616
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100617 gpc: gpc@303a0000 {
618 compatible = "fsl,imx8mq-gpc";
619 reg = <0x303a0000 0x10000>;
Lucas Stachc4121232019-01-25 17:20:33 +0100620 interrupt-parent = <&gic>;
621 interrupt-controller;
622 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100623
624 pgc {
625 #address-cells = <1>;
626 #size-cells = <0>;
627
628 pgc_mipi: power-domain@0 {
629 #power-domain-cells = <0>;
630 reg = <IMX8M_POWER_DOMAIN_MIPI>;
631 };
632
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700633 /*
634 * As per comment in ATF source code:
635 *
636 * PCIE1 and PCIE2 share the
637 * same reset signal, if we
638 * power down PCIE2, PCIE1
639 * will be held in reset too.
640 *
641 * So instead of creating two
642 * separate power domains for
643 * PCIE1 and PCIE2 we create a
644 * link between both and use
645 * it as a shared PCIE power
646 * domain.
647 */
648 pgc_pcie: power-domain@1 {
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100649 #power-domain-cells = <0>;
650 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700651 power-domains = <&pgc_pcie2>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100652 };
653
654 pgc_otg1: power-domain@2 {
655 #power-domain-cells = <0>;
656 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
657 };
658
659 pgc_otg2: power-domain@3 {
660 #power-domain-cells = <0>;
661 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
662 };
663
664 pgc_ddr1: power-domain@4 {
665 #power-domain-cells = <0>;
666 reg = <IMX8M_POWER_DOMAIN_DDR1>;
667 };
668
669 pgc_gpu: power-domain@5 {
670 #power-domain-cells = <0>;
671 reg = <IMX8M_POWER_DOMAIN_GPU>;
672 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
673 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
674 <&clk IMX8MQ_CLK_GPU_AXI>,
675 <&clk IMX8MQ_CLK_GPU_AHB>;
676 };
677
678 pgc_vpu: power-domain@6 {
679 #power-domain-cells = <0>;
680 reg = <IMX8M_POWER_DOMAIN_VPU>;
Philipp Zabel36cebea2020-03-20 14:12:55 +0100681 clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100682 };
683
684 pgc_disp: power-domain@7 {
685 #power-domain-cells = <0>;
686 reg = <IMX8M_POWER_DOMAIN_DISP>;
687 };
688
689 pgc_mipi_csi1: power-domain@8 {
690 #power-domain-cells = <0>;
691 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
692 };
693
694 pgc_mipi_csi2: power-domain@9 {
695 #power-domain-cells = <0>;
696 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
697 };
698
699 pgc_pcie2: power-domain@a {
700 #power-domain-cells = <0>;
701 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
702 };
703 };
704 };
Lucas Stach748f9082018-12-09 14:26:07 +0000705 };
706
707 bus@30400000 { /* AIPS2 */
Peng Fandc3efc62020-03-11 15:17:56 +0800708 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300709 reg = <0x30400000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000710 #address-cells = <1>;
711 #size-cells = <1>;
712 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100713
714 pwm1: pwm@30660000 {
715 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
716 reg = <0x30660000 0x10000>;
717 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
718 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
719 <&clk IMX8MQ_CLK_PWM1_ROOT>;
720 clock-names = "ipg", "per";
721 #pwm-cells = <2>;
722 status = "disabled";
723 };
724
725 pwm2: pwm@30670000 {
726 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
727 reg = <0x30670000 0x10000>;
728 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
729 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
730 <&clk IMX8MQ_CLK_PWM2_ROOT>;
731 clock-names = "ipg", "per";
732 #pwm-cells = <2>;
733 status = "disabled";
734 };
735
736 pwm3: pwm@30680000 {
737 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
738 reg = <0x30680000 0x10000>;
739 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
740 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
741 <&clk IMX8MQ_CLK_PWM3_ROOT>;
742 clock-names = "ipg", "per";
743 #pwm-cells = <2>;
744 status = "disabled";
745 };
746
747 pwm4: pwm@30690000 {
748 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
749 reg = <0x30690000 0x10000>;
750 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
751 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
752 <&clk IMX8MQ_CLK_PWM4_ROOT>;
753 clock-names = "ipg", "per";
754 #pwm-cells = <2>;
755 status = "disabled";
756 };
Anson Huang24e8a5d2019-08-15 20:38:44 -0400757
758 system_counter: timer@306a0000 {
759 compatible = "nxp,sysctr-timer";
760 reg = <0x306a0000 0x20000>;
761 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
762 clocks = <&osc_25m>;
763 clock-names = "per";
764 };
Lucas Stach748f9082018-12-09 14:26:07 +0000765 };
766
767 bus@30800000 { /* AIPS3 */
Peng Fandc3efc62020-03-11 15:17:56 +0800768 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300769 reg = <0x30800000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000770 #address-cells = <1>;
771 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800772 ranges = <0x30800000 0x30800000 0x400000>,
773 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000774
Fabio Estevam85761f42019-01-28 10:08:13 -0200775 ecspi1: spi@30820000 {
776 #address-cells = <1>;
777 #size-cells = <0>;
778 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
779 reg = <0x30820000 0x10000>;
780 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
781 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
782 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
783 clock-names = "ipg", "per";
784 status = "disabled";
785 };
786
787 ecspi2: spi@30830000 {
788 #address-cells = <1>;
789 #size-cells = <0>;
790 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
791 reg = <0x30830000 0x10000>;
792 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
793 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
794 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
795 clock-names = "ipg", "per";
796 status = "disabled";
797 };
798
799 ecspi3: spi@30840000 {
800 #address-cells = <1>;
801 #size-cells = <0>;
802 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
803 reg = <0x30840000 0x10000>;
804 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
805 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
806 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
807 clock-names = "ipg", "per";
808 status = "disabled";
809 };
Lucas Stach748f9082018-12-09 14:26:07 +0000810
811 uart1: serial@30860000 {
812 compatible = "fsl,imx8mq-uart",
813 "fsl,imx6q-uart";
814 reg = <0x30860000 0x10000>;
815 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
816 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
817 <&clk IMX8MQ_CLK_UART1_ROOT>;
818 clock-names = "ipg", "per";
819 status = "disabled";
820 };
821
822 uart3: serial@30880000 {
823 compatible = "fsl,imx8mq-uart",
824 "fsl,imx6q-uart";
825 reg = <0x30880000 0x10000>;
826 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
827 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
828 <&clk IMX8MQ_CLK_UART3_ROOT>;
829 clock-names = "ipg", "per";
830 status = "disabled";
831 };
832
833 uart2: serial@30890000 {
834 compatible = "fsl,imx8mq-uart",
835 "fsl,imx6q-uart";
836 reg = <0x30890000 0x10000>;
837 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
838 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
839 <&clk IMX8MQ_CLK_UART2_ROOT>;
840 clock-names = "ipg", "per";
841 status = "disabled";
842 };
843
Daniel Baluta8c615382019-03-19 17:48:40 +0000844 sai2: sai@308b0000 {
845 #sound-dai-cells = <0>;
Lucas Stach8d014842019-07-17 11:54:36 +0200846 compatible = "fsl,imx8mq-sai";
Daniel Baluta8c615382019-03-19 17:48:40 +0000847 reg = <0x308b0000 0x10000>;
848 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
849 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
850 <&clk IMX8MQ_CLK_SAI2_ROOT>,
851 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
852 clock-names = "bus", "mclk1", "mclk2", "mclk3";
853 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
854 dma-names = "rx", "tx";
855 status = "disabled";
856 };
857
Lucas Stachfcb19912019-11-27 19:21:26 +0100858 sai3: sai@308c0000 {
859 #sound-dai-cells = <0>;
860 compatible = "fsl,imx8mq-sai";
861 reg = <0x308c0000 0x10000>;
862 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
863 clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
864 <&clk IMX8MQ_CLK_SAI3_ROOT>,
865 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
866 clock-names = "bus", "mclk1", "mclk2", "mclk3";
867 dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
868 dma-names = "rx", "tx";
869 status = "disabled";
870 };
871
Andrey Smirnov007b3cf2019-08-30 14:01:39 -0700872 crypto: crypto@30900000 {
873 compatible = "fsl,sec-v4.0";
874 #address-cells = <1>;
875 #size-cells = <1>;
876 reg = <0x30900000 0x40000>;
877 ranges = <0 0x30900000 0x40000>;
878 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
879 clocks = <&clk IMX8MQ_CLK_AHB>,
880 <&clk IMX8MQ_CLK_IPG_ROOT>;
881 clock-names = "aclk", "ipg";
882
883 sec_jr0: jr@1000 {
884 compatible = "fsl,sec-v4.0-job-ring";
885 reg = <0x1000 0x1000>;
886 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
887 };
888
889 sec_jr1: jr@2000 {
890 compatible = "fsl,sec-v4.0-job-ring";
891 reg = <0x2000 0x1000>;
892 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
893 };
894
895 sec_jr2: jr@3000 {
896 compatible = "fsl,sec-v4.0-job-ring";
897 reg = <0x3000 0x1000>;
898 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
899 };
900 };
901
Guido Günthera99b26b2019-06-25 10:27:20 +0200902 dphy: dphy@30a00300 {
903 compatible = "fsl,imx8mq-mipi-dphy";
904 reg = <0x30a00300 0x100>;
905 clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
906 clock-names = "phy_ref";
907 assigned-clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
908 assigned-clock-parents = <&clk IMX8MQ_VIDEO_PLL1_OUT>;
909 assigned-clock-rates = <24000000>;
910 #phy-cells = <0>;
911 power-domains = <&pgc_mipi>;
912 status = "disabled";
913 };
914
Lucas Stach748f9082018-12-09 14:26:07 +0000915 i2c1: i2c@30a20000 {
916 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
917 reg = <0x30a20000 0x10000>;
918 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
919 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
920 #address-cells = <1>;
921 #size-cells = <0>;
922 status = "disabled";
923 };
924
925 i2c2: i2c@30a30000 {
926 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
927 reg = <0x30a30000 0x10000>;
928 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
929 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
930 #address-cells = <1>;
931 #size-cells = <0>;
932 status = "disabled";
933 };
934
935 i2c3: i2c@30a40000 {
936 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
937 reg = <0x30a40000 0x10000>;
938 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
939 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
940 #address-cells = <1>;
941 #size-cells = <0>;
942 status = "disabled";
943 };
944
945 i2c4: i2c@30a50000 {
946 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
947 reg = <0x30a50000 0x10000>;
948 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
949 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
950 #address-cells = <1>;
951 #size-cells = <0>;
952 status = "disabled";
953 };
954
955 uart4: serial@30a60000 {
956 compatible = "fsl,imx8mq-uart",
957 "fsl,imx6q-uart";
958 reg = <0x30a60000 0x10000>;
959 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
960 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
961 <&clk IMX8MQ_CLK_UART4_ROOT>;
962 clock-names = "ipg", "per";
963 status = "disabled";
964 };
965
Peng Fanbbfc59b2020-06-01 16:20:01 +0800966 mu: mailbox@30aa0000 {
967 compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
968 reg = <0x30aa0000 0x10000>;
969 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
970 clocks = <&clk IMX8MQ_CLK_MU_ROOT>;
971 #mbox-cells = <2>;
972 };
973
Lucas Stach748f9082018-12-09 14:26:07 +0000974 usdhc1: mmc@30b40000 {
975 compatible = "fsl,imx8mq-usdhc",
976 "fsl,imx7d-usdhc";
977 reg = <0x30b40000 0x10000>;
978 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +0800979 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +0000980 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
981 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
982 clock-names = "ipg", "ahb", "per";
Lucas Stach748f9082018-12-09 14:26:07 +0000983 fsl,tuning-start-tap = <20>;
984 fsl,tuning-step = <2>;
985 bus-width = <4>;
986 status = "disabled";
987 };
988
989 usdhc2: mmc@30b50000 {
990 compatible = "fsl,imx8mq-usdhc",
991 "fsl,imx7d-usdhc";
992 reg = <0x30b50000 0x10000>;
993 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +0800994 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +0000995 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
996 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
997 clock-names = "ipg", "ahb", "per";
998 fsl,tuning-start-tap = <20>;
999 fsl,tuning-step = <2>;
1000 bus-width = <4>;
1001 status = "disabled";
1002 };
1003
Carlo Caione39f16222019-02-11 09:53:35 +08001004 qspi0: spi@30bb0000 {
1005 #address-cells = <1>;
1006 #size-cells = <0>;
1007 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
1008 reg = <0x30bb0000 0x10000>,
1009 <0x08000000 0x10000000>;
1010 reg-names = "QuadSPI", "QuadSPI-memory";
1011 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1012 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1013 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1014 clock-names = "qspi_en", "qspi";
1015 status = "disabled";
1016 };
1017
Daniel Baluta1474d482019-03-19 17:48:37 +00001018 sdma1: sdma@30bd0000 {
Angus Ainslie (Purism)b6c846b2019-03-29 08:21:28 -07001019 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
Daniel Baluta1474d482019-03-19 17:48:37 +00001020 reg = <0x30bd0000 0x10000>;
1021 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1022 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
Angus Ainslie (Purism)7240d7d2019-03-29 08:21:30 -07001023 <&clk IMX8MQ_CLK_AHB>;
Daniel Baluta1474d482019-03-19 17:48:37 +00001024 clock-names = "ipg", "ahb";
1025 #dma-cells = <3>;
1026 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1027 };
1028
Lucas Stach748f9082018-12-09 14:26:07 +00001029 fec1: ethernet@30be0000 {
1030 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1031 reg = <0x30be0000 0x10000>;
1032 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1033 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
1034 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
1035 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1036 <&clk IMX8MQ_CLK_ENET1_ROOT>,
1037 <&clk IMX8MQ_CLK_ENET_TIMER>,
1038 <&clk IMX8MQ_CLK_ENET_REF>,
1039 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1040 clock-names = "ipg", "ahb", "ptp",
1041 "enet_clk_ref", "enet_out";
1042 fsl,num-tx-queues = <3>;
1043 fsl,num-rx-queues = <3>;
1044 status = "disabled";
1045 };
1046 };
1047
Guido Günther4af3cfe2019-04-30 19:15:55 +02001048 bus@32c00000 { /* AIPS4 */
Peng Fandc3efc62020-03-11 15:17:56 +08001049 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -03001050 reg = <0x32c00000 0x400000>;
Guido Günther4af3cfe2019-04-30 19:15:55 +02001051 #address-cells = <1>;
1052 #size-cells = <1>;
1053 ranges = <0x32c00000 0x32c00000 0x400000>;
1054
1055 irqsteer: interrupt-controller@32e2d000 {
1056 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1057 reg = <0x32e2d000 0x1000>;
1058 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1059 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1060 clock-names = "ipg";
1061 fsl,channel = <0>;
1062 fsl,num-irqs = <64>;
1063 interrupt-controller;
1064 #interrupt-cells = <1>;
1065 };
1066 };
1067
Lucas Stach45d2c842019-04-04 18:52:11 +02001068 gpu: gpu@38000000 {
1069 compatible = "vivante,gc";
1070 reg = <0x38000000 0x40000>;
1071 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1072 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1073 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1074 <&clk IMX8MQ_CLK_GPU_AXI>,
1075 <&clk IMX8MQ_CLK_GPU_AHB>;
1076 clock-names = "core", "shader", "bus", "reg";
Guido Günther9404f2e2019-09-11 19:40:35 -07001077 #cooling-cells = <2>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001078 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1079 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1080 <&clk IMX8MQ_CLK_GPU_AXI>,
Lucas Stachade5a572019-04-15 15:59:22 +02001081 <&clk IMX8MQ_CLK_GPU_AHB>,
1082 <&clk IMX8MQ_GPU_PLL_BYPASS>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001083 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1084 <&clk IMX8MQ_GPU_PLL_OUT>,
1085 <&clk IMX8MQ_GPU_PLL_OUT>,
Lucas Stachade5a572019-04-15 15:59:22 +02001086 <&clk IMX8MQ_GPU_PLL_OUT>,
1087 <&clk IMX8MQ_GPU_PLL>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001088 assigned-clock-rates = <800000000>, <800000000>,
Lucas Stachade5a572019-04-15 15:59:22 +02001089 <800000000>, <800000000>, <0>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001090 power-domains = <&pgc_gpu>;
1091 };
1092
Lucas Stachad375492019-01-25 17:25:58 +01001093 usb_dwc3_0: usb@38100000 {
1094 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1095 reg = <0x38100000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001096 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001097 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001098 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001099 clock-names = "bus_early", "ref", "suspend";
1100 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1101 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1102 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1103 <&clk IMX8MQ_SYS1_PLL_100M>;
1104 assigned-clock-rates = <500000000>, <100000000>;
1105 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1106 phys = <&usb3_phy0>, <&usb3_phy0>;
1107 phy-names = "usb2-phy", "usb3-phy";
1108 power-domains = <&pgc_otg1>;
1109 usb3-resume-missing-cas;
1110 status = "disabled";
1111 };
1112
1113 usb3_phy0: usb-phy@381f0040 {
1114 compatible = "fsl,imx8mq-usb-phy";
1115 reg = <0x381f0040 0x40>;
1116 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1117 clock-names = "phy";
1118 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1119 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1120 assigned-clock-rates = <100000000>;
1121 #phy-cells = <0>;
1122 status = "disabled";
1123 };
1124
1125 usb_dwc3_1: usb@38200000 {
1126 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1127 reg = <0x38200000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001128 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001129 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001130 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001131 clock-names = "bus_early", "ref", "suspend";
1132 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1133 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1134 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1135 <&clk IMX8MQ_SYS1_PLL_100M>;
1136 assigned-clock-rates = <500000000>, <100000000>;
1137 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1138 phys = <&usb3_phy1>, <&usb3_phy1>;
1139 phy-names = "usb2-phy", "usb3-phy";
1140 power-domains = <&pgc_otg2>;
1141 usb3-resume-missing-cas;
1142 status = "disabled";
1143 };
1144
1145 usb3_phy1: usb-phy@382f0040 {
1146 compatible = "fsl,imx8mq-usb-phy";
1147 reg = <0x382f0040 0x40>;
1148 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1149 clock-names = "phy";
1150 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1151 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1152 assigned-clock-rates = <100000000>;
1153 #phy-cells = <0>;
1154 status = "disabled";
1155 };
1156
Philipp Zabel36cebea2020-03-20 14:12:55 +01001157 vpu: video-codec@38300000 {
1158 compatible = "nxp,imx8mq-vpu";
1159 reg = <0x38300000 0x10000>,
1160 <0x38310000 0x10000>,
1161 <0x38320000 0x10000>;
1162 reg-names = "g1", "g2", "ctrl";
1163 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1164 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1165 interrupt-names = "g1", "g2";
1166 clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>,
1167 <&clk IMX8MQ_CLK_VPU_G2_ROOT>,
1168 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
1169 clock-names = "g1", "g2", "bus";
1170 assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>,
1171 <&clk IMX8MQ_CLK_VPU_G2>,
1172 <&clk IMX8MQ_CLK_VPU_BUS>,
1173 <&clk IMX8MQ_VPU_PLL_BYPASS>;
1174 assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>,
1175 <&clk IMX8MQ_VPU_PLL_OUT>,
1176 <&clk IMX8MQ_SYS1_PLL_800M>,
1177 <&clk IMX8MQ_VPU_PLL>;
1178 assigned-clock-rates = <600000000>, <600000000>,
1179 <800000000>, <0>;
1180 power-domains = <&pgc_vpu>;
1181 };
1182
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001183 pcie0: pcie@33800000 {
1184 compatible = "fsl,imx8mq-pcie";
1185 reg = <0x33800000 0x400000>,
1186 <0x1ff00000 0x80000>;
1187 reg-names = "dbi", "config";
1188 #address-cells = <3>;
1189 #size-cells = <2>;
1190 device_type = "pci";
1191 bus-range = <0x00 0xff>;
1192 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
1193 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
1194 num-lanes = <1>;
1195 num-viewport = <4>;
1196 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1197 interrupt-names = "msi";
1198 #interrupt-cells = <1>;
1199 interrupt-map-mask = <0 0 0 0x7>;
1200 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1201 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1202 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1203 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1204 fsl,max-link-speed = <2>;
1205 power-domains = <&pgc_pcie>;
1206 resets = <&src IMX8MQ_RESET_PCIEPHY>,
1207 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1208 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1209 reset-names = "pciephy", "apps", "turnoff";
1210 status = "disabled";
1211 };
1212
1213 pcie1: pcie@33c00000 {
1214 compatible = "fsl,imx8mq-pcie";
1215 reg = <0x33c00000 0x400000>,
1216 <0x27f00000 0x80000>;
1217 reg-names = "dbi", "config";
1218 #address-cells = <3>;
1219 #size-cells = <2>;
1220 device_type = "pci";
1221 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
1222 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
1223 num-lanes = <1>;
1224 num-viewport = <4>;
1225 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1226 interrupt-names = "msi";
1227 #interrupt-cells = <1>;
1228 interrupt-map-mask = <0 0 0 0x7>;
1229 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1230 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1231 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1232 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1233 fsl,max-link-speed = <2>;
1234 power-domains = <&pgc_pcie>;
1235 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1236 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1237 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1238 reset-names = "pciephy", "apps", "turnoff";
1239 status = "disabled";
1240 };
1241
Lucas Stach748f9082018-12-09 14:26:07 +00001242 gic: interrupt-controller@38800000 {
1243 compatible = "arm,gic-v3";
1244 reg = <0x38800000 0x10000>, /* GIC Dist */
1245 <0x38880000 0xc0000>, /* GICR */
1246 <0x31000000 0x2000>, /* GICC */
1247 <0x31010000 0x2000>, /* GICV */
1248 <0x31020000 0x2000>; /* GICH */
1249 #interrupt-cells = <3>;
1250 interrupt-controller;
1251 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1252 interrupt-parent = <&gic>;
1253 };
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001254
Leonard Crestez0376f6e2019-11-22 23:45:04 +02001255 ddrc: memory-controller@3d400000 {
1256 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1257 reg = <0x3d400000 0x400000>;
1258 clock-names = "core", "pll", "alt", "apb";
1259 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1260 <&clk IMX8MQ_DRAM_PLL_OUT>,
1261 <&clk IMX8MQ_CLK_DRAM_ALT>,
1262 <&clk IMX8MQ_CLK_DRAM_APB>;
1263 };
1264
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001265 ddr-pmu@3d800000 {
1266 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1267 reg = <0x3d800000 0x400000>;
1268 interrupt-parent = <&gic>;
1269 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1270 };
Lucas Stach748f9082018-12-09 14:26:07 +00001271 };
1272};