blob: 95d8b95d6120375445d0d822d33ceea277236762 [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";
Peng Fancb551b52021-11-12 14:26:02 +0800105 i-cache-size = <0x8000>;
106 i-cache-line-size = <64>;
107 i-cache-sets = <256>;
108 d-cache-size = <0x8000>;
109 d-cache-line-size = <64>;
110 d-cache-sets = <128>;
Lucas Stach748f9082018-12-09 14:26:07 +0000111 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000112 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800113 #cooling-cells = <2>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000114 nvmem-cells = <&cpu_speed_grade>;
115 nvmem-cell-names = "speed_grade";
Lucas Stach748f9082018-12-09 14:26:07 +0000116 };
117
118 A53_1: cpu@1 {
119 device_type = "cpu";
120 compatible = "arm,cortex-a53";
121 reg = <0x1>;
Abel Vesab810641a2019-02-28 21:42:44 +0000122 clock-latency = <61036>; /* two CLK32 periods */
123 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000124 enable-method = "psci";
Peng Fancb551b52021-11-12 14:26:02 +0800125 i-cache-size = <0x8000>;
126 i-cache-line-size = <64>;
127 i-cache-sets = <256>;
128 d-cache-size = <0x8000>;
129 d-cache-line-size = <64>;
130 d-cache-sets = <128>;
Lucas Stach748f9082018-12-09 14:26:07 +0000131 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_2: cpu@2 {
137 device_type = "cpu";
138 compatible = "arm,cortex-a53";
139 reg = <0x2>;
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";
Peng Fancb551b52021-11-12 14:26:02 +0800143 i-cache-size = <0x8000>;
144 i-cache-line-size = <64>;
145 i-cache-sets = <256>;
146 d-cache-size = <0x8000>;
147 d-cache-line-size = <64>;
148 d-cache-sets = <128>;
Lucas Stach748f9082018-12-09 14:26:07 +0000149 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000150 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800151 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000152 };
153
154 A53_3: cpu@3 {
155 device_type = "cpu";
156 compatible = "arm,cortex-a53";
157 reg = <0x3>;
Abel Vesab810641a2019-02-28 21:42:44 +0000158 clock-latency = <61036>; /* two CLK32 periods */
159 clocks = <&clk IMX8MQ_CLK_ARM>;
Lucas Stach748f9082018-12-09 14:26:07 +0000160 enable-method = "psci";
Peng Fancb551b52021-11-12 14:26:02 +0800161 i-cache-size = <0x8000>;
162 i-cache-line-size = <64>;
163 i-cache-sets = <256>;
164 d-cache-size = <0x8000>;
165 d-cache-line-size = <64>;
166 d-cache-sets = <128>;
Lucas Stach748f9082018-12-09 14:26:07 +0000167 next-level-cache = <&A53_L2>;
Abel Vesa64d26f82019-02-28 21:42:46 +0000168 operating-points-v2 = <&a53_opp_table>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800169 #cooling-cells = <2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000170 };
171
172 A53_L2: l2-cache0 {
173 compatible = "cache";
Peng Fancb551b52021-11-12 14:26:02 +0800174 cache-level = <2>;
175 cache-size = <0x100000>;
176 cache-line-size = <64>;
177 cache-sets = <1024>;
Lucas Stach748f9082018-12-09 14:26:07 +0000178 };
179 };
180
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300181 a53_opp_table: opp-table {
182 compatible = "operating-points-v2";
183 opp-shared;
184
185 opp-800000000 {
186 opp-hz = /bits/ 64 <800000000>;
187 opp-microvolt = <900000>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000188 /* Industrial only */
189 opp-supported-hw = <0xf>, <0x4>;
190 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800191 opp-suspend;
Leonard Crestez12629c52019-05-13 11:01:43 +0000192 };
193
194 opp-1000000000 {
195 opp-hz = /bits/ 64 <1000000000>;
196 opp-microvolt = <900000>;
197 /* Consumer only */
198 opp-supported-hw = <0xe>, <0x3>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300199 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800200 opp-suspend;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300201 };
202
Lucas Stach8cfd8132019-04-03 18:52:18 +0200203 opp-1300000000 {
204 opp-hz = /bits/ 64 <1300000000>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300205 opp-microvolt = <1000000>;
Anson Huang9eced3a2019-06-29 18:21:57 +0800206 opp-supported-hw = <0xc>, <0x4>;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300207 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800208 opp-suspend;
Leonard Crestez12629c52019-05-13 11:01:43 +0000209 };
210
211 opp-1500000000 {
212 opp-hz = /bits/ 64 <1500000000>;
213 opp-microvolt = <1000000>;
Anson Huang9eced3a2019-06-29 18:21:57 +0800214 opp-supported-hw = <0x8>, <0x3>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000215 clock-latency-ns = <150000>;
Anson Huangdb4cfe22019-07-09 16:00:14 +0800216 opp-suspend;
Fabio Estevamdbde7ec2019-03-20 17:05:19 -0300217 };
218 };
219
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000220 pmu {
221 compatible = "arm,cortex-a53-pmu";
222 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
223 interrupt-parent = <&gic>;
Carlo Caioneb3f6a5f2019-02-02 14:41:58 +0000224 };
225
Lucas Stach748f9082018-12-09 14:26:07 +0000226 psci {
227 compatible = "arm,psci-1.0";
228 method = "smc";
229 };
230
Fabio Estevamcddbea82019-03-25 12:19:59 -0300231 thermal-zones {
Vitor Massaru Ihac5486812020-03-02 22:15:16 -0300232 cpu_thermal: cpu-thermal {
Fabio Estevamcddbea82019-03-25 12:19:59 -0300233 polling-delay-passive = <250>;
234 polling-delay = <2000>;
235 thermal-sensors = <&tmu 0>;
236
237 trips {
238 cpu_alert: cpu-alert {
239 temperature = <80000>;
240 hysteresis = <2000>;
241 type = "passive";
242 };
243
244 cpu-crit {
245 temperature = <90000>;
246 hysteresis = <2000>;
247 type = "critical";
248 };
249 };
250
251 cooling-maps {
252 map0 {
253 trip = <&cpu_alert>;
254 cooling-device =
255 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
256 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
257 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
258 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
259 };
260 };
261 };
262
263 gpu-thermal {
264 polling-delay-passive = <250>;
265 polling-delay = <2000>;
266 thermal-sensors = <&tmu 1>;
267
268 trips {
Guido Günther9404f2e2019-09-11 19:40:35 -0700269 gpu_alert: gpu-alert {
270 temperature = <80000>;
271 hysteresis = <2000>;
272 type = "passive";
273 };
274
Fabio Estevamcddbea82019-03-25 12:19:59 -0300275 gpu-crit {
276 temperature = <90000>;
277 hysteresis = <2000>;
278 type = "critical";
279 };
280 };
Guido Günther9404f2e2019-09-11 19:40:35 -0700281
282 cooling-maps {
283 map0 {
284 trip = <&gpu_alert>;
285 cooling-device =
286 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
287 };
288 };
Fabio Estevamcddbea82019-03-25 12:19:59 -0300289 };
290
291 vpu-thermal {
292 polling-delay-passive = <250>;
293 polling-delay = <2000>;
294 thermal-sensors = <&tmu 2>;
295
296 trips {
297 vpu-crit {
298 temperature = <90000>;
299 hysteresis = <2000>;
300 type = "critical";
301 };
302 };
303 };
304 };
305
Lucas Stach748f9082018-12-09 14:26:07 +0000306 timer {
307 compatible = "arm,armv8-timer";
308 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */
309 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */
310 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */
311 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */
312 interrupt-parent = <&gic>;
313 arm,no-tick-in-suspend;
314 };
315
316 soc@0 {
Alice Guoce584592021-01-04 17:15:42 +0800317 compatible = "fsl,imx8mq-soc", "simple-bus";
Lucas Stach748f9082018-12-09 14:26:07 +0000318 #address-cells = <1>;
319 #size-cells = <1>;
320 ranges = <0x0 0x0 0x0 0x3e000000>;
Lucas Stachca04fed2019-02-08 19:53:49 +0100321 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>;
Alice Guocbff2372021-01-04 17:15:43 +0800322 nvmem-cells = <&imx8mq_uid>;
323 nvmem-cell-names = "soc_unique_id";
Lucas Stach748f9082018-12-09 14:26:07 +0000324
325 bus@30000000 { /* AIPS1 */
Peng Fandc3efc62020-03-11 15:17:56 +0800326 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300327 reg = <0x30000000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000328 #address-cells = <1>;
329 #size-cells = <1>;
330 ranges = <0x30000000 0x30000000 0x400000>;
331
Lucas Stachfcb19912019-11-27 19:21:26 +0100332 sai1: sai@30010000 {
333 #sound-dai-cells = <0>;
334 compatible = "fsl,imx8mq-sai";
335 reg = <0x30010000 0x10000>;
336 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
337 clocks = <&clk IMX8MQ_CLK_SAI1_IPG>,
338 <&clk IMX8MQ_CLK_SAI1_ROOT>,
339 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
340 clock-names = "bus", "mclk1", "mclk2", "mclk3";
341 dmas = <&sdma2 8 24 0>, <&sdma1 9 24 0>;
342 dma-names = "rx", "tx";
343 status = "disabled";
344 };
345
346 sai6: sai@30030000 {
347 #sound-dai-cells = <0>;
348 compatible = "fsl,imx8mq-sai";
349 reg = <0x30030000 0x10000>;
350 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
351 clocks = <&clk IMX8MQ_CLK_SAI6_IPG>,
352 <&clk IMX8MQ_CLK_SAI6_ROOT>,
353 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
354 clock-names = "bus", "mclk1", "mclk2", "mclk3";
355 dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
356 dma-names = "rx", "tx";
357 status = "disabled";
358 };
359
360 sai5: sai@30040000 {
361 #sound-dai-cells = <0>;
362 compatible = "fsl,imx8mq-sai";
363 reg = <0x30040000 0x10000>;
364 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
365 clocks = <&clk IMX8MQ_CLK_SAI5_IPG>,
366 <&clk IMX8MQ_CLK_SAI5_ROOT>,
367 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
368 clock-names = "bus", "mclk1", "mclk2", "mclk3";
369 dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
370 dma-names = "rx", "tx";
371 status = "disabled";
372 };
373
374 sai4: sai@30050000 {
375 #sound-dai-cells = <0>;
376 compatible = "fsl,imx8mq-sai";
377 reg = <0x30050000 0x10000>;
378 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
379 clocks = <&clk IMX8MQ_CLK_SAI4_IPG>,
380 <&clk IMX8MQ_CLK_SAI4_ROOT>,
381 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
382 clock-names = "bus", "mclk1", "mclk2", "mclk3";
383 dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
384 dma-names = "rx", "tx";
385 status = "disabled";
386 };
387
Lucas Stach748f9082018-12-09 14:26:07 +0000388 gpio1: gpio@30200000 {
389 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
390 reg = <0x30200000 0x10000>;
391 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
392 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000393 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000394 gpio-controller;
395 #gpio-cells = <2>;
396 interrupt-controller;
397 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800398 gpio-ranges = <&iomuxc 0 10 30>;
Lucas Stach748f9082018-12-09 14:26:07 +0000399 };
400
401 gpio2: gpio@30210000 {
402 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
403 reg = <0x30210000 0x10000>;
404 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
405 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000406 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000407 gpio-controller;
408 #gpio-cells = <2>;
409 interrupt-controller;
410 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800411 gpio-ranges = <&iomuxc 0 40 21>;
Lucas Stach748f9082018-12-09 14:26:07 +0000412 };
413
414 gpio3: gpio@30220000 {
415 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
416 reg = <0x30220000 0x10000>;
417 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
418 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000419 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000420 gpio-controller;
421 #gpio-cells = <2>;
422 interrupt-controller;
423 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800424 gpio-ranges = <&iomuxc 0 61 26>;
Lucas Stach748f9082018-12-09 14:26:07 +0000425 };
426
427 gpio4: gpio@30230000 {
428 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
429 reg = <0x30230000 0x10000>;
430 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
431 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000432 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000433 gpio-controller;
434 #gpio-cells = <2>;
435 interrupt-controller;
436 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800437 gpio-ranges = <&iomuxc 0 87 32>;
Lucas Stach748f9082018-12-09 14:26:07 +0000438 };
439
440 gpio5: gpio@30240000 {
441 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio";
442 reg = <0x30240000 0x10000>;
443 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
444 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang580b0642019-02-27 01:28:32 +0000445 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>;
Lucas Stach748f9082018-12-09 14:26:07 +0000446 gpio-controller;
447 #gpio-cells = <2>;
448 interrupt-controller;
449 #interrupt-cells = <2>;
Anson Huang26c2f552019-07-02 09:43:59 +0800450 gpio-ranges = <&iomuxc 0 119 30>;
Lucas Stach748f9082018-12-09 14:26:07 +0000451 };
452
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800453 tmu: tmu@30260000 {
454 compatible = "fsl,imx8mq-tmu";
455 reg = <0x30260000 0x10000>;
Krzysztof Kozlowski1f2f98f2020-08-29 13:12:48 +0200456 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang150736b2019-07-05 12:56:12 +0800457 clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
Angus Ainslie (Purism)e464fd2b2019-03-22 10:09:13 +0800458 little-endian;
459 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
460 fsl,tmu-calibration = <0x00000000 0x00000023
461 0x00000001 0x00000029
462 0x00000002 0x0000002f
463 0x00000003 0x00000035
464 0x00000004 0x0000003d
465 0x00000005 0x00000043
466 0x00000006 0x0000004b
467 0x00000007 0x00000051
468 0x00000008 0x00000057
469 0x00000009 0x0000005f
470 0x0000000a 0x00000067
471 0x0000000b 0x0000006f
472
473 0x00010000 0x0000001b
474 0x00010001 0x00000023
475 0x00010002 0x0000002b
476 0x00010003 0x00000033
477 0x00010004 0x0000003b
478 0x00010005 0x00000043
479 0x00010006 0x0000004b
480 0x00010007 0x00000055
481 0x00010008 0x0000005d
482 0x00010009 0x00000067
483 0x0001000a 0x00000070
484
485 0x00020000 0x00000017
486 0x00020001 0x00000023
487 0x00020002 0x0000002d
488 0x00020003 0x00000037
489 0x00020004 0x00000041
490 0x00020005 0x0000004b
491 0x00020006 0x00000057
492 0x00020007 0x00000063
493 0x00020008 0x0000006f
494
495 0x00030000 0x00000015
496 0x00030001 0x00000021
497 0x00030002 0x0000002d
498 0x00030003 0x00000039
499 0x00030004 0x00000045
500 0x00030005 0x00000053
501 0x00030006 0x0000005f
502 0x00030007 0x00000071>;
503 #thermal-sensor-cells = <1>;
504 };
505
Baruch Siachd3a2d722018-12-09 14:26:10 +0000506 wdog1: watchdog@30280000 {
507 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
508 reg = <0x30280000 0x10000>;
509 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
510 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>;
511 status = "disabled";
512 };
513
514 wdog2: watchdog@30290000 {
515 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
516 reg = <0x30290000 0x10000>;
517 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
518 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>;
519 status = "disabled";
520 };
521
522 wdog3: watchdog@302a0000 {
523 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt";
524 reg = <0x302a0000 0x10000>;
525 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
526 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>;
527 status = "disabled";
528 };
Lucas Stacha2b91ef2018-12-14 11:55:09 +0100529
Daniel Baluta1474d482019-03-19 17:48:37 +0000530 sdma2: sdma@302c0000 {
531 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
532 reg = <0x302c0000 0x10000>;
533 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
534 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
535 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
536 clock-names = "ipg", "ahb";
537 #dma-cells = <3>;
538 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
539 };
540
Guido Günther1987ddf2019-11-25 15:50:07 +0100541 lcdif: lcd-controller@30320000 {
542 compatible = "fsl,imx8mq-lcdif", "fsl,imx28-lcdif";
543 reg = <0x30320000 0x10000>;
544 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
545 clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
546 clock-names = "pix";
547 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
548 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
549 <&clk IMX8MQ_CLK_LCDIF_PIXEL>,
550 <&clk IMX8MQ_VIDEO_PLL1>;
551 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
552 <&clk IMX8MQ_VIDEO_PLL1>,
553 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
554 assigned-clock-rates = <0>, <0>, <0>, <594000000>;
Martin Kepplingerad1abc82021-01-07 13:17:53 +0100555 interconnects = <&noc IMX8MQ_ICM_LCDIF &noc IMX8MQ_ICS_DRAM>;
556 interconnect-names = "dram";
Guido Günther1987ddf2019-11-25 15:50:07 +0100557 status = "disabled";
Guido Güntherd0081bd2020-08-20 10:50:56 +0200558
559 port@0 {
560 lcdif_mipi_dsi: endpoint {
561 remote-endpoint = <&mipi_dsi_lcdif_in>;
562 };
563 };
Guido Günther1987ddf2019-11-25 15:50:07 +0100564 };
565
Anson Huangc18696d2020-02-26 13:36:17 +0800566 iomuxc: pinctrl@30330000 {
Lucas Stach748f9082018-12-09 14:26:07 +0000567 compatible = "fsl,imx8mq-iomuxc";
568 reg = <0x30330000 0x10000>;
569 };
570
571 iomuxc_gpr: syscon@30340000 {
Guido Günther21570182019-08-22 13:10:23 +0200572 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr",
573 "syscon", "simple-mfd";
Lucas Stach748f9082018-12-09 14:26:07 +0000574 reg = <0x30340000 0x10000>;
Guido Günther21570182019-08-22 13:10:23 +0200575
576 mux: mux-controller {
577 compatible = "mmio-mux";
578 #mux-control-cells = <1>;
579 mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */
580 };
Lucas Stach748f9082018-12-09 14:26:07 +0000581 };
582
Anson Huang12fa1072020-05-28 11:12:48 +0800583 ocotp: efuse@30350000 {
Carlo Caione9e113b22019-02-26 09:04:48 +0000584 compatible = "fsl,imx8mq-ocotp", "syscon";
585 reg = <0x30350000 0x10000>;
586 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>;
587 #address-cells = <1>;
588 #size-cells = <1>;
Leonard Crestez12629c52019-05-13 11:01:43 +0000589
Alice Guocbff2372021-01-04 17:15:43 +0800590 imx8mq_uid: soc-uid@410 {
591 reg = <0x4 0x8>;
592 };
593
Leonard Crestez12629c52019-05-13 11:01:43 +0000594 cpu_speed_grade: speed-grade@10 {
595 reg = <0x10 4>;
596 };
Joakim Zhang066438a2021-01-16 16:44:30 +0800597
598 fec_mac_address: mac-address@90 {
599 reg = <0x90 6>;
600 };
Carlo Caione9e113b22019-02-26 09:04:48 +0000601 };
602
Lucas Stach748f9082018-12-09 14:26:07 +0000603 anatop: syscon@30360000 {
604 compatible = "fsl,imx8mq-anatop", "syscon";
605 reg = <0x30360000 0x10000>;
606 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
607 };
608
Abel Vesa3ea95c32019-01-31 15:01:22 +0000609 snvs: snvs@30370000 {
610 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
611 reg = <0x30370000 0x10000>;
612
613 snvs_rtc: snvs-rtc-lp{
614 compatible = "fsl,sec-v4.0-mon-rtc-lp";
615 regmap =<&snvs>;
616 offset = <0x34>;
617 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
618 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
Anson Huang881b54c2019-05-24 13:44:06 +0800619 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
620 clock-names = "snvs-rtc";
Abel Vesa3ea95c32019-01-31 15:01:22 +0000621 };
622
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700623 snvs_pwrkey: snvs-powerkey {
624 compatible = "fsl,sec-v4.0-pwrkey";
625 regmap = <&snvs>;
626 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
André Draszikedd91ba2020-02-25 16:11:59 +0000627 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>;
628 clock-names = "snvs-pwrkey";
Angus Ainslie (Purism)a01194d2019-05-28 09:11:01 -0700629 linux,keycode = <KEY_POWER>;
630 wakeup-source;
631 status = "disabled";
632 };
Abel Vesa3ea95c32019-01-31 15:01:22 +0000633 };
634
Lucas Stach748f9082018-12-09 14:26:07 +0000635 clk: clock-controller@30380000 {
636 compatible = "fsl,imx8mq-ccm";
637 reg = <0x30380000 0x10000>;
638 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
639 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
640 #clock-cells = <1>;
641 clocks = <&ckil>, <&osc_25m>, <&osc_27m>,
642 <&clk_ext1>, <&clk_ext2>,
643 <&clk_ext3>, <&clk_ext4>;
644 clock-names = "ckil", "osc_25m", "osc_27m",
645 "clk_ext1", "clk_ext2",
646 "clk_ext3", "clk_ext4";
Peng Fan9e6337e2020-05-07 13:56:10 +0800647 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>,
648 <&clk IMX8MQ_CLK_A53_CORE>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800649 <&clk IMX8MQ_CLK_NOC>,
650 <&clk IMX8MQ_CLK_AUDIO_AHB>,
651 <&clk IMX8MQ_AUDIO_PLL1_BYPASS>,
652 <&clk IMX8MQ_AUDIO_PLL2_BYPASS>,
653 <&clk IMX8MQ_AUDIO_PLL1>,
654 <&clk IMX8MQ_AUDIO_PLL2>;
Peng Fan9e6337e2020-05-07 13:56:10 +0800655 assigned-clock-rates = <0>, <0>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800656 <800000000>,
657 <0>,
658 <0>,
659 <0>,
660 <786432000>,
661 <722534400>;
Peng Fan9e6337e2020-05-07 13:56:10 +0800662 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>,
Shengjiu Wang71fa01d2020-11-02 10:11:16 +0800663 <&clk IMX8MQ_ARM_PLL_OUT>,
664 <0>,
665 <&clk IMX8MQ_SYS2_PLL_500M>,
666 <&clk IMX8MQ_AUDIO_PLL1>,
667 <&clk IMX8MQ_AUDIO_PLL2>;
Lucas Stach748f9082018-12-09 14:26:07 +0000668 };
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100669
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700670 src: reset-controller@30390000 {
671 compatible = "fsl,imx8mq-src", "syscon";
672 reg = <0x30390000 0x10000>;
Anson Huangd0955f62020-05-09 16:17:50 +0800673 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
Andrey Smirnovd62a2502019-04-05 10:30:01 -0700674 #reset-cells = <1>;
675 };
676
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100677 gpc: gpc@303a0000 {
678 compatible = "fsl,imx8mq-gpc";
679 reg = <0x303a0000 0x10000>;
Krzysztof Kozlowski791619f2020-09-04 16:53:09 +0200680 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
Lucas Stachc4121232019-01-25 17:20:33 +0100681 interrupt-parent = <&gic>;
682 interrupt-controller;
683 #interrupt-cells = <3>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100684
685 pgc {
686 #address-cells = <1>;
687 #size-cells = <0>;
688
689 pgc_mipi: power-domain@0 {
690 #power-domain-cells = <0>;
691 reg = <IMX8M_POWER_DOMAIN_MIPI>;
692 };
693
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700694 /*
695 * As per comment in ATF source code:
696 *
697 * PCIE1 and PCIE2 share the
698 * same reset signal, if we
699 * power down PCIE2, PCIE1
700 * will be held in reset too.
701 *
702 * So instead of creating two
703 * separate power domains for
704 * PCIE1 and PCIE2 we create a
705 * link between both and use
706 * it as a shared PCIE power
707 * domain.
708 */
709 pgc_pcie: power-domain@1 {
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100710 #power-domain-cells = <0>;
711 reg = <IMX8M_POWER_DOMAIN_PCIE1>;
Andrey Smirnovde2a5382019-04-05 10:30:02 -0700712 power-domains = <&pgc_pcie2>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100713 };
714
715 pgc_otg1: power-domain@2 {
716 #power-domain-cells = <0>;
717 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>;
718 };
719
720 pgc_otg2: power-domain@3 {
721 #power-domain-cells = <0>;
722 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>;
723 };
724
725 pgc_ddr1: power-domain@4 {
726 #power-domain-cells = <0>;
727 reg = <IMX8M_POWER_DOMAIN_DDR1>;
728 };
729
730 pgc_gpu: power-domain@5 {
731 #power-domain-cells = <0>;
732 reg = <IMX8M_POWER_DOMAIN_GPU>;
733 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
734 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
735 <&clk IMX8MQ_CLK_GPU_AXI>,
736 <&clk IMX8MQ_CLK_GPU_AHB>;
737 };
738
739 pgc_vpu: power-domain@6 {
740 #power-domain-cells = <0>;
741 reg = <IMX8M_POWER_DOMAIN_VPU>;
Philipp Zabel36cebea2020-03-20 14:12:55 +0100742 clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
Lucas Stachfdbcc04d2019-01-15 12:01:44 +0100743 };
744
745 pgc_disp: power-domain@7 {
746 #power-domain-cells = <0>;
747 reg = <IMX8M_POWER_DOMAIN_DISP>;
748 };
749
750 pgc_mipi_csi1: power-domain@8 {
751 #power-domain-cells = <0>;
752 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>;
753 };
754
755 pgc_mipi_csi2: power-domain@9 {
756 #power-domain-cells = <0>;
757 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>;
758 };
759
760 pgc_pcie2: power-domain@a {
761 #power-domain-cells = <0>;
762 reg = <IMX8M_POWER_DOMAIN_PCIE2>;
763 };
764 };
765 };
Lucas Stach748f9082018-12-09 14:26:07 +0000766 };
767
768 bus@30400000 { /* AIPS2 */
Peng Fandc3efc62020-03-11 15:17:56 +0800769 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300770 reg = <0x30400000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000771 #address-cells = <1>;
772 #size-cells = <1>;
773 ranges = <0x30400000 0x30400000 0x400000>;
Guido Günthera0e046e2019-01-14 18:03:16 +0100774
775 pwm1: pwm@30660000 {
776 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
777 reg = <0x30660000 0x10000>;
778 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
779 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>,
780 <&clk IMX8MQ_CLK_PWM1_ROOT>;
781 clock-names = "ipg", "per";
782 #pwm-cells = <2>;
783 status = "disabled";
784 };
785
786 pwm2: pwm@30670000 {
787 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
788 reg = <0x30670000 0x10000>;
789 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
790 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>,
791 <&clk IMX8MQ_CLK_PWM2_ROOT>;
792 clock-names = "ipg", "per";
793 #pwm-cells = <2>;
794 status = "disabled";
795 };
796
797 pwm3: pwm@30680000 {
798 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
799 reg = <0x30680000 0x10000>;
800 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
801 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>,
802 <&clk IMX8MQ_CLK_PWM3_ROOT>;
803 clock-names = "ipg", "per";
804 #pwm-cells = <2>;
805 status = "disabled";
806 };
807
808 pwm4: pwm@30690000 {
809 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm";
810 reg = <0x30690000 0x10000>;
811 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
812 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>,
813 <&clk IMX8MQ_CLK_PWM4_ROOT>;
814 clock-names = "ipg", "per";
815 #pwm-cells = <2>;
816 status = "disabled";
817 };
Anson Huang24e8a5d2019-08-15 20:38:44 -0400818
819 system_counter: timer@306a0000 {
820 compatible = "nxp,sysctr-timer";
821 reg = <0x306a0000 0x20000>;
822 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
823 clocks = <&osc_25m>;
824 clock-names = "per";
825 };
Lucas Stach748f9082018-12-09 14:26:07 +0000826 };
827
828 bus@30800000 { /* AIPS3 */
Peng Fandc3efc62020-03-11 15:17:56 +0800829 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -0300830 reg = <0x30800000 0x400000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000831 #address-cells = <1>;
832 #size-cells = <1>;
Carlo Caione39f16222019-02-11 09:53:35 +0800833 ranges = <0x30800000 0x30800000 0x400000>,
834 <0x08000000 0x08000000 0x10000000>;
Lucas Stach748f9082018-12-09 14:26:07 +0000835
Shengjiu Wang08a1a2e2020-11-02 10:11:17 +0800836 spdif1: spdif@30810000 {
837 compatible = "fsl,imx35-spdif";
838 reg = <0x30810000 0x10000>;
839 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
840 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
841 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
842 <&clk IMX8MQ_CLK_SPDIF1>, /* rxtx1 */
843 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
844 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
845 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
846 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
847 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
848 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
849 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
850 clock-names = "core", "rxtx0",
851 "rxtx1", "rxtx2",
852 "rxtx3", "rxtx4",
853 "rxtx5", "rxtx6",
854 "rxtx7", "spba";
855 dmas = <&sdma1 8 18 0>, <&sdma1 9 18 0>;
856 dma-names = "rx", "tx";
857 status = "disabled";
858 };
859
Fabio Estevam85761f42019-01-28 10:08:13 -0200860 ecspi1: spi@30820000 {
861 #address-cells = <1>;
862 #size-cells = <0>;
863 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
864 reg = <0x30820000 0x10000>;
865 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
866 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
867 <&clk IMX8MQ_CLK_ECSPI1_ROOT>;
868 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300869 dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
870 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200871 status = "disabled";
872 };
873
874 ecspi2: spi@30830000 {
875 #address-cells = <1>;
876 #size-cells = <0>;
877 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
878 reg = <0x30830000 0x10000>;
879 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
880 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
881 <&clk IMX8MQ_CLK_ECSPI2_ROOT>;
882 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300883 dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
884 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200885 status = "disabled";
886 };
887
888 ecspi3: spi@30840000 {
889 #address-cells = <1>;
890 #size-cells = <0>;
891 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
892 reg = <0x30840000 0x10000>;
893 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
894 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
895 <&clk IMX8MQ_CLK_ECSPI3_ROOT>;
896 clock-names = "ipg", "per";
Fabio Estevam8b6b1752021-01-08 09:47:26 -0300897 dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
898 dma-names = "rx", "tx";
Fabio Estevam85761f42019-01-28 10:08:13 -0200899 status = "disabled";
900 };
Lucas Stach748f9082018-12-09 14:26:07 +0000901
902 uart1: serial@30860000 {
903 compatible = "fsl,imx8mq-uart",
904 "fsl,imx6q-uart";
905 reg = <0x30860000 0x10000>;
906 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
907 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>,
908 <&clk IMX8MQ_CLK_UART1_ROOT>;
909 clock-names = "ipg", "per";
910 status = "disabled";
911 };
912
913 uart3: serial@30880000 {
914 compatible = "fsl,imx8mq-uart",
915 "fsl,imx6q-uart";
916 reg = <0x30880000 0x10000>;
917 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
918 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>,
919 <&clk IMX8MQ_CLK_UART3_ROOT>;
920 clock-names = "ipg", "per";
921 status = "disabled";
922 };
923
924 uart2: serial@30890000 {
925 compatible = "fsl,imx8mq-uart",
926 "fsl,imx6q-uart";
927 reg = <0x30890000 0x10000>;
928 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
929 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>,
930 <&clk IMX8MQ_CLK_UART2_ROOT>;
931 clock-names = "ipg", "per";
932 status = "disabled";
933 };
934
Shengjiu Wang08a1a2e2020-11-02 10:11:17 +0800935 spdif2: spdif@308a0000 {
936 compatible = "fsl,imx35-spdif";
937 reg = <0x308a0000 0x10000>;
938 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
939 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, /* core */
940 <&clk IMX8MQ_CLK_25M>, /* rxtx0 */
941 <&clk IMX8MQ_CLK_SPDIF2>, /* rxtx1 */
942 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx2 */
943 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx3 */
944 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx4 */
945 <&clk IMX8MQ_CLK_IPG_ROOT>, /* rxtx5 */
946 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx6 */
947 <&clk IMX8MQ_CLK_DUMMY>, /* rxtx7 */
948 <&clk IMX8MQ_CLK_DUMMY>; /* spba */
949 clock-names = "core", "rxtx0",
950 "rxtx1", "rxtx2",
951 "rxtx3", "rxtx4",
952 "rxtx5", "rxtx6",
953 "rxtx7", "spba";
954 dmas = <&sdma1 16 18 0>, <&sdma1 17 18 0>;
955 dma-names = "rx", "tx";
956 status = "disabled";
957 };
958
Daniel Baluta8c615382019-03-19 17:48:40 +0000959 sai2: sai@308b0000 {
960 #sound-dai-cells = <0>;
Lucas Stach8d014842019-07-17 11:54:36 +0200961 compatible = "fsl,imx8mq-sai";
Daniel Baluta8c615382019-03-19 17:48:40 +0000962 reg = <0x308b0000 0x10000>;
963 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
964 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
965 <&clk IMX8MQ_CLK_SAI2_ROOT>,
966 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
967 clock-names = "bus", "mclk1", "mclk2", "mclk3";
968 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
969 dma-names = "rx", "tx";
970 status = "disabled";
971 };
972
Lucas Stachfcb19912019-11-27 19:21:26 +0100973 sai3: sai@308c0000 {
974 #sound-dai-cells = <0>;
975 compatible = "fsl,imx8mq-sai";
976 reg = <0x308c0000 0x10000>;
977 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
978 clocks = <&clk IMX8MQ_CLK_SAI3_IPG>,
979 <&clk IMX8MQ_CLK_SAI3_ROOT>,
980 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
981 clock-names = "bus", "mclk1", "mclk2", "mclk3";
982 dmas = <&sdma1 12 24 0>, <&sdma1 13 24 0>;
983 dma-names = "rx", "tx";
984 status = "disabled";
985 };
986
Andrey Smirnov007b3cf2019-08-30 14:01:39 -0700987 crypto: crypto@30900000 {
988 compatible = "fsl,sec-v4.0";
989 #address-cells = <1>;
990 #size-cells = <1>;
991 reg = <0x30900000 0x40000>;
992 ranges = <0 0x30900000 0x40000>;
993 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
994 clocks = <&clk IMX8MQ_CLK_AHB>,
995 <&clk IMX8MQ_CLK_IPG_ROOT>;
996 clock-names = "aclk", "ipg";
997
998 sec_jr0: jr@1000 {
999 compatible = "fsl,sec-v4.0-job-ring";
1000 reg = <0x1000 0x1000>;
1001 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
1002 };
1003
1004 sec_jr1: jr@2000 {
1005 compatible = "fsl,sec-v4.0-job-ring";
1006 reg = <0x2000 0x1000>;
1007 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
1008 };
1009
1010 sec_jr2: jr@3000 {
1011 compatible = "fsl,sec-v4.0-job-ring";
1012 reg = <0x3000 0x1000>;
1013 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
1014 };
1015 };
1016
Guido Güntherd0081bd2020-08-20 10:50:56 +02001017 mipi_dsi: mipi-dsi@30a00000 {
1018 compatible = "fsl,imx8mq-nwl-dsi";
1019 reg = <0x30a00000 0x300>;
1020 clocks = <&clk IMX8MQ_CLK_DSI_CORE>,
1021 <&clk IMX8MQ_CLK_DSI_AHB>,
1022 <&clk IMX8MQ_CLK_DSI_IPG_DIV>,
1023 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
1024 <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
1025 clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif";
1026 assigned-clocks = <&clk IMX8MQ_CLK_DSI_AHB>,
1027 <&clk IMX8MQ_CLK_DSI_CORE>,
1028 <&clk IMX8MQ_CLK_DSI_IPG_DIV>;
1029 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>,
1030 <&clk IMX8MQ_SYS1_PLL_266M>;
1031 assigned-clock-rates = <80000000>, <266000000>, <20000000>;
1032 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1033 mux-controls = <&mux 0>;
1034 power-domains = <&pgc_mipi>;
1035 phys = <&dphy>;
1036 phy-names = "dphy";
1037 resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>,
1038 <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>,
1039 <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>,
1040 <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>;
1041 reset-names = "byte", "dpi", "esc", "pclk";
1042 status = "disabled";
1043
1044 ports {
1045 #address-cells = <1>;
1046 #size-cells = <0>;
1047
1048 port@0 {
1049 reg = <0>;
1050 #address-cells = <1>;
1051 #size-cells = <0>;
1052 mipi_dsi_lcdif_in: endpoint@0 {
1053 reg = <0>;
1054 remote-endpoint = <&lcdif_mipi_dsi>;
1055 };
1056 };
1057 };
1058 };
1059
Guido Günthera99b26b2019-06-25 10:27:20 +02001060 dphy: dphy@30a00300 {
1061 compatible = "fsl,imx8mq-mipi-dphy";
1062 reg = <0x30a00300 0x100>;
1063 clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
1064 clock-names = "phy_ref";
Guido Günther62270ee2021-01-10 17:55:51 +01001065 assigned-clocks = <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
1066 <&clk IMX8MQ_VIDEO_PLL1_BYPASS>,
1067 <&clk IMX8MQ_CLK_DSI_PHY_REF>,
1068 <&clk IMX8MQ_VIDEO_PLL1>;
1069 assigned-clock-parents = <&clk IMX8MQ_CLK_25M>,
1070 <&clk IMX8MQ_VIDEO_PLL1>,
1071 <&clk IMX8MQ_VIDEO_PLL1_OUT>;
1072 assigned-clock-rates = <0>, <0>, <24000000>, <594000000>;
Guido Günthera99b26b2019-06-25 10:27:20 +02001073 #phy-cells = <0>;
1074 power-domains = <&pgc_mipi>;
1075 status = "disabled";
1076 };
1077
Lucas Stach748f9082018-12-09 14:26:07 +00001078 i2c1: i2c@30a20000 {
1079 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1080 reg = <0x30a20000 0x10000>;
1081 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
1082 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>;
1083 #address-cells = <1>;
1084 #size-cells = <0>;
1085 status = "disabled";
1086 };
1087
1088 i2c2: i2c@30a30000 {
1089 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1090 reg = <0x30a30000 0x10000>;
1091 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
1092 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>;
1093 #address-cells = <1>;
1094 #size-cells = <0>;
1095 status = "disabled";
1096 };
1097
1098 i2c3: i2c@30a40000 {
1099 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1100 reg = <0x30a40000 0x10000>;
1101 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1102 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>;
1103 #address-cells = <1>;
1104 #size-cells = <0>;
1105 status = "disabled";
1106 };
1107
1108 i2c4: i2c@30a50000 {
1109 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
1110 reg = <0x30a50000 0x10000>;
1111 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1112 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>;
1113 #address-cells = <1>;
1114 #size-cells = <0>;
1115 status = "disabled";
1116 };
1117
1118 uart4: serial@30a60000 {
1119 compatible = "fsl,imx8mq-uart",
1120 "fsl,imx6q-uart";
1121 reg = <0x30a60000 0x10000>;
1122 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
1123 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>,
1124 <&clk IMX8MQ_CLK_UART4_ROOT>;
1125 clock-names = "ipg", "per";
1126 status = "disabled";
1127 };
1128
Martin Kepplingerbcadd5f2021-07-26 10:21:17 +02001129 mipi_csi1: csi@30a70000 {
1130 compatible = "fsl,imx8mq-mipi-csi2";
1131 reg = <0x30a70000 0x1000>;
1132 clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
1133 <&clk IMX8MQ_CLK_CSI1_ESC>,
1134 <&clk IMX8MQ_CLK_CSI1_PHY_REF>;
1135 clock-names = "core", "esc", "ui";
1136 assigned-clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
1137 <&clk IMX8MQ_CLK_CSI1_PHY_REF>,
1138 <&clk IMX8MQ_CLK_CSI1_ESC>;
1139 assigned-clock-rates = <266000000>, <333000000>, <66000000>;
1140 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1141 <&clk IMX8MQ_SYS2_PLL_1000M>,
1142 <&clk IMX8MQ_SYS1_PLL_800M>;
1143 power-domains = <&pgc_mipi_csi1>;
1144 resets = <&src IMX8MQ_RESET_MIPI_CSI1_CORE_RESET>,
1145 <&src IMX8MQ_RESET_MIPI_CSI1_PHY_REF_RESET>,
1146 <&src IMX8MQ_RESET_MIPI_CSI1_ESC_RESET>;
1147 fsl,mipi-phy-gpr = <&iomuxc_gpr 0x88>;
1148 interconnects = <&noc IMX8MQ_ICM_CSI1 &noc IMX8MQ_ICS_DRAM>;
1149 interconnect-names = "dram";
1150 status = "disabled";
1151
1152 ports {
1153 #address-cells = <1>;
1154 #size-cells = <0>;
1155
1156 port@0 {
1157 reg = <0>;
1158
1159 csi1_mipi_ep: endpoint {
1160 remote-endpoint = <&csi1_ep>;
1161 };
1162 };
1163 };
1164 };
1165
1166 csi1: csi@30a90000 {
1167 compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
1168 reg = <0x30a90000 0x10000>;
1169 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
1170 clocks = <&clk IMX8MQ_CLK_CSI1_ROOT>;
1171 clock-names = "mclk";
1172 status = "disabled";
1173
1174 port {
1175 csi1_ep: endpoint {
1176 remote-endpoint = <&csi1_mipi_ep>;
1177 };
1178 };
1179 };
1180
1181 mipi_csi2: csi@30b60000 {
1182 compatible = "fsl,imx8mq-mipi-csi2";
1183 reg = <0x30b60000 0x1000>;
1184 clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
1185 <&clk IMX8MQ_CLK_CSI2_ESC>,
1186 <&clk IMX8MQ_CLK_CSI2_PHY_REF>;
1187 clock-names = "core", "esc", "ui";
1188 assigned-clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
1189 <&clk IMX8MQ_CLK_CSI2_PHY_REF>,
1190 <&clk IMX8MQ_CLK_CSI2_ESC>;
1191 assigned-clock-rates = <266000000>, <333000000>, <66000000>;
1192 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1193 <&clk IMX8MQ_SYS2_PLL_1000M>,
1194 <&clk IMX8MQ_SYS1_PLL_800M>;
1195 power-domains = <&pgc_mipi_csi2>;
1196 resets = <&src IMX8MQ_RESET_MIPI_CSI2_CORE_RESET>,
1197 <&src IMX8MQ_RESET_MIPI_CSI2_PHY_REF_RESET>,
1198 <&src IMX8MQ_RESET_MIPI_CSI2_ESC_RESET>;
1199 fsl,mipi-phy-gpr = <&iomuxc_gpr 0xa4>;
1200 interconnects = <&noc IMX8MQ_ICM_CSI2 &noc IMX8MQ_ICS_DRAM>;
1201 interconnect-names = "dram";
1202 status = "disabled";
1203
1204 ports {
1205 #address-cells = <1>;
1206 #size-cells = <0>;
1207
1208 port@0 {
1209 reg = <0>;
1210
1211 csi2_mipi_ep: endpoint {
1212 remote-endpoint = <&csi2_ep>;
1213 };
1214 };
1215 };
1216 };
1217
1218 csi2: csi@30b80000 {
1219 compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
1220 reg = <0x30b80000 0x10000>;
1221 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
1222 clocks = <&clk IMX8MQ_CLK_CSI2_ROOT>;
1223 clock-names = "mclk";
1224 status = "disabled";
1225
1226 port {
1227 csi2_ep: endpoint {
1228 remote-endpoint = <&csi2_mipi_ep>;
1229 };
1230 };
1231 };
1232
Peng Fanbbfc59b2020-06-01 16:20:01 +08001233 mu: mailbox@30aa0000 {
1234 compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
1235 reg = <0x30aa0000 0x10000>;
1236 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1237 clocks = <&clk IMX8MQ_CLK_MU_ROOT>;
1238 #mbox-cells = <2>;
1239 };
1240
Lucas Stach748f9082018-12-09 14:26:07 +00001241 usdhc1: mmc@30b40000 {
1242 compatible = "fsl,imx8mq-usdhc",
1243 "fsl,imx7d-usdhc";
1244 reg = <0x30b40000 0x10000>;
1245 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +08001246 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +00001247 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1248 <&clk IMX8MQ_CLK_USDHC1_ROOT>;
1249 clock-names = "ipg", "ahb", "per";
Lucas Stach748f9082018-12-09 14:26:07 +00001250 fsl,tuning-start-tap = <20>;
1251 fsl,tuning-step = <2>;
1252 bus-width = <4>;
1253 status = "disabled";
1254 };
1255
1256 usdhc2: mmc@30b50000 {
1257 compatible = "fsl,imx8mq-usdhc",
1258 "fsl,imx7d-usdhc";
1259 reg = <0x30b50000 0x10000>;
1260 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
Anson Huangb0759292019-10-08 08:55:43 +08001261 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>,
Lucas Stach748f9082018-12-09 14:26:07 +00001262 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
1263 <&clk IMX8MQ_CLK_USDHC2_ROOT>;
1264 clock-names = "ipg", "ahb", "per";
1265 fsl,tuning-start-tap = <20>;
1266 fsl,tuning-step = <2>;
1267 bus-width = <4>;
1268 status = "disabled";
1269 };
1270
Carlo Caione39f16222019-02-11 09:53:35 +08001271 qspi0: spi@30bb0000 {
1272 #address-cells = <1>;
1273 #size-cells = <0>;
1274 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi";
1275 reg = <0x30bb0000 0x10000>,
1276 <0x08000000 0x10000000>;
1277 reg-names = "QuadSPI", "QuadSPI-memory";
1278 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1279 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>,
1280 <&clk IMX8MQ_CLK_QSPI_ROOT>;
1281 clock-names = "qspi_en", "qspi";
1282 status = "disabled";
1283 };
1284
Daniel Baluta1474d482019-03-19 17:48:37 +00001285 sdma1: sdma@30bd0000 {
Angus Ainslie (Purism)b6c846b2019-03-29 08:21:28 -07001286 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma";
Daniel Baluta1474d482019-03-19 17:48:37 +00001287 reg = <0x30bd0000 0x10000>;
1288 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1289 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
Angus Ainslie (Purism)7240d7d2019-03-29 08:21:30 -07001290 <&clk IMX8MQ_CLK_AHB>;
Daniel Baluta1474d482019-03-19 17:48:37 +00001291 clock-names = "ipg", "ahb";
1292 #dma-cells = <3>;
1293 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
1294 };
1295
Lucas Stach748f9082018-12-09 14:26:07 +00001296 fec1: ethernet@30be0000 {
1297 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
1298 reg = <0x30be0000 0x10000>;
1299 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
1300 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
Fabio Estevamd3762a42020-08-18 22:59:46 -03001301 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
1302 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
Lucas Stach748f9082018-12-09 14:26:07 +00001303 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>,
1304 <&clk IMX8MQ_CLK_ENET1_ROOT>,
1305 <&clk IMX8MQ_CLK_ENET_TIMER>,
1306 <&clk IMX8MQ_CLK_ENET_REF>,
1307 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1308 clock-names = "ipg", "ahb", "ptp",
1309 "enet_clk_ref", "enet_out";
Joakim Zhang6c17f2d62021-01-16 16:44:29 +08001310 assigned-clocks = <&clk IMX8MQ_CLK_ENET_AXI>,
1311 <&clk IMX8MQ_CLK_ENET_TIMER>,
1312 <&clk IMX8MQ_CLK_ENET_REF>,
1313 <&clk IMX8MQ_CLK_ENET_PHY_REF>;
1314 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
1315 <&clk IMX8MQ_SYS2_PLL_100M>,
1316 <&clk IMX8MQ_SYS2_PLL_125M>,
1317 <&clk IMX8MQ_SYS2_PLL_50M>;
1318 assigned-clock-rates = <0>, <100000000>, <125000000>, <0>;
Lucas Stach748f9082018-12-09 14:26:07 +00001319 fsl,num-tx-queues = <3>;
1320 fsl,num-rx-queues = <3>;
Joakim Zhang066438a2021-01-16 16:44:30 +08001321 nvmem-cells = <&fec_mac_address>;
1322 nvmem-cell-names = "mac-address";
1323 nvmem_macaddr_swap;
Joakim Zhangafe99352021-01-16 16:44:31 +08001324 fsl,stop-mode = <&iomuxc_gpr 0x10 3>;
Lucas Stach748f9082018-12-09 14:26:07 +00001325 status = "disabled";
1326 };
1327 };
1328
Leonard Crestezf18e6d52021-01-07 13:17:50 +01001329 noc: interconnect@32700000 {
1330 compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc";
1331 reg = <0x32700000 0x100000>;
1332 clocks = <&clk IMX8MQ_CLK_NOC>;
1333 fsl,ddrc = <&ddrc>;
Martin Kepplinger20cf8d92021-01-11 09:21:44 +01001334 #interconnect-cells = <1>;
Leonard Crestezf18e6d52021-01-07 13:17:50 +01001335 operating-points-v2 = <&noc_opp_table>;
1336
1337 noc_opp_table: opp-table {
1338 compatible = "operating-points-v2";
1339
1340 opp-133M {
1341 opp-hz = /bits/ 64 <133333333>;
1342 };
1343
1344 opp-400M {
1345 opp-hz = /bits/ 64 <400000000>;
1346 };
1347
1348 opp-800M {
1349 opp-hz = /bits/ 64 <800000000>;
1350 };
1351 };
1352 };
1353
Guido Günther4af3cfe2019-04-30 19:15:55 +02001354 bus@32c00000 { /* AIPS4 */
Peng Fandc3efc62020-03-11 15:17:56 +08001355 compatible = "fsl,aips-bus", "simple-bus";
Fabio Estevam921a6842020-03-31 15:37:25 -03001356 reg = <0x32c00000 0x400000>;
Guido Günther4af3cfe2019-04-30 19:15:55 +02001357 #address-cells = <1>;
1358 #size-cells = <1>;
1359 ranges = <0x32c00000 0x32c00000 0x400000>;
1360
1361 irqsteer: interrupt-controller@32e2d000 {
1362 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer";
1363 reg = <0x32e2d000 0x1000>;
1364 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1365 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>;
1366 clock-names = "ipg";
1367 fsl,channel = <0>;
1368 fsl,num-irqs = <64>;
1369 interrupt-controller;
1370 #interrupt-cells = <1>;
1371 };
1372 };
1373
Lucas Stach45d2c842019-04-04 18:52:11 +02001374 gpu: gpu@38000000 {
1375 compatible = "vivante,gc";
1376 reg = <0x38000000 0x40000>;
1377 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1378 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>,
1379 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>,
1380 <&clk IMX8MQ_CLK_GPU_AXI>,
1381 <&clk IMX8MQ_CLK_GPU_AHB>;
1382 clock-names = "core", "shader", "bus", "reg";
Guido Günther9404f2e2019-09-11 19:40:35 -07001383 #cooling-cells = <2>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001384 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
1385 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
1386 <&clk IMX8MQ_CLK_GPU_AXI>,
Lucas Stachade5a572019-04-15 15:59:22 +02001387 <&clk IMX8MQ_CLK_GPU_AHB>,
1388 <&clk IMX8MQ_GPU_PLL_BYPASS>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001389 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>,
1390 <&clk IMX8MQ_GPU_PLL_OUT>,
1391 <&clk IMX8MQ_GPU_PLL_OUT>,
Lucas Stachade5a572019-04-15 15:59:22 +02001392 <&clk IMX8MQ_GPU_PLL_OUT>,
1393 <&clk IMX8MQ_GPU_PLL>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001394 assigned-clock-rates = <800000000>, <800000000>,
Lucas Stachade5a572019-04-15 15:59:22 +02001395 <800000000>, <800000000>, <0>;
Lucas Stach45d2c842019-04-04 18:52:11 +02001396 power-domains = <&pgc_gpu>;
1397 };
1398
Lucas Stachad375492019-01-25 17:25:58 +01001399 usb_dwc3_0: usb@38100000 {
1400 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1401 reg = <0x38100000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001402 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001403 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001404 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001405 clock-names = "bus_early", "ref", "suspend";
1406 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1407 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1408 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1409 <&clk IMX8MQ_SYS1_PLL_100M>;
1410 assigned-clock-rates = <500000000>, <100000000>;
1411 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
1412 phys = <&usb3_phy0>, <&usb3_phy0>;
1413 phy-names = "usb2-phy", "usb3-phy";
1414 power-domains = <&pgc_otg1>;
1415 usb3-resume-missing-cas;
1416 status = "disabled";
1417 };
1418
1419 usb3_phy0: usb-phy@381f0040 {
1420 compatible = "fsl,imx8mq-usb-phy";
1421 reg = <0x381f0040 0x40>;
1422 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>;
1423 clock-names = "phy";
1424 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1425 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1426 assigned-clock-rates = <100000000>;
1427 #phy-cells = <0>;
1428 status = "disabled";
1429 };
1430
1431 usb_dwc3_1: usb@38200000 {
1432 compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1433 reg = <0x38200000 0x10000>;
Li Jun74bd5952019-07-10 19:19:17 +08001434 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
Lucas Stachad375492019-01-25 17:25:58 +01001435 <&clk IMX8MQ_CLK_USB_CORE_REF>,
Li Jun74bd5952019-07-10 19:19:17 +08001436 <&clk IMX8MQ_CLK_32K>;
Lucas Stachad375492019-01-25 17:25:58 +01001437 clock-names = "bus_early", "ref", "suspend";
1438 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>,
1439 <&clk IMX8MQ_CLK_USB_CORE_REF>;
1440 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>,
1441 <&clk IMX8MQ_SYS1_PLL_100M>;
1442 assigned-clock-rates = <500000000>, <100000000>;
1443 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1444 phys = <&usb3_phy1>, <&usb3_phy1>;
1445 phy-names = "usb2-phy", "usb3-phy";
1446 power-domains = <&pgc_otg2>;
1447 usb3-resume-missing-cas;
1448 status = "disabled";
1449 };
1450
1451 usb3_phy1: usb-phy@382f0040 {
1452 compatible = "fsl,imx8mq-usb-phy";
1453 reg = <0x382f0040 0x40>;
1454 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>;
1455 clock-names = "phy";
1456 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>;
1457 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>;
1458 assigned-clock-rates = <100000000>;
1459 #phy-cells = <0>;
1460 status = "disabled";
1461 };
1462
Philipp Zabel36cebea2020-03-20 14:12:55 +01001463 vpu: video-codec@38300000 {
1464 compatible = "nxp,imx8mq-vpu";
1465 reg = <0x38300000 0x10000>,
1466 <0x38310000 0x10000>,
1467 <0x38320000 0x10000>;
1468 reg-names = "g1", "g2", "ctrl";
1469 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1470 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1471 interrupt-names = "g1", "g2";
1472 clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>,
1473 <&clk IMX8MQ_CLK_VPU_G2_ROOT>,
1474 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>;
1475 clock-names = "g1", "g2", "bus";
1476 assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>,
1477 <&clk IMX8MQ_CLK_VPU_G2>,
1478 <&clk IMX8MQ_CLK_VPU_BUS>,
1479 <&clk IMX8MQ_VPU_PLL_BYPASS>;
1480 assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>,
1481 <&clk IMX8MQ_VPU_PLL_OUT>,
1482 <&clk IMX8MQ_SYS1_PLL_800M>,
1483 <&clk IMX8MQ_VPU_PLL>;
1484 assigned-clock-rates = <600000000>, <600000000>,
1485 <800000000>, <0>;
1486 power-domains = <&pgc_vpu>;
1487 };
1488
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001489 pcie0: pcie@33800000 {
1490 compatible = "fsl,imx8mq-pcie";
1491 reg = <0x33800000 0x400000>,
1492 <0x1ff00000 0x80000>;
1493 reg-names = "dbi", "config";
1494 #address-cells = <3>;
1495 #size-cells = <2>;
1496 device_type = "pci";
1497 bus-range = <0x00 0xff>;
Richard Zhuc179ee12021-08-27 14:43:00 +08001498 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000>, /* downstream I/O 64KB */
1499 <0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001500 num-lanes = <1>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001501 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1502 interrupt-names = "msi";
1503 #interrupt-cells = <1>;
1504 interrupt-map-mask = <0 0 0 0x7>;
1505 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1506 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
1507 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1508 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1509 fsl,max-link-speed = <2>;
Peng Fanc0b70f02021-01-15 11:26:57 +08001510 linux,pci-domain = <0>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001511 power-domains = <&pgc_pcie>;
1512 resets = <&src IMX8MQ_RESET_PCIEPHY>,
1513 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
1514 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
1515 reset-names = "pciephy", "apps", "turnoff";
Lucas Stach15a52612021-05-08 00:12:13 +02001516 assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
1517 <&clk IMX8MQ_CLK_PCIE1_PHY>,
1518 <&clk IMX8MQ_CLK_PCIE1_AUX>;
1519 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1520 <&clk IMX8MQ_SYS2_PLL_100M>,
1521 <&clk IMX8MQ_SYS1_PLL_80M>;
1522 assigned-clock-rates = <250000000>, <100000000>,
1523 <10000000>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001524 status = "disabled";
1525 };
1526
1527 pcie1: pcie@33c00000 {
1528 compatible = "fsl,imx8mq-pcie";
1529 reg = <0x33c00000 0x400000>,
1530 <0x27f00000 0x80000>;
1531 reg-names = "dbi", "config";
1532 #address-cells = <3>;
1533 #size-cells = <2>;
1534 device_type = "pci";
Richard Zhuc179ee12021-08-27 14:43:00 +08001535 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000>, /* downstream I/O 64KB */
1536 <0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001537 num-lanes = <1>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001538 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1539 interrupt-names = "msi";
1540 #interrupt-cells = <1>;
1541 interrupt-map-mask = <0 0 0 0x7>;
1542 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
1543 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
1544 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
1545 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
1546 fsl,max-link-speed = <2>;
Peng Fanc0b70f02021-01-15 11:26:57 +08001547 linux,pci-domain = <1>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001548 power-domains = <&pgc_pcie>;
1549 resets = <&src IMX8MQ_RESET_PCIEPHY2>,
1550 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
1551 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
1552 reset-names = "pciephy", "apps", "turnoff";
Lucas Stach15a52612021-05-08 00:12:13 +02001553 assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
1554 <&clk IMX8MQ_CLK_PCIE2_PHY>,
1555 <&clk IMX8MQ_CLK_PCIE2_AUX>;
1556 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
1557 <&clk IMX8MQ_SYS2_PLL_100M>,
1558 <&clk IMX8MQ_SYS1_PLL_80M>;
1559 assigned-clock-rates = <250000000>, <100000000>,
1560 <10000000>;
Andrey Smirnovfc26e602019-04-05 10:30:03 -07001561 status = "disabled";
1562 };
1563
Lucas Stach748f9082018-12-09 14:26:07 +00001564 gic: interrupt-controller@38800000 {
1565 compatible = "arm,gic-v3";
1566 reg = <0x38800000 0x10000>, /* GIC Dist */
1567 <0x38880000 0xc0000>, /* GICR */
1568 <0x31000000 0x2000>, /* GICC */
1569 <0x31010000 0x2000>, /* GICV */
1570 <0x31020000 0x2000>; /* GICH */
1571 #interrupt-cells = <3>;
1572 interrupt-controller;
1573 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1574 interrupt-parent = <&gic>;
1575 };
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001576
Leonard Crestez0376f6e2019-11-22 23:45:04 +02001577 ddrc: memory-controller@3d400000 {
1578 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc";
1579 reg = <0x3d400000 0x400000>;
1580 clock-names = "core", "pll", "alt", "apb";
1581 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>,
1582 <&clk IMX8MQ_DRAM_PLL_OUT>,
1583 <&clk IMX8MQ_CLK_DRAM_ALT>,
1584 <&clk IMX8MQ_CLK_DRAM_APB>;
1585 };
1586
Leonard Crestez1efe85c2019-07-04 11:53:21 +03001587 ddr-pmu@3d800000 {
1588 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu";
1589 reg = <0x3d800000 0x400000>;
1590 interrupt-parent = <&gic>;
1591 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1592 };
Lucas Stach748f9082018-12-09 14:26:07 +00001593 };
1594};