blob: e026a39bddce84fc5bf0ad3e0631d6ebc5b7808c [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 };
Joakim Zhang066438a2021-01-16 16:44:30 +0800570
571 fec_mac_address: mac-address@90 {
572 reg = <0x90 6>;
573 };
Carlo Caione9e113b22019-02-26 09:04:48 +0000574 };
575
Lucas Stach748f9082018-12-09 14:26:07 +0000576 anatop: syscon@30360000 {
577 compatible = "fsl,imx8mq-anatop", "syscon";
578 reg = <0x30360000 0x10000>;
579 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
580 };
581
Abel Vesa3ea95c32019-01-31 15:01:22 +0000582 snvs: snvs@30370000 {
583 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
584 reg = <0x30370000 0x10000>;
585
586 snvs_rtc: snvs-rtc-lp{
587 compatible = "fsl,sec-v4.0-mon-rtc-lp";
588 regmap =<&snvs>;
589 offset = <0x34>;
590 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
591 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang881b54c2019-05-24 13:44:06 +0800592 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
593 clock-names = "snvs-rtc";
Abel Vesa3ea95c32019-01-31 15:01:22 +0000594 };
595
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700596 snvs_pwrkey: snvs-powerkey {
597 compatible = "fsl,sec-v4.0-pwrkey";
598 regmap = <&snvs>;
599 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
André Draszikedd91ba2020-02-25 16:11:59 +0000600 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
601 clock-names = "snvs-pwrkey";
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700602 linux,keycode = <KEY_POWER>;
603 wakeup-source;
604 status = "disabled";
605 };
Abel Vesa3ea95c32019-01-31 15:01:22 +0000606 };
607
Lucas Stach748f9082018-12-09 14:26:07 +0000608 clk: clock-controller@30380000 {
609 compatible = "fsl,imx8mq-ccm";
610 reg = <0x30380000 0x10000>;
611 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
612 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
613 #clock-cells = <1>;
614 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
615 <&clk_ext1>, <&clk_ext2>,
616 <&clk_ext3>, <&clk_ext4>;
617 clock-names = "ckil", "osc_25m", "osc_27m",
618 "clk_ext1", "clk_ext2",
619 "clk_ext3", "clk_ext4";
Peng Fan9e6337e2020-05-07 13:56:10 +0800620 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
621 <&clk IMX8MQ_CLK_A53_CORE>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800622 <&clk IMX8MQ_CLK_NOC>,
623 <&clk IMX8MQ_CLK_AUDIO_AHB>,
624 <&clk IMX8MQ_AUDIO_PLL1_BYPASS>,
625 <&clk IMX8MQ_AUDIO_PLL2_BYPASS>,
626 <&clk IMX8MQ_AUDIO_PLL1>,
627 <&clk IMX8MQ_AUDIO_PLL2>;
Peng Fan9e6337e2020-05-07 13:56:10 +0800628 assigned-clock-rates = <0>, <0>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800629 <800000000>,
630 <0>,
631 <0>,
632 <0>,
633 <786432000>,
634 <722534400>;
Peng Fan9e6337e2020-05-07 13:56:10 +0800635 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800636 <&clk IMX8MQ_ARM_PLL_OUT>,
637 <0>,
638 <&clk IMX8MQ_SYS2_PLL_500M>,
639 <&clk IMX8MQ_AUDIO_PLL1>,
640 <&clk IMX8MQ_AUDIO_PLL2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000641 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100642
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700643 src: reset-controller@30390000 {
644 compatible = "fsl,imx8mq-src", "syscon";
645 reg = <0x30390000 0x10000>;
Anson Huangd0955f62020-05-09 16:17:50 +0800646 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700647 #reset-cells = <1>;
648 };
649
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100650 gpc: gpc@303a0000 {
651 compatible = "fsl,imx8mq-gpc";
652 reg = <0x303a0000 0x10000>;
Krzysztof Kozlowski791619f2020-09-04 16:53:09 +0200653 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
Lucas Stachc4121232019-01-25 17:20:33 +0100654 interrupt-parent = <&gic>;
655 interrupt-controller;
656 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100657
658 pgc {
659 #address-cells = <1>;
660 #size-cells = <0>;
661
662 pgc_mipi: power-domain@0 {
663 #power-domain-cells = <0>;
664 reg = <IMX8M_POWER_DOMAIN_MIPI>;
665 };
666
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700667 /*
668 * As per comment in ATF source code:
669 *
670 * PCIE1 and PCIE2 share the
671 * same reset signal, if we
672 * power down PCIE2, PCIE1
673 * will be held in reset too.
674 *
675 * So instead of creating two
676 * separate power domains for
677 * PCIE1 and PCIE2 we create a
678 * link between both and use
679 * it as a shared PCIE power
680 * domain.
681 */
682 pgc_pcie: power-domain@1 {
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100683 #power-domain-cells = <0>;
684 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700685 power-domains = <&pgc_pcie2>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100686 };
687
688 pgc_otg1: power-domain@2 {
689 #power-domain-cells = <0>;
690 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
691 };
692
693 pgc_otg2: power-domain@3 {
694 #power-domain-cells = <0>;
695 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
696 };
697
698 pgc_ddr1: power-domain@4 {
699 #power-domain-cells = <0>;
700 reg = <IMX8M_POWER_DOMAIN_DDR1>;
701 };
702
703 pgc_gpu: power-domain@5 {
704 #power-domain-cells = <0>;
705 reg = <IMX8M_POWER_DOMAIN_GPU>;
706 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
707 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
708 <&clk IMX8MQ_CLK_GPU_AXI>,
709 <&clk IMX8MQ_CLK_GPU_AHB>;
710 };
711
712 pgc_vpu: power-domain@6 {
713 #power-domain-cells = <0>;
714 reg = <IMX8M_POWER_DOMAIN_VPU>;
Philipp Zabel36cebea2020-03-20 14:12:55 +0100715 clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100716 };
717
718 pgc_disp: power-domain@7 {
719 #power-domain-cells = <0>;
720 reg = <IMX8M_POWER_DOMAIN_DISP>;
721 };
722
723 pgc_mipi_csi1: power-domain@8 {
724 #power-domain-cells = <0>;
725 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
726 };
727
728 pgc_mipi_csi2: power-domain@9 {
729 #power-domain-cells = <0>;
730 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
731 };
732
733 pgc_pcie2: power-domain@a {
734 #power-domain-cells = <0>;
735 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
736 };
737 };
738 };
Lucas Stach748f9082018-12-09 14:26:07 +0000739 };
740
741 bus@30400000 { /* AIPS2 */
Peng Fandc3efc62020-03-11 15:17:56 +0800742 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300743 reg = <0x30400000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000744 #address-cells = <1>;
745 #size-cells = <1>;
746 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100747
748 pwm1: pwm@30660000 {
749 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
750 reg = <0x30660000 0x10000>;
751 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
752 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
753 <&clk IMX8MQ_CLK_PWM1_ROOT>;
754 clock-names = "ipg", "per";
755 #pwm-cells = <2>;
756 status = "disabled";
757 };
758
759 pwm2: pwm@30670000 {
760 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
761 reg = <0x30670000 0x10000>;
762 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
763 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
764 <&clk IMX8MQ_CLK_PWM2_ROOT>;
765 clock-names = "ipg", "per";
766 #pwm-cells = <2>;
767 status = "disabled";
768 };
769
770 pwm3: pwm@30680000 {
771 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
772 reg = <0x30680000 0x10000>;
773 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
774 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
775 <&clk IMX8MQ_CLK_PWM3_ROOT>;
776 clock-names = "ipg", "per";
777 #pwm-cells = <2>;
778 status = "disabled";
779 };
780
781 pwm4: pwm@30690000 {
782 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
783 reg = <0x30690000 0x10000>;
784 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
785 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
786 <&clk IMX8MQ_CLK_PWM4_ROOT>;
787 clock-names = "ipg", "per";
788 #pwm-cells = <2>;
789 status = "disabled";
790 };
Anson Huang24e8a5d2019-08-15 20:38:44 -0400791
792 system_counter: timer@306a0000 {
793 compatible = "nxp,sysctr-timer";
794 reg = <0x306a0000 0x20000>;
795 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
796 clocks = <&osc_25m>;
797 clock-names = "per";
798 };
Lucas Stach748f9082018-12-09 14:26:07 +0000799 };
800
801 bus@30800000 { /* AIPS3 */
Peng Fandc3efc62020-03-11 15:17:56 +0800802 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300803 reg = <0x30800000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000804 #address-cells = <1>;
805 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800806 ranges = <0x30800000 0x30800000 0x400000>,
807 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000808
Shengjiu Wang08a1a2e2020-11-02 10:11:17 +0800809 spdif1: spdif@30810000 {
810 compatible = "fsl,imx35-spdif";
811 reg = <0x30810000 0x10000>;
812 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
813 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
814 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
815 <&clk IMX8MQ_CLK_SPDIF1>, /* rxtx1 */
816 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
817 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
818 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
819 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
820 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
821 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
822 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
823 clock-names = "core", "rxtx0",
824 "rxtx1", "rxtx2",
825 "rxtx3", "rxtx4",
826 "rxtx5", "rxtx6",
827 "rxtx7", "spba";
828 dmas = <&sdma1 8 18 0>, <&sdma1 9 18 0>;
829 dma-names = "rx", "tx";
830 status = "disabled";
831 };
832
Fabio Estevam85761f42019-01-28 10:08:13 -0200833 ecspi1: spi@30820000 {
834 #address-cells = <1>;
835 #size-cells = <0>;
836 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
837 reg = <0x30820000 0x10000>;
838 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
839 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
840 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
841 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300842 dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
843 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200844 status = "disabled";
845 };
846
847 ecspi2: spi@30830000 {
848 #address-cells = <1>;
849 #size-cells = <0>;
850 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
851 reg = <0x30830000 0x10000>;
852 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
853 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
854 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
855 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300856 dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
857 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200858 status = "disabled";
859 };
860
861 ecspi3: spi@30840000 {
862 #address-cells = <1>;
863 #size-cells = <0>;
864 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
865 reg = <0x30840000 0x10000>;
866 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
867 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
868 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
869 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300870 dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
871 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200872 status = "disabled";
873 };
Lucas Stach748f9082018-12-09 14:26:07 +0000874
875 uart1: serial@30860000 {
876 compatible = "fsl,imx8mq-uart",
877 "fsl,imx6q-uart";
878 reg = <0x30860000 0x10000>;
879 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
880 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
881 <&clk IMX8MQ_CLK_UART1_ROOT>;
882 clock-names = "ipg", "per";
883 status = "disabled";
884 };
885
886 uart3: serial@30880000 {
887 compatible = "fsl,imx8mq-uart",
888 "fsl,imx6q-uart";
889 reg = <0x30880000 0x10000>;
890 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
891 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
892 <&clk IMX8MQ_CLK_UART3_ROOT>;
893 clock-names = "ipg", "per";
894 status = "disabled";
895 };
896
897 uart2: serial@30890000 {
898 compatible = "fsl,imx8mq-uart",
899 "fsl,imx6q-uart";
900 reg = <0x30890000 0x10000>;
901 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
902 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
903 <&clk IMX8MQ_CLK_UART2_ROOT>;
904 clock-names = "ipg", "per";
905 status = "disabled";
906 };
907
Shengjiu Wang08a1a2e2020-11-02 10:11:17 +0800908 spdif2: spdif@308a0000 {
909 compatible = "fsl,imx35-spdif";
910 reg = <0x308a0000 0x10000>;
911 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
912 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
913 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
914 <&clk IMX8MQ_CLK_SPDIF2>, /* rxtx1 */
915 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
916 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
917 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
918 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
919 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
920 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
921 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
922 clock-names = "core", "rxtx0",
923 "rxtx1", "rxtx2",
924 "rxtx3", "rxtx4",
925 "rxtx5", "rxtx6",
926 "rxtx7", "spba";
927 dmas = <&sdma1 16 18 0>, <&sdma1 17 18 0>;
928 dma-names = "rx", "tx";
929 status = "disabled";
930 };
931
Daniel Baluta8c615382019-03-19 17:48:40 +0000932 sai2: sai@308b0000 {
933 #sound-dai-cells = <0>;
Lucas Stach8d014842019-07-17 11:54:36 +0200934 compatible = "fsl,imx8mq-sai";
Daniel Baluta8c615382019-03-19 17:48:40 +0000935 reg = <0x308b0000 0x10000>;
936 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
937 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
938 <&clk IMX8MQ_CLK_SAI2_ROOT>,
939 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
940 clock-names = "bus", "mclk1", "mclk2", "mclk3";
941 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
942 dma-names = "rx", "tx";
943 status = "disabled";
944 };
945
Lucas Stachfcb19912019-11-27 19:21:26 +0100946 sai3: sai@308c0000 {
947 #sound-dai-cells = <0>;
948 compatible = "fsl,imx8mq-sai";
949 reg = <0x308c0000 0x10000>;
950 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
951 clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
952 <&clk IMX8MQ_CLK_SAI3_ROOT>,
953 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
954 clock-names = "bus", "mclk1", "mclk2", "mclk3";
955 dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
956 dma-names = "rx", "tx";
957 status = "disabled";
958 };
959
Andrey Smirnov007b3cf2019-08-30 14:01:39 -0700960 crypto: crypto@30900000 {
961 compatible = "fsl,sec-v4.0";
962 #address-cells = <1>;
963 #size-cells = <1>;
964 reg = <0x30900000 0x40000>;
965 ranges = <0 0x30900000 0x40000>;
966 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
967 clocks = <&clk IMX8MQ_CLK_AHB>,
968 <&clk IMX8MQ_CLK_IPG_ROOT>;
969 clock-names = "aclk", "ipg";
970
971 sec_jr0: jr@1000 {
972 compatible = "fsl,sec-v4.0-job-ring";
973 reg = <0x1000 0x1000>;
974 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
975 };
976
977 sec_jr1: jr@2000 {
978 compatible = "fsl,sec-v4.0-job-ring";
979 reg = <0x2000 0x1000>;
980 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
981 };
982
983 sec_jr2: jr@3000 {
984 compatible = "fsl,sec-v4.0-job-ring";
985 reg = <0x3000 0x1000>;
986 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
987 };
988 };
989
Guido Güntherd0081bd2020-08-20 10:50:56 +0200990 mipi_dsi: mipi-dsi@30a00000 {
991 compatible = "fsl,imx8mq-nwl-dsi";
992 reg = <0x30a00000 0x300>;
993 clocks = <&clk IMX8MQ_CLK_DSI_CORE>,
994 <&clk IMX8MQ_CLK_DSI_AHB>,
995 <&clk IMX8MQ_CLK_DSI_IPG_DIV>,
996 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
997 <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
998 clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif";
999 assigned-clocks = <&clk IMX8MQ_CLK_DSI_AHB>,
1000 <&clk IMX8MQ_CLK_DSI_CORE>,
1001 <&clk IMX8MQ_CLK_DSI_IPG_DIV>;
1002 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>,
1003 <&clk IMX8MQ_SYS1_PLL_266M>;
1004 assigned-clock-rates = <80000000>, <266000000>, <20000000>;
1005 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1006 mux-controls = <&mux 0>;
1007 power-domains = <&pgc_mipi>;
1008 phys = <&dphy>;
1009 phy-names = "dphy";
1010 resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>,
1011 <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>,
1012 <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>,
1013 <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>;
1014 reset-names = "byte", "dpi", "esc", "pclk";
1015 status = "disabled";
1016
1017 ports {
1018 #address-cells = <1>;
1019 #size-cells = <0>;
1020
1021 port@0 {
1022 reg = <0>;
1023 #address-cells = <1>;
1024 #size-cells = <0>;
1025 mipi_dsi_lcdif_in: endpoint@0 {
1026 reg = <0>;
1027 remote-endpoint = <&lcdif_mipi_dsi>;
1028 };
1029 };
1030 };
1031 };
1032
Guido Günthera99b26b2019-06-25 10:27:20 +02001033 dphy: dphy@30a00300 {
1034 compatible = "fsl,imx8mq-mipi-dphy";
1035 reg = <0x30a00300 0x100>;
1036 clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
1037 clock-names = "phy_ref";
Guido Günther62270ee2021-01-10 17:55:51 +01001038 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
1039 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
1040 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
1041 <&clk IMX8MQ_VIDEO_PLL1>;
1042 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
1043 <&clk IMX8MQ_VIDEO_PLL1>,
1044 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
1045 assigned-clock-rates = <0>, <0>, <24000000>, <594000000>;
Guido Günthera99b26b2019-06-25 10:27:20 +02001046 #phy-cells = <0>;
1047 power-domains = <&pgc_mipi>;
1048 status = "disabled";
1049 };
1050
Lucas Stach748f9082018-12-09 14:26:07 +00001051 i2c1: i2c@30a20000 {
1052 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1053 reg = <0x30a20000 0x10000>;
1054 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
1055 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
1056 #address-cells = <1>;
1057 #size-cells = <0>;
1058 status = "disabled";
1059 };
1060
1061 i2c2: i2c@30a30000 {
1062 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1063 reg = <0x30a30000 0x10000>;
1064 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
1065 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
1066 #address-cells = <1>;
1067 #size-cells = <0>;
1068 status = "disabled";
1069 };
1070
1071 i2c3: i2c@30a40000 {
1072 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1073 reg = <0x30a40000 0x10000>;
1074 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1075 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
1076 #address-cells = <1>;
1077 #size-cells = <0>;
1078 status = "disabled";
1079 };
1080
1081 i2c4: i2c@30a50000 {
1082 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1083 reg = <0x30a50000 0x10000>;
1084 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1085 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
1086 #address-cells = <1>;
1087 #size-cells = <0>;
1088 status = "disabled";
1089 };
1090
1091 uart4: serial@30a60000 {
1092 compatible = "fsl,imx8mq-uart",
1093 "fsl,imx6q-uart";
1094 reg = <0x30a60000 0x10000>;
1095 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
1096 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
1097 <&clk IMX8MQ_CLK_UART4_ROOT>;
1098 clock-names = "ipg", "per";
1099 status = "disabled";
1100 };
1101
Martin Kepplingerbcadd5f2021-07-26 10:21:17 +02001102 mipi_csi1: csi@30a70000 {
1103 compatible = "fsl,imx8mq-mipi-csi2";
1104 reg = <0x30a70000 0x1000>;
1105 clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
1106 <&clk IMX8MQ_CLK_CSI1_ESC>,
1107 <&clk IMX8MQ_CLK_CSI1_PHY_REF>;
1108 clock-names = "core", "esc", "ui";
1109 assigned-clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
1110 <&clk IMX8MQ_CLK_CSI1_PHY_REF>,
1111 <&clk IMX8MQ_CLK_CSI1_ESC>;
1112 assigned-clock-rates = <266000000>, <333000000>, <66000000>;
1113 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1114 <&clk IMX8MQ_SYS2_PLL_1000M>,
1115 <&clk IMX8MQ_SYS1_PLL_800M>;
1116 power-domains = <&pgc_mipi_csi1>;
1117 resets = <&src IMX8MQ_RESET_MIPI_CSI1_CORE_RESET>,
1118 <&src IMX8MQ_RESET_MIPI_CSI1_PHY_REF_RESET>,
1119 <&src IMX8MQ_RESET_MIPI_CSI1_ESC_RESET>;
1120 fsl,mipi-phy-gpr = <&iomuxc_gpr 0x88>;
1121 interconnects = <&noc IMX8MQ_ICM_CSI1 &noc IMX8MQ_ICS_DRAM>;
1122 interconnect-names = "dram";
1123 status = "disabled";
1124
1125 ports {
1126 #address-cells = <1>;
1127 #size-cells = <0>;
1128
1129 port@0 {
1130 reg = <0>;
1131
1132 csi1_mipi_ep: endpoint {
1133 remote-endpoint = <&csi1_ep>;
1134 };
1135 };
1136 };
1137 };
1138
1139 csi1: csi@30a90000 {
1140 compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
1141 reg = <0x30a90000 0x10000>;
1142 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
1143 clocks = <&clk IMX8MQ_CLK_CSI1_ROOT>;
1144 clock-names = "mclk";
1145 status = "disabled";
1146
1147 port {
1148 csi1_ep: endpoint {
1149 remote-endpoint = <&csi1_mipi_ep>;
1150 };
1151 };
1152 };
1153
1154 mipi_csi2: csi@30b60000 {
1155 compatible = "fsl,imx8mq-mipi-csi2";
1156 reg = <0x30b60000 0x1000>;
1157 clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
1158 <&clk IMX8MQ_CLK_CSI2_ESC>,
1159 <&clk IMX8MQ_CLK_CSI2_PHY_REF>;
1160 clock-names = "core", "esc", "ui";
1161 assigned-clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
1162 <&clk IMX8MQ_CLK_CSI2_PHY_REF>,
1163 <&clk IMX8MQ_CLK_CSI2_ESC>;
1164 assigned-clock-rates = <266000000>, <333000000>, <66000000>;
1165 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1166 <&clk IMX8MQ_SYS2_PLL_1000M>,
1167 <&clk IMX8MQ_SYS1_PLL_800M>;
1168 power-domains = <&pgc_mipi_csi2>;
1169 resets = <&src IMX8MQ_RESET_MIPI_CSI2_CORE_RESET>,
1170 <&src IMX8MQ_RESET_MIPI_CSI2_PHY_REF_RESET>,
1171 <&src IMX8MQ_RESET_MIPI_CSI2_ESC_RESET>;
1172 fsl,mipi-phy-gpr = <&iomuxc_gpr 0xa4>;
1173 interconnects = <&noc IMX8MQ_ICM_CSI2 &noc IMX8MQ_ICS_DRAM>;
1174 interconnect-names = "dram";
1175 status = "disabled";
1176
1177 ports {
1178 #address-cells = <1>;
1179 #size-cells = <0>;
1180
1181 port@0 {
1182 reg = <0>;
1183
1184 csi2_mipi_ep: endpoint {
1185 remote-endpoint = <&csi2_ep>;
1186 };
1187 };
1188 };
1189 };
1190
1191 csi2: csi@30b80000 {
1192 compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
1193 reg = <0x30b80000 0x10000>;
1194 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
1195 clocks = <&clk IMX8MQ_CLK_CSI2_ROOT>;
1196 clock-names = "mclk";
1197 status = "disabled";
1198
1199 port {
1200 csi2_ep: endpoint {
1201 remote-endpoint = <&csi2_mipi_ep>;
1202 };
1203 };
1204 };
1205
Peng Fanbbfc59b2020-06-01 16:20:01 +08001206 mu: mailbox@30aa0000 {
1207 compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
1208 reg = <0x30aa0000 0x10000>;
1209 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1210 clocks = <&clk IMX8MQ_CLK_MU_ROOT>;
1211 #mbox-cells = <2>;
1212 };
1213
Lucas Stach748f9082018-12-09 14:26:07 +00001214 usdhc1: mmc@30b40000 {
1215 compatible = "fsl,imx8mq-usdhc",
1216 "fsl,imx7d-usdhc";
1217 reg = <0x30b40000 0x10000>;
1218 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +08001219 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +00001220 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1221 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
1222 clock-names = "ipg", "ahb", "per";
Lucas Stach748f9082018-12-09 14:26:07 +00001223 fsl,tuning-start-tap = <20>;
1224 fsl,tuning-step = <2>;
1225 bus-width = <4>;
1226 status = "disabled";
1227 };
1228
1229 usdhc2: mmc@30b50000 {
1230 compatible = "fsl,imx8mq-usdhc",
1231 "fsl,imx7d-usdhc";
1232 reg = <0x30b50000 0x10000>;
1233 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +08001234 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +00001235 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1236 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
1237 clock-names = "ipg", "ahb", "per";
1238 fsl,tuning-start-tap = <20>;
1239 fsl,tuning-step = <2>;
1240 bus-width = <4>;
1241 status = "disabled";
1242 };
1243
Carlo Caione39f16222019-02-11 09:53:35 +08001244 qspi0: spi@30bb0000 {
1245 #address-cells = <1>;
1246 #size-cells = <0>;
1247 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
1248 reg = <0x30bb0000 0x10000>,
1249 <0x08000000 0x10000000>;
1250 reg-names = "QuadSPI", "QuadSPI-memory";
1251 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1252 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1253 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1254 clock-names = "qspi_en", "qspi";
1255 status = "disabled";
1256 };
1257
Daniel Baluta1474d482019-03-19 17:48:37 +00001258 sdma1: sdma@30bd0000 {
Angus Ainslie (Purism)b6c846b2019-03-29 08:21:28 -07001259 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
Daniel Baluta1474d482019-03-19 17:48:37 +00001260 reg = <0x30bd0000 0x10000>;
1261 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1262 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
Angus Ainslie (Purism)7240d7d2019-03-29 08:21:30 -07001263 <&clk IMX8MQ_CLK_AHB>;
Daniel Baluta1474d482019-03-19 17:48:37 +00001264 clock-names = "ipg", "ahb";
1265 #dma-cells = <3>;
1266 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1267 };
1268
Lucas Stach748f9082018-12-09 14:26:07 +00001269 fec1: ethernet@30be0000 {
1270 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1271 reg = <0x30be0000 0x10000>;
1272 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1273 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
Fabio Estevamd3762a42020-08-18 22:59:46 -03001274 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
1275 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
Lucas Stach748f9082018-12-09 14:26:07 +00001276 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1277 <&clk IMX8MQ_CLK_ENET1_ROOT>,
1278 <&clk IMX8MQ_CLK_ENET_TIMER>,
1279 <&clk IMX8MQ_CLK_ENET_REF>,
1280 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1281 clock-names = "ipg", "ahb", "ptp",
1282 "enet_clk_ref", "enet_out";
Joakim Zhang6c17f2d62021-01-16 16:44:29 +08001283 assigned-clocks = <&clk IMX8MQ_CLK_ENET_AXI>,
1284 <&clk IMX8MQ_CLK_ENET_TIMER>,
1285 <&clk IMX8MQ_CLK_ENET_REF>,
1286 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1287 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1288 <&clk IMX8MQ_SYS2_PLL_100M>,
1289 <&clk IMX8MQ_SYS2_PLL_125M>,
1290 <&clk IMX8MQ_SYS2_PLL_50M>;
1291 assigned-clock-rates = <0>, <100000000>, <125000000>, <0>;
Lucas Stach748f9082018-12-09 14:26:07 +00001292 fsl,num-tx-queues = <3>;
1293 fsl,num-rx-queues = <3>;
Joakim Zhang066438a2021-01-16 16:44:30 +08001294 nvmem-cells = <&fec_mac_address>;
1295 nvmem-cell-names = "mac-address";
1296 nvmem_macaddr_swap;
Joakim Zhangafe99352021-01-16 16:44:31 +08001297 fsl,stop-mode = <&iomuxc_gpr 0x10 3>;
Lucas Stach748f9082018-12-09 14:26:07 +00001298 status = "disabled";
1299 };
1300 };
1301
Leonard Crestezf18e6d52021-01-07 13:17:50 +01001302 noc: interconnect@32700000 {
1303 compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc";
1304 reg = <0x32700000 0x100000>;
1305 clocks = <&clk IMX8MQ_CLK_NOC>;
1306 fsl,ddrc = <&ddrc>;
Martin Kepplinger20cf8d92021-01-11 09:21:44 +01001307 #interconnect-cells = <1>;
Leonard Crestezf18e6d52021-01-07 13:17:50 +01001308 operating-points-v2 = <&noc_opp_table>;
1309
1310 noc_opp_table: opp-table {
1311 compatible = "operating-points-v2";
1312
1313 opp-133M {
1314 opp-hz = /bits/ 64 <133333333>;
1315 };
1316
1317 opp-400M {
1318 opp-hz = /bits/ 64 <400000000>;
1319 };
1320
1321 opp-800M {
1322 opp-hz = /bits/ 64 <800000000>;
1323 };
1324 };
1325 };
1326
Guido Günther4af3cfe2019-04-30 19:15:55 +02001327 bus@32c00000 { /* AIPS4 */
Peng Fandc3efc62020-03-11 15:17:56 +08001328 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -03001329 reg = <0x32c00000 0x400000>;
Guido Günther4af3cfe2019-04-30 19:15:55 +02001330 #address-cells = <1>;
1331 #size-cells = <1>;
1332 ranges = <0x32c00000 0x32c00000 0x400000>;
1333
1334 irqsteer: interrupt-controller@32e2d000 {
1335 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1336 reg = <0x32e2d000 0x1000>;
1337 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1338 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1339 clock-names = "ipg";
1340 fsl,channel = <0>;
1341 fsl,num-irqs = <64>;
1342 interrupt-controller;
1343 #interrupt-cells = <1>;
1344 };
1345 };
1346
Lucas Stach45d2c842019-04-04 18:52:11 +02001347 gpu: gpu@38000000 {
1348 compatible = "vivante,gc";
1349 reg = <0x38000000 0x40000>;
1350 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1351 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1352 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1353 <&clk IMX8MQ_CLK_GPU_AXI>,
1354 <&clk IMX8MQ_CLK_GPU_AHB>;
1355 clock-names = "core", "shader", "bus", "reg";
Guido Günther9404f2e2019-09-11 19:40:35 -07001356 #cooling-cells = <2>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001357 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1358 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1359 <&clk IMX8MQ_CLK_GPU_AXI>,
Lucas Stachade5a572019-04-15 15:59:22 +02001360 <&clk IMX8MQ_CLK_GPU_AHB>,
1361 <&clk IMX8MQ_GPU_PLL_BYPASS>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001362 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1363 <&clk IMX8MQ_GPU_PLL_OUT>,
1364 <&clk IMX8MQ_GPU_PLL_OUT>,
Lucas Stachade5a572019-04-15 15:59:22 +02001365 <&clk IMX8MQ_GPU_PLL_OUT>,
1366 <&clk IMX8MQ_GPU_PLL>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001367 assigned-clock-rates = <800000000>, <800000000>,
Lucas Stachade5a572019-04-15 15:59:22 +02001368 <800000000>, <800000000>, <0>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001369 power-domains = <&pgc_gpu>;
1370 };
1371
Lucas Stachad375492019-01-25 17:25:58 +01001372 usb_dwc3_0: usb@38100000 {
1373 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1374 reg = <0x38100000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001375 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001376 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001377 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001378 clock-names = "bus_early", "ref", "suspend";
1379 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1380 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1381 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1382 <&clk IMX8MQ_SYS1_PLL_100M>;
1383 assigned-clock-rates = <500000000>, <100000000>;
1384 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1385 phys = <&usb3_phy0>, <&usb3_phy0>;
1386 phy-names = "usb2-phy", "usb3-phy";
1387 power-domains = <&pgc_otg1>;
1388 usb3-resume-missing-cas;
1389 status = "disabled";
1390 };
1391
1392 usb3_phy0: usb-phy@381f0040 {
1393 compatible = "fsl,imx8mq-usb-phy";
1394 reg = <0x381f0040 0x40>;
1395 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1396 clock-names = "phy";
1397 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1398 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1399 assigned-clock-rates = <100000000>;
1400 #phy-cells = <0>;
1401 status = "disabled";
1402 };
1403
1404 usb_dwc3_1: usb@38200000 {
1405 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1406 reg = <0x38200000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001407 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001408 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001409 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001410 clock-names = "bus_early", "ref", "suspend";
1411 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1412 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1413 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1414 <&clk IMX8MQ_SYS1_PLL_100M>;
1415 assigned-clock-rates = <500000000>, <100000000>;
1416 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1417 phys = <&usb3_phy1>, <&usb3_phy1>;
1418 phy-names = "usb2-phy", "usb3-phy";
1419 power-domains = <&pgc_otg2>;
1420 usb3-resume-missing-cas;
1421 status = "disabled";
1422 };
1423
1424 usb3_phy1: usb-phy@382f0040 {
1425 compatible = "fsl,imx8mq-usb-phy";
1426 reg = <0x382f0040 0x40>;
1427 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1428 clock-names = "phy";
1429 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1430 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1431 assigned-clock-rates = <100000000>;
1432 #phy-cells = <0>;
1433 status = "disabled";
1434 };
1435
Philipp Zabel36cebea2020-03-20 14:12:55 +01001436 vpu: video-codec@38300000 {
1437 compatible = "nxp,imx8mq-vpu";
1438 reg = <0x38300000 0x10000>,
1439 <0x38310000 0x10000>,
1440 <0x38320000 0x10000>;
1441 reg-names = "g1", "g2", "ctrl";
1442 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1443 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1444 interrupt-names = "g1", "g2";
1445 clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>,
1446 <&clk IMX8MQ_CLK_VPU_G2_ROOT>,
1447 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
1448 clock-names = "g1", "g2", "bus";
1449 assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>,
1450 <&clk IMX8MQ_CLK_VPU_G2>,
1451 <&clk IMX8MQ_CLK_VPU_BUS>,
1452 <&clk IMX8MQ_VPU_PLL_BYPASS>;
1453 assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>,
1454 <&clk IMX8MQ_VPU_PLL_OUT>,
1455 <&clk IMX8MQ_SYS1_PLL_800M>,
1456 <&clk IMX8MQ_VPU_PLL>;
1457 assigned-clock-rates = <600000000>, <600000000>,
1458 <800000000>, <0>;
1459 power-domains = <&pgc_vpu>;
1460 };
1461
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001462 pcie0: pcie@33800000 {
1463 compatible = "fsl,imx8mq-pcie";
1464 reg = <0x33800000 0x400000>,
1465 <0x1ff00000 0x80000>;
1466 reg-names = "dbi", "config";
1467 #address-cells = <3>;
1468 #size-cells = <2>;
1469 device_type = "pci";
1470 bus-range = <0x00 0xff>;
1471 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
1472 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
1473 num-lanes = <1>;
1474 num-viewport = <4>;
1475 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1476 interrupt-names = "msi";
1477 #interrupt-cells = <1>;
1478 interrupt-map-mask = <0 0 0 0x7>;
1479 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1480 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1481 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1482 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1483 fsl,max-link-speed = <2>;
Peng Fanc0b70f02021-01-15 11:26:57 +08001484 linux,pci-domain = <0>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001485 power-domains = <&pgc_pcie>;
1486 resets = <&src IMX8MQ_RESET_PCIEPHY>,
1487 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1488 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1489 reset-names = "pciephy", "apps", "turnoff";
Lucas Stach15a52612021-05-08 00:12:13 +02001490 assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
1491 <&clk IMX8MQ_CLK_PCIE1_PHY>,
1492 <&clk IMX8MQ_CLK_PCIE1_AUX>;
1493 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1494 <&clk IMX8MQ_SYS2_PLL_100M>,
1495 <&clk IMX8MQ_SYS1_PLL_80M>;
1496 assigned-clock-rates = <250000000>, <100000000>,
1497 <10000000>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001498 status = "disabled";
1499 };
1500
1501 pcie1: pcie@33c00000 {
1502 compatible = "fsl,imx8mq-pcie";
1503 reg = <0x33c00000 0x400000>,
1504 <0x27f00000 0x80000>;
1505 reg-names = "dbi", "config";
1506 #address-cells = <3>;
1507 #size-cells = <2>;
1508 device_type = "pci";
1509 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
1510 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
1511 num-lanes = <1>;
1512 num-viewport = <4>;
1513 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1514 interrupt-names = "msi";
1515 #interrupt-cells = <1>;
1516 interrupt-map-mask = <0 0 0 0x7>;
1517 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1518 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1519 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1520 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1521 fsl,max-link-speed = <2>;
Peng Fanc0b70f02021-01-15 11:26:57 +08001522 linux,pci-domain = <1>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001523 power-domains = <&pgc_pcie>;
1524 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1525 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1526 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1527 reset-names = "pciephy", "apps", "turnoff";
Lucas Stach15a52612021-05-08 00:12:13 +02001528 assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
1529 <&clk IMX8MQ_CLK_PCIE2_PHY>,
1530 <&clk IMX8MQ_CLK_PCIE2_AUX>;
1531 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1532 <&clk IMX8MQ_SYS2_PLL_100M>,
1533 <&clk IMX8MQ_SYS1_PLL_80M>;
1534 assigned-clock-rates = <250000000>, <100000000>,
1535 <10000000>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001536 status = "disabled";
1537 };
1538
Lucas Stach748f9082018-12-09 14:26:07 +00001539 gic: interrupt-controller@38800000 {
1540 compatible = "arm,gic-v3";
1541 reg = <0x38800000 0x10000>, /* GIC Dist */
1542 <0x38880000 0xc0000>, /* GICR */
1543 <0x31000000 0x2000>, /* GICC */
1544 <0x31010000 0x2000>, /* GICV */
1545 <0x31020000 0x2000>; /* GICH */
1546 #interrupt-cells = <3>;
1547 interrupt-controller;
1548 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1549 interrupt-parent = <&gic>;
1550 };
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001551
Leonard Crestez0376f6e2019-11-22 23:45:04 +02001552 ddrc: memory-controller@3d400000 {
1553 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1554 reg = <0x3d400000 0x400000>;
1555 clock-names = "core", "pll", "alt", "apb";
1556 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1557 <&clk IMX8MQ_DRAM_PLL_OUT>,
1558 <&clk IMX8MQ_CLK_DRAM_ALT>,
1559 <&clk IMX8MQ_CLK_DRAM_APB>;
1560 };
1561
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001562 ddr-pmu@3d800000 {
1563 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1564 reg = <0x3d800000 0x400000>;
1565 interrupt-parent = <&gic>;
1566 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1567 };
Lucas Stach748f9082018-12-09 14:26:07 +00001568 };
1569};