blob: 4ef8c92403dd34a6bfe0ca15f42e0220dc5ce668 [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>
Martin Kepplingerad1abc82021-01-07 13:17:53 +010014#include <dt-bindings/interconnect/imx8mq.h>
Lucas Stach748f9082018-12-09 14:26:07 +000015#include "imx8mq-pinfunc.h"
16
17/ {
Lucas Stachc4121232019-01-25 17:20:33 +010018 interrupt-parent = <&gpc>;
Lucas Stach748f9082018-12-09 14:26:07 +000019
20 #address-cells = <2>;
21 #size-cells = <2>;
22
23 aliases {
Peng Fan614d88462020-05-20 10:02:44 +080024 ethernet0 = &fec1;
Anson Huang1f370972019-05-21 08:15:26 +000025 gpio0 = &gpio1;
26 gpio1 = &gpio2;
27 gpio2 = &gpio3;
28 gpio3 = &gpio4;
29 gpio4 = &gpio5;
Lucas Stach748f9082018-12-09 14:26:07 +000030 i2c0 = &i2c1;
31 i2c1 = &i2c2;
32 i2c2 = &i2c3;
33 i2c3 = &i2c4;
Peng Fane9a8d992020-05-20 10:02:43 +080034 mmc0 = &usdhc1;
35 mmc1 = &usdhc2;
Lucas Stach748f9082018-12-09 14:26:07 +000036 serial0 = &uart1;
37 serial1 = &uart2;
38 serial2 = &uart3;
39 serial3 = &uart4;
Fabio Estevam85761f42019-01-28 10:08:13 -020040 spi0 = &ecspi1;
41 spi1 = &ecspi2;
42 spi2 = &ecspi3;
Lucas Stach748f9082018-12-09 14:26:07 +000043 };
44
45 ckil: clock-ckil {
46 compatible = "fixed-clock";
47 #clock-cells = <0>;
48 clock-frequency = <32768>;
49 clock-output-names = "ckil";
50 };
51
52 osc_25m: clock-osc-25m {
53 compatible = "fixed-clock";
54 #clock-cells = <0>;
55 clock-frequency = <25000000>;
56 clock-output-names = "osc_25m";
57 };
58
59 osc_27m: clock-osc-27m {
60 compatible = "fixed-clock";
61 #clock-cells = <0>;
62 clock-frequency = <27000000>;
63 clock-output-names = "osc_27m";
64 };
65
66 clk_ext1: clock-ext1 {
67 compatible = "fixed-clock";
68 #clock-cells = <0>;
69 clock-frequency = <133000000>;
70 clock-output-names = "clk_ext1";
71 };
72
73 clk_ext2: clock-ext2 {
74 compatible = "fixed-clock";
75 #clock-cells = <0>;
76 clock-frequency = <133000000>;
77 clock-output-names = "clk_ext2";
78 };
79
80 clk_ext3: clock-ext3 {
81 compatible = "fixed-clock";
82 #clock-cells = <0>;
83 clock-frequency = <133000000>;
84 clock-output-names = "clk_ext3";
85 };
86
87 clk_ext4: clock-ext4 {
88 compatible = "fixed-clock";
89 #clock-cells = <0>;
90 clock-frequency= <133000000>;
91 clock-output-names = "clk_ext4";
92 };
93
94 cpus {
95 #address-cells = <1>;
96 #size-cells = <0>;
97
98 A53_0: cpu@0 {
99 device_type = "cpu";
100 compatible = "arm,cortex-a53";
101 reg = <0x0>;
Abel Vesab810641a2019-02-28 21:42:44 +0000102 clock-latency = <61036>; /* two CLK32 periods */
103 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000104 enable-method = "psci";
105 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000106 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800107 #cooling-cells = <2>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000108 nvmem-cells = <&cpu_speed_grade>;
109 nvmem-cell-names = "speed_grade";
Lucas Stach748f9082018-12-09 14:26:07 +0000110 };
111
112 A53_1: cpu@1 {
113 device_type = "cpu";
114 compatible = "arm,cortex-a53";
115 reg = <0x1>;
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_2: cpu@2 {
125 device_type = "cpu";
126 compatible = "arm,cortex-a53";
127 reg = <0x2>;
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_3: cpu@3 {
137 device_type = "cpu";
138 compatible = "arm,cortex-a53";
139 reg = <0x3>;
Abel Vesab810641a2019-02-28 21:42:44 +0000140 clock-latency = <61036>; /* two CLK32 periods */
141 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000142 enable-method = "psci";
143 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000144 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800145 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000146 };
147
148 A53_L2: l2-cache0 {
149 compatible = "cache";
150 };
151 };
152
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300153 a53_opp_table: opp-table {
154 compatible = "operating-points-v2";
155 opp-shared;
156
157 opp-800000000 {
158 opp-hz = /bits/ 64 <800000000>;
159 opp-microvolt = <900000>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000160 /* Industrial only */
161 opp-supported-hw = <0xf>, <0x4>;
162 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800163 opp-suspend;
Leonard Crestez12629c52019-05-13 11:01:43 +0000164 };
165
166 opp-1000000000 {
167 opp-hz = /bits/ 64 <1000000000>;
168 opp-microvolt = <900000>;
169 /* Consumer only */
170 opp-supported-hw = <0xe>, <0x3>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300171 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800172 opp-suspend;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300173 };
174
Lucas Stach8cfd8132019-04-03 18:52:18 +0200175 opp-1300000000 {
176 opp-hz = /bits/ 64 <1300000000>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300177 opp-microvolt = <1000000>;
Anson Huang9eced3a2019-06-29 18:21:57 +0800178 opp-supported-hw = <0xc>, <0x4>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300179 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800180 opp-suspend;
Leonard Crestez12629c52019-05-13 11:01:43 +0000181 };
182
183 opp-1500000000 {
184 opp-hz = /bits/ 64 <1500000000>;
185 opp-microvolt = <1000000>;
Anson Huang9eced3a2019-06-29 18:21:57 +0800186 opp-supported-hw = <0x8>, <0x3>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000187 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800188 opp-suspend;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300189 };
190 };
191
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000192 pmu {
193 compatible = "arm,cortex-a53-pmu";
194 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
195 interrupt-parent = <&gic>;
196 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
197 };
198
Lucas Stach748f9082018-12-09 14:26:07 +0000199 psci {
200 compatible = "arm,psci-1.0";
201 method = "smc";
202 };
203
Fabio Estevamcddbea82019-03-25 12:19:59 -0300204 thermal-zones {
Vitor Massaru Ihac5486812020-03-02 22:15:16 -0300205 cpu_thermal: cpu-thermal {
Fabio Estevamcddbea82019-03-25 12:19:59 -0300206 polling-delay-passive = <250>;
207 polling-delay = <2000>;
208 thermal-sensors = <&tmu 0>;
209
210 trips {
211 cpu_alert: cpu-alert {
212 temperature = <80000>;
213 hysteresis = <2000>;
214 type = "passive";
215 };
216
217 cpu-crit {
218 temperature = <90000>;
219 hysteresis = <2000>;
220 type = "critical";
221 };
222 };
223
224 cooling-maps {
225 map0 {
226 trip = <&cpu_alert>;
227 cooling-device =
228 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
229 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
230 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
231 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
232 };
233 };
234 };
235
236 gpu-thermal {
237 polling-delay-passive = <250>;
238 polling-delay = <2000>;
239 thermal-sensors = <&tmu 1>;
240
241 trips {
Guido Günther9404f2e2019-09-11 19:40:35 -0700242 gpu_alert: gpu-alert {
243 temperature = <80000>;
244 hysteresis = <2000>;
245 type = "passive";
246 };
247
Fabio Estevamcddbea82019-03-25 12:19:59 -0300248 gpu-crit {
249 temperature = <90000>;
250 hysteresis = <2000>;
251 type = "critical";
252 };
253 };
Guido Günther9404f2e2019-09-11 19:40:35 -0700254
255 cooling-maps {
256 map0 {
257 trip = <&gpu_alert>;
258 cooling-device =
259 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
260 };
261 };
Fabio Estevamcddbea82019-03-25 12:19:59 -0300262 };
263
264 vpu-thermal {
265 polling-delay-passive = <250>;
266 polling-delay = <2000>;
267 thermal-sensors = <&tmu 2>;
268
269 trips {
270 vpu-crit {
271 temperature = <90000>;
272 hysteresis = <2000>;
273 type = "critical";
274 };
275 };
276 };
277 };
278
Lucas Stach748f9082018-12-09 14:26:07 +0000279 timer {
280 compatible = "arm,armv8-timer";
281 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
282 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
283 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
284 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
285 interrupt-parent = <&gic>;
286 arm,no-tick-in-suspend;
287 };
288
289 soc@0 {
Alice Guoce584592021-01-04 17:15:42 +0800290 compatible = "fsl,imx8mq-soc", "simple-bus";
Lucas Stach748f9082018-12-09 14:26:07 +0000291 #address-cells = <1>;
292 #size-cells = <1>;
293 ranges = <0x0 0x0 0x0 0x3e000000>;
Lucas Stachca04fed2019-02-08 19:53:49 +0100294 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
Alice Guocbff2372021-01-04 17:15:43 +0800295 nvmem-cells = <&imx8mq_uid>;
296 nvmem-cell-names = "soc_unique_id";
Lucas Stach748f9082018-12-09 14:26:07 +0000297
298 bus@30000000 { /* AIPS1 */
Peng Fandc3efc62020-03-11 15:17:56 +0800299 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300300 reg = <0x30000000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000301 #address-cells = <1>;
302 #size-cells = <1>;
303 ranges = <0x30000000 0x30000000 0x400000>;
304
Lucas Stachfcb19912019-11-27 19:21:26 +0100305 sai1: sai@30010000 {
306 #sound-dai-cells = <0>;
307 compatible = "fsl,imx8mq-sai";
308 reg = <0x30010000 0x10000>;
309 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
310 clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
311 <&clk IMX8MQ_CLK_SAI1_ROOT>,
312 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
313 clock-names = "bus", "mclk1", "mclk2", "mclk3";
314 dmas = <&sdma2 8 24 0>, <&sdma1 9 24 0>;
315 dma-names = "rx", "tx";
316 status = "disabled";
317 };
318
319 sai6: sai@30030000 {
320 #sound-dai-cells = <0>;
321 compatible = "fsl,imx8mq-sai";
322 reg = <0x30030000 0x10000>;
323 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
324 clocks = <&clk IMX8MQ_CLK_SAI6_IPG>,
325 <&clk IMX8MQ_CLK_SAI6_ROOT>,
326 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
327 clock-names = "bus", "mclk1", "mclk2", "mclk3";
328 dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
329 dma-names = "rx", "tx";
330 status = "disabled";
331 };
332
333 sai5: sai@30040000 {
334 #sound-dai-cells = <0>;
335 compatible = "fsl,imx8mq-sai";
336 reg = <0x30040000 0x10000>;
337 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
338 clocks = <&clk IMX8MQ_CLK_SAI5_IPG>,
339 <&clk IMX8MQ_CLK_SAI5_ROOT>,
340 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
341 clock-names = "bus", "mclk1", "mclk2", "mclk3";
342 dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
343 dma-names = "rx", "tx";
344 status = "disabled";
345 };
346
347 sai4: sai@30050000 {
348 #sound-dai-cells = <0>;
349 compatible = "fsl,imx8mq-sai";
350 reg = <0x30050000 0x10000>;
351 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
352 clocks = <&clk IMX8MQ_CLK_SAI4_IPG>,
353 <&clk IMX8MQ_CLK_SAI4_ROOT>,
354 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
355 clock-names = "bus", "mclk1", "mclk2", "mclk3";
356 dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
357 dma-names = "rx", "tx";
358 status = "disabled";
359 };
360
Lucas Stach748f9082018-12-09 14:26:07 +0000361 gpio1: gpio@30200000 {
362 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
363 reg = <0x30200000 0x10000>;
364 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
365 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000366 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000367 gpio-controller;
368 #gpio-cells = <2>;
369 interrupt-controller;
370 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800371 gpio-ranges = <&iomuxc 0 10 30>;
Lucas Stach748f9082018-12-09 14:26:07 +0000372 };
373
374 gpio2: gpio@30210000 {
375 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
376 reg = <0x30210000 0x10000>;
377 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
378 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000379 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000380 gpio-controller;
381 #gpio-cells = <2>;
382 interrupt-controller;
383 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800384 gpio-ranges = <&iomuxc 0 40 21>;
Lucas Stach748f9082018-12-09 14:26:07 +0000385 };
386
387 gpio3: gpio@30220000 {
388 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
389 reg = <0x30220000 0x10000>;
390 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
391 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000392 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000393 gpio-controller;
394 #gpio-cells = <2>;
395 interrupt-controller;
396 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800397 gpio-ranges = <&iomuxc 0 61 26>;
Lucas Stach748f9082018-12-09 14:26:07 +0000398 };
399
400 gpio4: gpio@30230000 {
401 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
402 reg = <0x30230000 0x10000>;
403 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
404 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000405 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000406 gpio-controller;
407 #gpio-cells = <2>;
408 interrupt-controller;
409 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800410 gpio-ranges = <&iomuxc 0 87 32>;
Lucas Stach748f9082018-12-09 14:26:07 +0000411 };
412
413 gpio5: gpio@30240000 {
414 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
415 reg = <0x30240000 0x10000>;
416 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
417 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000418 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000419 gpio-controller;
420 #gpio-cells = <2>;
421 interrupt-controller;
422 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800423 gpio-ranges = <&iomuxc 0 119 30>;
Lucas Stach748f9082018-12-09 14:26:07 +0000424 };
425
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800426 tmu: tmu@30260000 {
427 compatible = "fsl,imx8mq-tmu";
428 reg = <0x30260000 0x10000>;
Krzysztof Kozlowski1f2f98f2020-08-29 13:12:48 +0200429 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang150736b2019-07-05 12:56:12 +0800430 clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800431 little-endian;
432 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
433 fsl,tmu-calibration = <0x00000000 0x00000023
434 0x00000001 0x00000029
435 0x00000002 0x0000002f
436 0x00000003 0x00000035
437 0x00000004 0x0000003d
438 0x00000005 0x00000043
439 0x00000006 0x0000004b
440 0x00000007 0x00000051
441 0x00000008 0x00000057
442 0x00000009 0x0000005f
443 0x0000000a 0x00000067
444 0x0000000b 0x0000006f
445
446 0x00010000 0x0000001b
447 0x00010001 0x00000023
448 0x00010002 0x0000002b
449 0x00010003 0x00000033
450 0x00010004 0x0000003b
451 0x00010005 0x00000043
452 0x00010006 0x0000004b
453 0x00010007 0x00000055
454 0x00010008 0x0000005d
455 0x00010009 0x00000067
456 0x0001000a 0x00000070
457
458 0x00020000 0x00000017
459 0x00020001 0x00000023
460 0x00020002 0x0000002d
461 0x00020003 0x00000037
462 0x00020004 0x00000041
463 0x00020005 0x0000004b
464 0x00020006 0x00000057
465 0x00020007 0x00000063
466 0x00020008 0x0000006f
467
468 0x00030000 0x00000015
469 0x00030001 0x00000021
470 0x00030002 0x0000002d
471 0x00030003 0x00000039
472 0x00030004 0x00000045
473 0x00030005 0x00000053
474 0x00030006 0x0000005f
475 0x00030007 0x00000071>;
476 #thermal-sensor-cells = <1>;
477 };
478
Baruch Siachd3a2d722018-12-09 14:26:10 +0000479 wdog1: watchdog@30280000 {
480 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
481 reg = <0x30280000 0x10000>;
482 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
483 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
484 status = "disabled";
485 };
486
487 wdog2: watchdog@30290000 {
488 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
489 reg = <0x30290000 0x10000>;
490 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
491 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
492 status = "disabled";
493 };
494
495 wdog3: watchdog@302a0000 {
496 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
497 reg = <0x302a0000 0x10000>;
498 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
499 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
500 status = "disabled";
501 };
Lucas Stacha2b91ef2018-12-14 11:55:09 +0100502
Daniel Baluta1474d482019-03-19 17:48:37 +0000503 sdma2: sdma@302c0000 {
504 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
505 reg = <0x302c0000 0x10000>;
506 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
507 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
508 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
509 clock-names = "ipg", "ahb";
510 #dma-cells = <3>;
511 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
512 };
513
Guido Günther1987ddf2019-11-25 15:50:07 +0100514 lcdif: lcd-controller@30320000 {
515 compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif";
516 reg = <0x30320000 0x10000>;
517 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
518 clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
519 clock-names = "pix";
520 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
521 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
522 <&clk IMX8MQ_CLK_LCDIF_PIXEL>,
523 <&clk IMX8MQ_VIDEO_PLL1>;
524 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
525 <&clk IMX8MQ_VIDEO_PLL1>,
526 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
527 assigned-clock-rates = <0>, <0>, <0>, <594000000>;
Martin Kepplingerad1abc82021-01-07 13:17:53 +0100528 interconnects = <&noc IMX8MQ_ICM_LCDIF &noc IMX8MQ_ICS_DRAM>;
529 interconnect-names = "dram";
Guido Günther1987ddf2019-11-25 15:50:07 +0100530 status = "disabled";
Guido Güntherd0081bd2020-08-20 10:50:56 +0200531
532 port@0 {
533 lcdif_mipi_dsi: endpoint {
534 remote-endpoint = <&mipi_dsi_lcdif_in>;
535 };
536 };
Guido Günther1987ddf2019-11-25 15:50:07 +0100537 };
538
Anson Huangc18696d2020-02-26 13:36:17 +0800539 iomuxc: pinctrl@30330000 {
Lucas Stach748f9082018-12-09 14:26:07 +0000540 compatible = "fsl,imx8mq-iomuxc";
541 reg = <0x30330000 0x10000>;
542 };
543
544 iomuxc_gpr: syscon@30340000 {
Guido Günther21570182019-08-22 13:10:23 +0200545 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr",
546 "syscon", "simple-mfd";
Lucas Stach748f9082018-12-09 14:26:07 +0000547 reg = <0x30340000 0x10000>;
Guido Günther21570182019-08-22 13:10:23 +0200548
549 mux: mux-controller {
550 compatible = "mmio-mux";
551 #mux-control-cells = <1>;
552 mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */
553 };
Lucas Stach748f9082018-12-09 14:26:07 +0000554 };
555
Anson Huang12fa1072020-05-28 11:12:48 +0800556 ocotp: efuse@30350000 {
Carlo Caione9e113b22019-02-26 09:04:48 +0000557 compatible = "fsl,imx8mq-ocotp", "syscon";
558 reg = <0x30350000 0x10000>;
559 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
560 #address-cells = <1>;
561 #size-cells = <1>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000562
Alice Guocbff2372021-01-04 17:15:43 +0800563 imx8mq_uid: soc-uid@410 {
564 reg = <0x4 0x8>;
565 };
566
Leonard Crestez12629c52019-05-13 11:01:43 +0000567 cpu_speed_grade: speed-grade@10 {
568 reg = <0x10 4>;
569 };
Carlo Caione9e113b22019-02-26 09:04:48 +0000570 };
571
Lucas Stach748f9082018-12-09 14:26:07 +0000572 anatop: syscon@30360000 {
573 compatible = "fsl,imx8mq-anatop", "syscon";
574 reg = <0x30360000 0x10000>;
575 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
576 };
577
Abel Vesa3ea95c32019-01-31 15:01:22 +0000578 snvs: snvs@30370000 {
579 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
580 reg = <0x30370000 0x10000>;
581
582 snvs_rtc: snvs-rtc-lp{
583 compatible = "fsl,sec-v4.0-mon-rtc-lp";
584 regmap =<&snvs>;
585 offset = <0x34>;
586 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
587 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang881b54c2019-05-24 13:44:06 +0800588 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
589 clock-names = "snvs-rtc";
Abel Vesa3ea95c32019-01-31 15:01:22 +0000590 };
591
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700592 snvs_pwrkey: snvs-powerkey {
593 compatible = "fsl,sec-v4.0-pwrkey";
594 regmap = <&snvs>;
595 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
André Draszikedd91ba2020-02-25 16:11:59 +0000596 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
597 clock-names = "snvs-pwrkey";
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700598 linux,keycode = <KEY_POWER>;
599 wakeup-source;
600 status = "disabled";
601 };
Abel Vesa3ea95c32019-01-31 15:01:22 +0000602 };
603
Lucas Stach748f9082018-12-09 14:26:07 +0000604 clk: clock-controller@30380000 {
605 compatible = "fsl,imx8mq-ccm";
606 reg = <0x30380000 0x10000>;
607 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
608 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
609 #clock-cells = <1>;
610 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
611 <&clk_ext1>, <&clk_ext2>,
612 <&clk_ext3>, <&clk_ext4>;
613 clock-names = "ckil", "osc_25m", "osc_27m",
614 "clk_ext1", "clk_ext2",
615 "clk_ext3", "clk_ext4";
Peng Fan9e6337e2020-05-07 13:56:10 +0800616 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
617 <&clk IMX8MQ_CLK_A53_CORE>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800618 <&clk IMX8MQ_CLK_NOC>,
619 <&clk IMX8MQ_CLK_AUDIO_AHB>,
620 <&clk IMX8MQ_AUDIO_PLL1_BYPASS>,
621 <&clk IMX8MQ_AUDIO_PLL2_BYPASS>,
622 <&clk IMX8MQ_AUDIO_PLL1>,
623 <&clk IMX8MQ_AUDIO_PLL2>;
Peng Fan9e6337e2020-05-07 13:56:10 +0800624 assigned-clock-rates = <0>, <0>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800625 <800000000>,
626 <0>,
627 <0>,
628 <0>,
629 <786432000>,
630 <722534400>;
Peng Fan9e6337e2020-05-07 13:56:10 +0800631 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800632 <&clk IMX8MQ_ARM_PLL_OUT>,
633 <0>,
634 <&clk IMX8MQ_SYS2_PLL_500M>,
635 <&clk IMX8MQ_AUDIO_PLL1>,
636 <&clk IMX8MQ_AUDIO_PLL2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000637 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100638
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700639 src: reset-controller@30390000 {
640 compatible = "fsl,imx8mq-src", "syscon";
641 reg = <0x30390000 0x10000>;
Anson Huangd0955f62020-05-09 16:17:50 +0800642 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700643 #reset-cells = <1>;
644 };
645
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100646 gpc: gpc@303a0000 {
647 compatible = "fsl,imx8mq-gpc";
648 reg = <0x303a0000 0x10000>;
Krzysztof Kozlowski791619f2020-09-04 16:53:09 +0200649 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
Lucas Stachc4121232019-01-25 17:20:33 +0100650 interrupt-parent = <&gic>;
651 interrupt-controller;
652 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100653
654 pgc {
655 #address-cells = <1>;
656 #size-cells = <0>;
657
658 pgc_mipi: power-domain@0 {
659 #power-domain-cells = <0>;
660 reg = <IMX8M_POWER_DOMAIN_MIPI>;
661 };
662
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700663 /*
664 * As per comment in ATF source code:
665 *
666 * PCIE1 and PCIE2 share the
667 * same reset signal, if we
668 * power down PCIE2, PCIE1
669 * will be held in reset too.
670 *
671 * So instead of creating two
672 * separate power domains for
673 * PCIE1 and PCIE2 we create a
674 * link between both and use
675 * it as a shared PCIE power
676 * domain.
677 */
678 pgc_pcie: power-domain@1 {
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100679 #power-domain-cells = <0>;
680 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700681 power-domains = <&pgc_pcie2>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100682 };
683
684 pgc_otg1: power-domain@2 {
685 #power-domain-cells = <0>;
686 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
687 };
688
689 pgc_otg2: power-domain@3 {
690 #power-domain-cells = <0>;
691 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
692 };
693
694 pgc_ddr1: power-domain@4 {
695 #power-domain-cells = <0>;
696 reg = <IMX8M_POWER_DOMAIN_DDR1>;
697 };
698
699 pgc_gpu: power-domain@5 {
700 #power-domain-cells = <0>;
701 reg = <IMX8M_POWER_DOMAIN_GPU>;
702 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
703 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
704 <&clk IMX8MQ_CLK_GPU_AXI>,
705 <&clk IMX8MQ_CLK_GPU_AHB>;
706 };
707
708 pgc_vpu: power-domain@6 {
709 #power-domain-cells = <0>;
710 reg = <IMX8M_POWER_DOMAIN_VPU>;
Philipp Zabel36cebea2020-03-20 14:12:55 +0100711 clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100712 };
713
714 pgc_disp: power-domain@7 {
715 #power-domain-cells = <0>;
716 reg = <IMX8M_POWER_DOMAIN_DISP>;
717 };
718
719 pgc_mipi_csi1: power-domain@8 {
720 #power-domain-cells = <0>;
721 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
722 };
723
724 pgc_mipi_csi2: power-domain@9 {
725 #power-domain-cells = <0>;
726 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
727 };
728
729 pgc_pcie2: power-domain@a {
730 #power-domain-cells = <0>;
731 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
732 };
733 };
734 };
Lucas Stach748f9082018-12-09 14:26:07 +0000735 };
736
737 bus@30400000 { /* AIPS2 */
Peng Fandc3efc62020-03-11 15:17:56 +0800738 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300739 reg = <0x30400000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000740 #address-cells = <1>;
741 #size-cells = <1>;
742 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100743
744 pwm1: pwm@30660000 {
745 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
746 reg = <0x30660000 0x10000>;
747 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
748 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
749 <&clk IMX8MQ_CLK_PWM1_ROOT>;
750 clock-names = "ipg", "per";
751 #pwm-cells = <2>;
752 status = "disabled";
753 };
754
755 pwm2: pwm@30670000 {
756 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
757 reg = <0x30670000 0x10000>;
758 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
759 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
760 <&clk IMX8MQ_CLK_PWM2_ROOT>;
761 clock-names = "ipg", "per";
762 #pwm-cells = <2>;
763 status = "disabled";
764 };
765
766 pwm3: pwm@30680000 {
767 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
768 reg = <0x30680000 0x10000>;
769 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
770 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
771 <&clk IMX8MQ_CLK_PWM3_ROOT>;
772 clock-names = "ipg", "per";
773 #pwm-cells = <2>;
774 status = "disabled";
775 };
776
777 pwm4: pwm@30690000 {
778 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
779 reg = <0x30690000 0x10000>;
780 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
781 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
782 <&clk IMX8MQ_CLK_PWM4_ROOT>;
783 clock-names = "ipg", "per";
784 #pwm-cells = <2>;
785 status = "disabled";
786 };
Anson Huang24e8a5d2019-08-15 20:38:44 -0400787
788 system_counter: timer@306a0000 {
789 compatible = "nxp,sysctr-timer";
790 reg = <0x306a0000 0x20000>;
791 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
792 clocks = <&osc_25m>;
793 clock-names = "per";
794 };
Lucas Stach748f9082018-12-09 14:26:07 +0000795 };
796
797 bus@30800000 { /* AIPS3 */
Peng Fandc3efc62020-03-11 15:17:56 +0800798 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300799 reg = <0x30800000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000800 #address-cells = <1>;
801 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800802 ranges = <0x30800000 0x30800000 0x400000>,
803 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000804
Shengjiu Wang08a1a2e2020-11-02 10:11:17 +0800805 spdif1: spdif@30810000 {
806 compatible = "fsl,imx35-spdif";
807 reg = <0x30810000 0x10000>;
808 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
809 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
810 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
811 <&clk IMX8MQ_CLK_SPDIF1>, /* rxtx1 */
812 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
813 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
814 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
815 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
816 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
817 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
818 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
819 clock-names = "core", "rxtx0",
820 "rxtx1", "rxtx2",
821 "rxtx3", "rxtx4",
822 "rxtx5", "rxtx6",
823 "rxtx7", "spba";
824 dmas = <&sdma1 8 18 0>, <&sdma1 9 18 0>;
825 dma-names = "rx", "tx";
826 status = "disabled";
827 };
828
Fabio Estevam85761f42019-01-28 10:08:13 -0200829 ecspi1: spi@30820000 {
830 #address-cells = <1>;
831 #size-cells = <0>;
832 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
833 reg = <0x30820000 0x10000>;
834 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
835 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
836 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
837 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300838 dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
839 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200840 status = "disabled";
841 };
842
843 ecspi2: spi@30830000 {
844 #address-cells = <1>;
845 #size-cells = <0>;
846 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
847 reg = <0x30830000 0x10000>;
848 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
849 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
850 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
851 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300852 dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
853 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200854 status = "disabled";
855 };
856
857 ecspi3: spi@30840000 {
858 #address-cells = <1>;
859 #size-cells = <0>;
860 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
861 reg = <0x30840000 0x10000>;
862 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
863 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
864 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
865 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300866 dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
867 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200868 status = "disabled";
869 };
Lucas Stach748f9082018-12-09 14:26:07 +0000870
871 uart1: serial@30860000 {
872 compatible = "fsl,imx8mq-uart",
873 "fsl,imx6q-uart";
874 reg = <0x30860000 0x10000>;
875 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
876 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
877 <&clk IMX8MQ_CLK_UART1_ROOT>;
878 clock-names = "ipg", "per";
879 status = "disabled";
880 };
881
882 uart3: serial@30880000 {
883 compatible = "fsl,imx8mq-uart",
884 "fsl,imx6q-uart";
885 reg = <0x30880000 0x10000>;
886 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
887 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
888 <&clk IMX8MQ_CLK_UART3_ROOT>;
889 clock-names = "ipg", "per";
890 status = "disabled";
891 };
892
893 uart2: serial@30890000 {
894 compatible = "fsl,imx8mq-uart",
895 "fsl,imx6q-uart";
896 reg = <0x30890000 0x10000>;
897 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
898 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
899 <&clk IMX8MQ_CLK_UART2_ROOT>;
900 clock-names = "ipg", "per";
901 status = "disabled";
902 };
903
Shengjiu Wang08a1a2e2020-11-02 10:11:17 +0800904 spdif2: spdif@308a0000 {
905 compatible = "fsl,imx35-spdif";
906 reg = <0x308a0000 0x10000>;
907 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
908 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
909 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
910 <&clk IMX8MQ_CLK_SPDIF2>, /* rxtx1 */
911 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
912 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
913 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
914 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
915 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
916 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
917 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
918 clock-names = "core", "rxtx0",
919 "rxtx1", "rxtx2",
920 "rxtx3", "rxtx4",
921 "rxtx5", "rxtx6",
922 "rxtx7", "spba";
923 dmas = <&sdma1 16 18 0>, <&sdma1 17 18 0>;
924 dma-names = "rx", "tx";
925 status = "disabled";
926 };
927
Daniel Baluta8c615382019-03-19 17:48:40 +0000928 sai2: sai@308b0000 {
929 #sound-dai-cells = <0>;
Lucas Stach8d014842019-07-17 11:54:36 +0200930 compatible = "fsl,imx8mq-sai";
Daniel Baluta8c615382019-03-19 17:48:40 +0000931 reg = <0x308b0000 0x10000>;
932 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
933 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
934 <&clk IMX8MQ_CLK_SAI2_ROOT>,
935 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
936 clock-names = "bus", "mclk1", "mclk2", "mclk3";
937 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
938 dma-names = "rx", "tx";
939 status = "disabled";
940 };
941
Lucas Stachfcb19912019-11-27 19:21:26 +0100942 sai3: sai@308c0000 {
943 #sound-dai-cells = <0>;
944 compatible = "fsl,imx8mq-sai";
945 reg = <0x308c0000 0x10000>;
946 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
947 clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
948 <&clk IMX8MQ_CLK_SAI3_ROOT>,
949 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
950 clock-names = "bus", "mclk1", "mclk2", "mclk3";
951 dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
952 dma-names = "rx", "tx";
953 status = "disabled";
954 };
955
Andrey Smirnov007b3cf2019-08-30 14:01:39 -0700956 crypto: crypto@30900000 {
957 compatible = "fsl,sec-v4.0";
958 #address-cells = <1>;
959 #size-cells = <1>;
960 reg = <0x30900000 0x40000>;
961 ranges = <0 0x30900000 0x40000>;
962 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
963 clocks = <&clk IMX8MQ_CLK_AHB>,
964 <&clk IMX8MQ_CLK_IPG_ROOT>;
965 clock-names = "aclk", "ipg";
966
967 sec_jr0: jr@1000 {
968 compatible = "fsl,sec-v4.0-job-ring";
969 reg = <0x1000 0x1000>;
970 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
971 };
972
973 sec_jr1: jr@2000 {
974 compatible = "fsl,sec-v4.0-job-ring";
975 reg = <0x2000 0x1000>;
976 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
977 };
978
979 sec_jr2: jr@3000 {
980 compatible = "fsl,sec-v4.0-job-ring";
981 reg = <0x3000 0x1000>;
982 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
983 };
984 };
985
Guido Güntherd0081bd2020-08-20 10:50:56 +0200986 mipi_dsi: mipi-dsi@30a00000 {
987 compatible = "fsl,imx8mq-nwl-dsi";
988 reg = <0x30a00000 0x300>;
989 clocks = <&clk IMX8MQ_CLK_DSI_CORE>,
990 <&clk IMX8MQ_CLK_DSI_AHB>,
991 <&clk IMX8MQ_CLK_DSI_IPG_DIV>,
992 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
993 <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
994 clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif";
995 assigned-clocks = <&clk IMX8MQ_CLK_DSI_AHB>,
996 <&clk IMX8MQ_CLK_DSI_CORE>,
997 <&clk IMX8MQ_CLK_DSI_IPG_DIV>;
998 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>,
999 <&clk IMX8MQ_SYS1_PLL_266M>;
1000 assigned-clock-rates = <80000000>, <266000000>, <20000000>;
1001 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1002 mux-controls = <&mux 0>;
1003 power-domains = <&pgc_mipi>;
1004 phys = <&dphy>;
1005 phy-names = "dphy";
1006 resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>,
1007 <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>,
1008 <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>,
1009 <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>;
1010 reset-names = "byte", "dpi", "esc", "pclk";
1011 status = "disabled";
1012
1013 ports {
1014 #address-cells = <1>;
1015 #size-cells = <0>;
1016
1017 port@0 {
1018 reg = <0>;
1019 #address-cells = <1>;
1020 #size-cells = <0>;
1021 mipi_dsi_lcdif_in: endpoint@0 {
1022 reg = <0>;
1023 remote-endpoint = <&lcdif_mipi_dsi>;
1024 };
1025 };
1026 };
1027 };
1028
Guido Günthera99b26b2019-06-25 10:27:20 +02001029 dphy: dphy@30a00300 {
1030 compatible = "fsl,imx8mq-mipi-dphy";
1031 reg = <0x30a00300 0x100>;
1032 clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
1033 clock-names = "phy_ref";
Guido Günther62270ee2021-01-10 17:55:51 +01001034 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
1035 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
1036 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
1037 <&clk IMX8MQ_VIDEO_PLL1>;
1038 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
1039 <&clk IMX8MQ_VIDEO_PLL1>,
1040 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
1041 assigned-clock-rates = <0>, <0>, <24000000>, <594000000>;
Guido Günthera99b26b2019-06-25 10:27:20 +02001042 #phy-cells = <0>;
1043 power-domains = <&pgc_mipi>;
1044 status = "disabled";
1045 };
1046
Lucas Stach748f9082018-12-09 14:26:07 +00001047 i2c1: i2c@30a20000 {
1048 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1049 reg = <0x30a20000 0x10000>;
1050 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
1051 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
1052 #address-cells = <1>;
1053 #size-cells = <0>;
1054 status = "disabled";
1055 };
1056
1057 i2c2: i2c@30a30000 {
1058 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1059 reg = <0x30a30000 0x10000>;
1060 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
1061 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
1062 #address-cells = <1>;
1063 #size-cells = <0>;
1064 status = "disabled";
1065 };
1066
1067 i2c3: i2c@30a40000 {
1068 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1069 reg = <0x30a40000 0x10000>;
1070 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1071 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
1072 #address-cells = <1>;
1073 #size-cells = <0>;
1074 status = "disabled";
1075 };
1076
1077 i2c4: i2c@30a50000 {
1078 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1079 reg = <0x30a50000 0x10000>;
1080 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1081 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
1082 #address-cells = <1>;
1083 #size-cells = <0>;
1084 status = "disabled";
1085 };
1086
1087 uart4: serial@30a60000 {
1088 compatible = "fsl,imx8mq-uart",
1089 "fsl,imx6q-uart";
1090 reg = <0x30a60000 0x10000>;
1091 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
1092 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
1093 <&clk IMX8MQ_CLK_UART4_ROOT>;
1094 clock-names = "ipg", "per";
1095 status = "disabled";
1096 };
1097
Peng Fanbbfc59b2020-06-01 16:20:01 +08001098 mu: mailbox@30aa0000 {
1099 compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
1100 reg = <0x30aa0000 0x10000>;
1101 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1102 clocks = <&clk IMX8MQ_CLK_MU_ROOT>;
1103 #mbox-cells = <2>;
1104 };
1105
Lucas Stach748f9082018-12-09 14:26:07 +00001106 usdhc1: mmc@30b40000 {
1107 compatible = "fsl,imx8mq-usdhc",
1108 "fsl,imx7d-usdhc";
1109 reg = <0x30b40000 0x10000>;
1110 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +08001111 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +00001112 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1113 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
1114 clock-names = "ipg", "ahb", "per";
Lucas Stach748f9082018-12-09 14:26:07 +00001115 fsl,tuning-start-tap = <20>;
1116 fsl,tuning-step = <2>;
1117 bus-width = <4>;
1118 status = "disabled";
1119 };
1120
1121 usdhc2: mmc@30b50000 {
1122 compatible = "fsl,imx8mq-usdhc",
1123 "fsl,imx7d-usdhc";
1124 reg = <0x30b50000 0x10000>;
1125 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +08001126 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +00001127 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1128 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
1129 clock-names = "ipg", "ahb", "per";
1130 fsl,tuning-start-tap = <20>;
1131 fsl,tuning-step = <2>;
1132 bus-width = <4>;
1133 status = "disabled";
1134 };
1135
Carlo Caione39f16222019-02-11 09:53:35 +08001136 qspi0: spi@30bb0000 {
1137 #address-cells = <1>;
1138 #size-cells = <0>;
1139 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
1140 reg = <0x30bb0000 0x10000>,
1141 <0x08000000 0x10000000>;
1142 reg-names = "QuadSPI", "QuadSPI-memory";
1143 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1144 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1145 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1146 clock-names = "qspi_en", "qspi";
1147 status = "disabled";
1148 };
1149
Daniel Baluta1474d482019-03-19 17:48:37 +00001150 sdma1: sdma@30bd0000 {
Angus Ainslie (Purism)b6c846b2019-03-29 08:21:28 -07001151 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
Daniel Baluta1474d482019-03-19 17:48:37 +00001152 reg = <0x30bd0000 0x10000>;
1153 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1154 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
Angus Ainslie (Purism)7240d7d2019-03-29 08:21:30 -07001155 <&clk IMX8MQ_CLK_AHB>;
Daniel Baluta1474d482019-03-19 17:48:37 +00001156 clock-names = "ipg", "ahb";
1157 #dma-cells = <3>;
1158 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1159 };
1160
Lucas Stach748f9082018-12-09 14:26:07 +00001161 fec1: ethernet@30be0000 {
1162 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1163 reg = <0x30be0000 0x10000>;
1164 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1165 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
Fabio Estevamd3762a42020-08-18 22:59:46 -03001166 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
1167 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
Lucas Stach748f9082018-12-09 14:26:07 +00001168 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1169 <&clk IMX8MQ_CLK_ENET1_ROOT>,
1170 <&clk IMX8MQ_CLK_ENET_TIMER>,
1171 <&clk IMX8MQ_CLK_ENET_REF>,
1172 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1173 clock-names = "ipg", "ahb", "ptp",
1174 "enet_clk_ref", "enet_out";
1175 fsl,num-tx-queues = <3>;
1176 fsl,num-rx-queues = <3>;
1177 status = "disabled";
1178 };
1179 };
1180
Leonard Crestezf18e6d52021-01-07 13:17:50 +01001181 noc: interconnect@32700000 {
1182 compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc";
1183 reg = <0x32700000 0x100000>;
1184 clocks = <&clk IMX8MQ_CLK_NOC>;
1185 fsl,ddrc = <&ddrc>;
Martin Kepplinger20cf8d92021-01-11 09:21:44 +01001186 #interconnect-cells = <1>;
Leonard Crestezf18e6d52021-01-07 13:17:50 +01001187 operating-points-v2 = <&noc_opp_table>;
1188
1189 noc_opp_table: opp-table {
1190 compatible = "operating-points-v2";
1191
1192 opp-133M {
1193 opp-hz = /bits/ 64 <133333333>;
1194 };
1195
1196 opp-400M {
1197 opp-hz = /bits/ 64 <400000000>;
1198 };
1199
1200 opp-800M {
1201 opp-hz = /bits/ 64 <800000000>;
1202 };
1203 };
1204 };
1205
Guido Günther4af3cfe2019-04-30 19:15:55 +02001206 bus@32c00000 { /* AIPS4 */
Peng Fandc3efc62020-03-11 15:17:56 +08001207 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -03001208 reg = <0x32c00000 0x400000>;
Guido Günther4af3cfe2019-04-30 19:15:55 +02001209 #address-cells = <1>;
1210 #size-cells = <1>;
1211 ranges = <0x32c00000 0x32c00000 0x400000>;
1212
1213 irqsteer: interrupt-controller@32e2d000 {
1214 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1215 reg = <0x32e2d000 0x1000>;
1216 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1217 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1218 clock-names = "ipg";
1219 fsl,channel = <0>;
1220 fsl,num-irqs = <64>;
1221 interrupt-controller;
1222 #interrupt-cells = <1>;
1223 };
1224 };
1225
Lucas Stach45d2c842019-04-04 18:52:11 +02001226 gpu: gpu@38000000 {
1227 compatible = "vivante,gc";
1228 reg = <0x38000000 0x40000>;
1229 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1230 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1231 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1232 <&clk IMX8MQ_CLK_GPU_AXI>,
1233 <&clk IMX8MQ_CLK_GPU_AHB>;
1234 clock-names = "core", "shader", "bus", "reg";
Guido Günther9404f2e2019-09-11 19:40:35 -07001235 #cooling-cells = <2>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001236 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1237 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1238 <&clk IMX8MQ_CLK_GPU_AXI>,
Lucas Stachade5a572019-04-15 15:59:22 +02001239 <&clk IMX8MQ_CLK_GPU_AHB>,
1240 <&clk IMX8MQ_GPU_PLL_BYPASS>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001241 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1242 <&clk IMX8MQ_GPU_PLL_OUT>,
1243 <&clk IMX8MQ_GPU_PLL_OUT>,
Lucas Stachade5a572019-04-15 15:59:22 +02001244 <&clk IMX8MQ_GPU_PLL_OUT>,
1245 <&clk IMX8MQ_GPU_PLL>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001246 assigned-clock-rates = <800000000>, <800000000>,
Lucas Stachade5a572019-04-15 15:59:22 +02001247 <800000000>, <800000000>, <0>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001248 power-domains = <&pgc_gpu>;
1249 };
1250
Lucas Stachad375492019-01-25 17:25:58 +01001251 usb_dwc3_0: usb@38100000 {
1252 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1253 reg = <0x38100000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001254 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001255 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001256 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001257 clock-names = "bus_early", "ref", "suspend";
1258 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1259 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1260 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1261 <&clk IMX8MQ_SYS1_PLL_100M>;
1262 assigned-clock-rates = <500000000>, <100000000>;
1263 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1264 phys = <&usb3_phy0>, <&usb3_phy0>;
1265 phy-names = "usb2-phy", "usb3-phy";
1266 power-domains = <&pgc_otg1>;
1267 usb3-resume-missing-cas;
1268 status = "disabled";
1269 };
1270
1271 usb3_phy0: usb-phy@381f0040 {
1272 compatible = "fsl,imx8mq-usb-phy";
1273 reg = <0x381f0040 0x40>;
1274 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1275 clock-names = "phy";
1276 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1277 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1278 assigned-clock-rates = <100000000>;
1279 #phy-cells = <0>;
1280 status = "disabled";
1281 };
1282
1283 usb_dwc3_1: usb@38200000 {
1284 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1285 reg = <0x38200000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001286 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001287 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001288 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001289 clock-names = "bus_early", "ref", "suspend";
1290 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1291 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1292 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1293 <&clk IMX8MQ_SYS1_PLL_100M>;
1294 assigned-clock-rates = <500000000>, <100000000>;
1295 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1296 phys = <&usb3_phy1>, <&usb3_phy1>;
1297 phy-names = "usb2-phy", "usb3-phy";
1298 power-domains = <&pgc_otg2>;
1299 usb3-resume-missing-cas;
1300 status = "disabled";
1301 };
1302
1303 usb3_phy1: usb-phy@382f0040 {
1304 compatible = "fsl,imx8mq-usb-phy";
1305 reg = <0x382f0040 0x40>;
1306 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1307 clock-names = "phy";
1308 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1309 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1310 assigned-clock-rates = <100000000>;
1311 #phy-cells = <0>;
1312 status = "disabled";
1313 };
1314
Philipp Zabel36cebea2020-03-20 14:12:55 +01001315 vpu: video-codec@38300000 {
1316 compatible = "nxp,imx8mq-vpu";
1317 reg = <0x38300000 0x10000>,
1318 <0x38310000 0x10000>,
1319 <0x38320000 0x10000>;
1320 reg-names = "g1", "g2", "ctrl";
1321 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1322 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1323 interrupt-names = "g1", "g2";
1324 clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>,
1325 <&clk IMX8MQ_CLK_VPU_G2_ROOT>,
1326 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
1327 clock-names = "g1", "g2", "bus";
1328 assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>,
1329 <&clk IMX8MQ_CLK_VPU_G2>,
1330 <&clk IMX8MQ_CLK_VPU_BUS>,
1331 <&clk IMX8MQ_VPU_PLL_BYPASS>;
1332 assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>,
1333 <&clk IMX8MQ_VPU_PLL_OUT>,
1334 <&clk IMX8MQ_SYS1_PLL_800M>,
1335 <&clk IMX8MQ_VPU_PLL>;
1336 assigned-clock-rates = <600000000>, <600000000>,
1337 <800000000>, <0>;
1338 power-domains = <&pgc_vpu>;
1339 };
1340
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001341 pcie0: pcie@33800000 {
1342 compatible = "fsl,imx8mq-pcie";
1343 reg = <0x33800000 0x400000>,
1344 <0x1ff00000 0x80000>;
1345 reg-names = "dbi", "config";
1346 #address-cells = <3>;
1347 #size-cells = <2>;
1348 device_type = "pci";
1349 bus-range = <0x00 0xff>;
1350 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
1351 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
1352 num-lanes = <1>;
1353 num-viewport = <4>;
1354 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1355 interrupt-names = "msi";
1356 #interrupt-cells = <1>;
1357 interrupt-map-mask = <0 0 0 0x7>;
1358 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1359 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1360 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1361 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1362 fsl,max-link-speed = <2>;
1363 power-domains = <&pgc_pcie>;
1364 resets = <&src IMX8MQ_RESET_PCIEPHY>,
1365 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1366 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1367 reset-names = "pciephy", "apps", "turnoff";
1368 status = "disabled";
1369 };
1370
1371 pcie1: pcie@33c00000 {
1372 compatible = "fsl,imx8mq-pcie";
1373 reg = <0x33c00000 0x400000>,
1374 <0x27f00000 0x80000>;
1375 reg-names = "dbi", "config";
1376 #address-cells = <3>;
1377 #size-cells = <2>;
1378 device_type = "pci";
1379 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
1380 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
1381 num-lanes = <1>;
1382 num-viewport = <4>;
1383 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1384 interrupt-names = "msi";
1385 #interrupt-cells = <1>;
1386 interrupt-map-mask = <0 0 0 0x7>;
1387 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1388 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1389 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1390 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1391 fsl,max-link-speed = <2>;
1392 power-domains = <&pgc_pcie>;
1393 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1394 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1395 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1396 reset-names = "pciephy", "apps", "turnoff";
1397 status = "disabled";
1398 };
1399
Lucas Stach748f9082018-12-09 14:26:07 +00001400 gic: interrupt-controller@38800000 {
1401 compatible = "arm,gic-v3";
1402 reg = <0x38800000 0x10000>, /* GIC Dist */
1403 <0x38880000 0xc0000>, /* GICR */
1404 <0x31000000 0x2000>, /* GICC */
1405 <0x31010000 0x2000>, /* GICV */
1406 <0x31020000 0x2000>; /* GICH */
1407 #interrupt-cells = <3>;
1408 interrupt-controller;
1409 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1410 interrupt-parent = <&gic>;
1411 };
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001412
Leonard Crestez0376f6e2019-11-22 23:45:04 +02001413 ddrc: memory-controller@3d400000 {
1414 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1415 reg = <0x3d400000 0x400000>;
1416 clock-names = "core", "pll", "alt", "apb";
1417 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1418 <&clk IMX8MQ_DRAM_PLL_OUT>,
1419 <&clk IMX8MQ_CLK_DRAM_ALT>,
1420 <&clk IMX8MQ_CLK_DRAM_APB>;
1421 };
1422
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001423 ddr-pmu@3d800000 {
1424 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1425 reg = <0x3d800000 0x400000>;
1426 interrupt-parent = <&gic>;
1427 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1428 };
Lucas Stach748f9082018-12-09 14:26:07 +00001429 };
1430};