1// 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> 8#include <dt-bindings/power/imx8mq-power.h> 9#include <dt-bindings/reset/imx8mq-reset.h> 10#include <dt-bindings/gpio/gpio.h> 11#include "dt-bindings/input/input.h" 12#include <dt-bindings/interrupt-controller/arm-gic.h> 13#include <dt-bindings/thermal/thermal.h> 14#include <dt-bindings/interconnect/imx8mq.h> 15#include "imx8mq-pinfunc.h" 16 17/ { 18 interrupt-parent = <&gpc>; 19 20 #address-cells = <2>; 21 #size-cells = <2>; 22 23 aliases { 24 ethernet0 = &fec1; 25 gpio0 = &gpio1; 26 gpio1 = &gpio2; 27 gpio2 = &gpio3; 28 gpio3 = &gpio4; 29 gpio4 = &gpio5; 30 i2c0 = &i2c1; 31 i2c1 = &i2c2; 32 i2c2 = &i2c3; 33 i2c3 = &i2c4; 34 mmc0 = &usdhc1; 35 mmc1 = &usdhc2; 36 serial0 = &uart1; 37 serial1 = &uart2; 38 serial2 = &uart3; 39 serial3 = &uart4; 40 spi0 = &ecspi1; 41 spi1 = &ecspi2; 42 spi2 = &ecspi3; 43 }; 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>; 102 clock-latency = <61036>; /* two CLK32 periods */ 103 clocks = <&clk IMX8MQ_CLK_ARM>; 104 enable-method = "psci"; 105 next-level-cache = <&A53_L2>; 106 operating-points-v2 = <&a53_opp_table>; 107 #cooling-cells = <2>; 108 nvmem-cells = <&cpu_speed_grade>; 109 nvmem-cell-names = "speed_grade"; 110 }; 111 112 A53_1: cpu@1 { 113 device_type = "cpu"; 114 compatible = "arm,cortex-a53"; 115 reg = <0x1>; 116 clock-latency = <61036>; /* two CLK32 periods */ 117 clocks = <&clk IMX8MQ_CLK_ARM>; 118 enable-method = "psci"; 119 next-level-cache = <&A53_L2>; 120 operating-points-v2 = <&a53_opp_table>; 121 #cooling-cells = <2>; 122 }; 123 124 A53_2: cpu@2 { 125 device_type = "cpu"; 126 compatible = "arm,cortex-a53"; 127 reg = <0x2>; 128 clock-latency = <61036>; /* two CLK32 periods */ 129 clocks = <&clk IMX8MQ_CLK_ARM>; 130 enable-method = "psci"; 131 next-level-cache = <&A53_L2>; 132 operating-points-v2 = <&a53_opp_table>; 133 #cooling-cells = <2>; 134 }; 135 136 A53_3: cpu@3 { 137 device_type = "cpu"; 138 compatible = "arm,cortex-a53"; 139 reg = <0x3>; 140 clock-latency = <61036>; /* two CLK32 periods */ 141 clocks = <&clk IMX8MQ_CLK_ARM>; 142 enable-method = "psci"; 143 next-level-cache = <&A53_L2>; 144 operating-points-v2 = <&a53_opp_table>; 145 #cooling-cells = <2>; 146 }; 147 148 A53_L2: l2-cache0 { 149 compatible = "cache"; 150 }; 151 }; 152 153 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>; 160 /* Industrial only */ 161 opp-supported-hw = <0xf>, <0x4>; 162 clock-latency-ns = <150000>; 163 opp-suspend; 164 }; 165 166 opp-1000000000 { 167 opp-hz = /bits/ 64 <1000000000>; 168 opp-microvolt = <900000>; 169 /* Consumer only */ 170 opp-supported-hw = <0xe>, <0x3>; 171 clock-latency-ns = <150000>; 172 opp-suspend; 173 }; 174 175 opp-1300000000 { 176 opp-hz = /bits/ 64 <1300000000>; 177 opp-microvolt = <1000000>; 178 opp-supported-hw = <0xc>, <0x4>; 179 clock-latency-ns = <150000>; 180 opp-suspend; 181 }; 182 183 opp-1500000000 { 184 opp-hz = /bits/ 64 <1500000000>; 185 opp-microvolt = <1000000>; 186 opp-supported-hw = <0x8>, <0x3>; 187 clock-latency-ns = <150000>; 188 opp-suspend; 189 }; 190 }; 191 192 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 199 psci { 200 compatible = "arm,psci-1.0"; 201 method = "smc"; 202 }; 203 204 thermal-zones { 205 cpu_thermal: cpu-thermal { 206 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 { 242 gpu_alert: gpu-alert { 243 temperature = <80000>; 244 hysteresis = <2000>; 245 type = "passive"; 246 }; 247 248 gpu-crit { 249 temperature = <90000>; 250 hysteresis = <2000>; 251 type = "critical"; 252 }; 253 }; 254 255 cooling-maps { 256 map0 { 257 trip = <&gpu_alert>; 258 cooling-device = 259 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 260 }; 261 }; 262 }; 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 279 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 { 290 compatible = "fsl,imx8mq-soc", "simple-bus"; 291 #address-cells = <1>; 292 #size-cells = <1>; 293 ranges = <0x0 0x0 0x0 0x3e000000>; 294 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>; 295 nvmem-cells = <&imx8mq_uid>; 296 nvmem-cell-names = "soc_unique_id"; 297 298 bus@30000000 { /* AIPS1 */ 299 compatible = "fsl,aips-bus", "simple-bus"; 300 reg = <0x30000000 0x400000>; 301 #address-cells = <1>; 302 #size-cells = <1>; 303 ranges = <0x30000000 0x30000000 0x400000>; 304 305 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 361 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>; 366 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>; 367 gpio-controller; 368 #gpio-cells = <2>; 369 interrupt-controller; 370 #interrupt-cells = <2>; 371 gpio-ranges = <&iomuxc 0 10 30>; 372 }; 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>; 379 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>; 380 gpio-controller; 381 #gpio-cells = <2>; 382 interrupt-controller; 383 #interrupt-cells = <2>; 384 gpio-ranges = <&iomuxc 0 40 21>; 385 }; 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>; 392 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>; 393 gpio-controller; 394 #gpio-cells = <2>; 395 interrupt-controller; 396 #interrupt-cells = <2>; 397 gpio-ranges = <&iomuxc 0 61 26>; 398 }; 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>; 405 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>; 406 gpio-controller; 407 #gpio-cells = <2>; 408 interrupt-controller; 409 #interrupt-cells = <2>; 410 gpio-ranges = <&iomuxc 0 87 32>; 411 }; 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>; 418 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>; 419 gpio-controller; 420 #gpio-cells = <2>; 421 interrupt-controller; 422 #interrupt-cells = <2>; 423 gpio-ranges = <&iomuxc 0 119 30>; 424 }; 425 426 tmu: tmu@30260000 { 427 compatible = "fsl,imx8mq-tmu"; 428 reg = <0x30260000 0x10000>; 429 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 430 clocks = <&clk IMX8MQ_CLK_TMU_ROOT>; 431 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 479 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 }; 502 503 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 514 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>; 528 interconnects = <&noc IMX8MQ_ICM_LCDIF &noc IMX8MQ_ICS_DRAM>; 529 interconnect-names = "dram"; 530 status = "disabled"; 531 532 port@0 { 533 lcdif_mipi_dsi: endpoint { 534 remote-endpoint = <&mipi_dsi_lcdif_in>; 535 }; 536 }; 537 }; 538 539 iomuxc: pinctrl@30330000 { 540 compatible = "fsl,imx8mq-iomuxc"; 541 reg = <0x30330000 0x10000>; 542 }; 543 544 iomuxc_gpr: syscon@30340000 { 545 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", 546 "syscon", "simple-mfd"; 547 reg = <0x30340000 0x10000>; 548 549 mux: mux-controller { 550 compatible = "mmio-mux"; 551 #mux-control-cells = <1>; 552 mux-reg-masks = <0x34 0x00000004>; /* MIPI_MUX_SEL */ 553 }; 554 }; 555 556 ocotp: efuse@30350000 { 557 compatible = "fsl,imx8mq-ocotp", "syscon"; 558 reg = <0x30350000 0x10000>; 559 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>; 560 #address-cells = <1>; 561 #size-cells = <1>; 562 563 imx8mq_uid: soc-uid@410 { 564 reg = <0x4 0x8>; 565 }; 566 567 cpu_speed_grade: speed-grade@10 { 568 reg = <0x10 4>; 569 }; 570 571 fec_mac_address: mac-address@90 { 572 reg = <0x90 6>; 573 }; 574 }; 575 576 anatop: syscon@30360000 { 577 compatible = "fsl,imx8mq-anatop", "syscon"; 578 reg = <0x30360000 0x10000>; 579 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 580 }; 581 582 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>; 592 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>; 593 clock-names = "snvs-rtc"; 594 }; 595 596 snvs_pwrkey: snvs-powerkey { 597 compatible = "fsl,sec-v4.0-pwrkey"; 598 regmap = <&snvs>; 599 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 600 clocks = <&clk IMX8MQ_CLK_SNVS_ROOT>; 601 clock-names = "snvs-pwrkey"; 602 linux,keycode = <KEY_POWER>; 603 wakeup-source; 604 status = "disabled"; 605 }; 606 }; 607 608 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"; 620 assigned-clocks = <&clk IMX8MQ_CLK_A53_SRC>, 621 <&clk IMX8MQ_CLK_A53_CORE>, 622 <&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>; 628 assigned-clock-rates = <0>, <0>, 629 <800000000>, 630 <0>, 631 <0>, 632 <0>, 633 <786432000>, 634 <722534400>; 635 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>, 636 <&clk IMX8MQ_ARM_PLL_OUT>, 637 <0>, 638 <&clk IMX8MQ_SYS2_PLL_500M>, 639 <&clk IMX8MQ_AUDIO_PLL1>, 640 <&clk IMX8MQ_AUDIO_PLL2>; 641 }; 642 643 src: reset-controller@30390000 { 644 compatible = "fsl,imx8mq-src", "syscon"; 645 reg = <0x30390000 0x10000>; 646 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; 647 #reset-cells = <1>; 648 }; 649 650 gpc: gpc@303a0000 { 651 compatible = "fsl,imx8mq-gpc"; 652 reg = <0x303a0000 0x10000>; 653 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; 654 interrupt-parent = <&gic>; 655 interrupt-controller; 656 #interrupt-cells = <3>; 657 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 667 /* 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 { 683 #power-domain-cells = <0>; 684 reg = <IMX8M_POWER_DOMAIN_PCIE1>; 685 power-domains = <&pgc_pcie2>; 686 }; 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>; 715 clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; 716 }; 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 }; 739 }; 740 741 bus@30400000 { /* AIPS2 */ 742 compatible = "fsl,aips-bus", "simple-bus"; 743 reg = <0x30400000 0x400000>; 744 #address-cells = <1>; 745 #size-cells = <1>; 746 ranges = <0x30400000 0x30400000 0x400000>; 747 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 }; 791 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 }; 799 }; 800 801 bus@30800000 { /* AIPS3 */ 802 compatible = "fsl,aips-bus", "simple-bus"; 803 reg = <0x30800000 0x400000>; 804 #address-cells = <1>; 805 #size-cells = <1>; 806 ranges = <0x30800000 0x30800000 0x400000>, 807 <0x08000000 0x08000000 0x10000000>; 808 809 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 833 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"; 842 dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>; 843 dma-names = "rx", "tx"; 844 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"; 856 dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>; 857 dma-names = "rx", "tx"; 858 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"; 870 dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>; 871 dma-names = "rx", "tx"; 872 status = "disabled"; 873 }; 874 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 908 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 932 sai2: sai@308b0000 { 933 #sound-dai-cells = <0>; 934 compatible = "fsl,imx8mq-sai"; 935 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 946 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 960 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 990 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 1033 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"; 1038 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>; 1046 #phy-cells = <0>; 1047 power-domains = <&pgc_mipi>; 1048 status = "disabled"; 1049 }; 1050 1051 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 1102 mu: mailbox@30aa0000 { 1103 compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu"; 1104 reg = <0x30aa0000 0x10000>; 1105 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; 1106 clocks = <&clk IMX8MQ_CLK_MU_ROOT>; 1107 #mbox-cells = <2>; 1108 }; 1109 1110 usdhc1: mmc@30b40000 { 1111 compatible = "fsl,imx8mq-usdhc", 1112 "fsl,imx7d-usdhc"; 1113 reg = <0x30b40000 0x10000>; 1114 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 1115 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, 1116 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>, 1117 <&clk IMX8MQ_CLK_USDHC1_ROOT>; 1118 clock-names = "ipg", "ahb", "per"; 1119 fsl,tuning-start-tap = <20>; 1120 fsl,tuning-step = <2>; 1121 bus-width = <4>; 1122 status = "disabled"; 1123 }; 1124 1125 usdhc2: mmc@30b50000 { 1126 compatible = "fsl,imx8mq-usdhc", 1127 "fsl,imx7d-usdhc"; 1128 reg = <0x30b50000 0x10000>; 1129 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 1130 clocks = <&clk IMX8MQ_CLK_IPG_ROOT>, 1131 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>, 1132 <&clk IMX8MQ_CLK_USDHC2_ROOT>; 1133 clock-names = "ipg", "ahb", "per"; 1134 fsl,tuning-start-tap = <20>; 1135 fsl,tuning-step = <2>; 1136 bus-width = <4>; 1137 status = "disabled"; 1138 }; 1139 1140 qspi0: spi@30bb0000 { 1141 #address-cells = <1>; 1142 #size-cells = <0>; 1143 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi"; 1144 reg = <0x30bb0000 0x10000>, 1145 <0x08000000 0x10000000>; 1146 reg-names = "QuadSPI", "QuadSPI-memory"; 1147 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; 1148 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>, 1149 <&clk IMX8MQ_CLK_QSPI_ROOT>; 1150 clock-names = "qspi_en", "qspi"; 1151 status = "disabled"; 1152 }; 1153 1154 sdma1: sdma@30bd0000 { 1155 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma"; 1156 reg = <0x30bd0000 0x10000>; 1157 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 1158 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>, 1159 <&clk IMX8MQ_CLK_AHB>; 1160 clock-names = "ipg", "ahb"; 1161 #dma-cells = <3>; 1162 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin"; 1163 }; 1164 1165 fec1: ethernet@30be0000 { 1166 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec"; 1167 reg = <0x30be0000 0x10000>; 1168 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, 1169 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>, 1170 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>, 1171 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; 1172 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>, 1173 <&clk IMX8MQ_CLK_ENET1_ROOT>, 1174 <&clk IMX8MQ_CLK_ENET_TIMER>, 1175 <&clk IMX8MQ_CLK_ENET_REF>, 1176 <&clk IMX8MQ_CLK_ENET_PHY_REF>; 1177 clock-names = "ipg", "ahb", "ptp", 1178 "enet_clk_ref", "enet_out"; 1179 assigned-clocks = <&clk IMX8MQ_CLK_ENET_AXI>, 1180 <&clk IMX8MQ_CLK_ENET_TIMER>, 1181 <&clk IMX8MQ_CLK_ENET_REF>, 1182 <&clk IMX8MQ_CLK_ENET_PHY_REF>; 1183 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>, 1184 <&clk IMX8MQ_SYS2_PLL_100M>, 1185 <&clk IMX8MQ_SYS2_PLL_125M>, 1186 <&clk IMX8MQ_SYS2_PLL_50M>; 1187 assigned-clock-rates = <0>, <100000000>, <125000000>, <0>; 1188 fsl,num-tx-queues = <3>; 1189 fsl,num-rx-queues = <3>; 1190 nvmem-cells = <&fec_mac_address>; 1191 nvmem-cell-names = "mac-address"; 1192 nvmem_macaddr_swap; 1193 fsl,stop-mode = <&iomuxc_gpr 0x10 3>; 1194 status = "disabled"; 1195 }; 1196 }; 1197 1198 noc: interconnect@32700000 { 1199 compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc"; 1200 reg = <0x32700000 0x100000>; 1201 clocks = <&clk IMX8MQ_CLK_NOC>; 1202 fsl,ddrc = <&ddrc>; 1203 #interconnect-cells = <1>; 1204 operating-points-v2 = <&noc_opp_table>; 1205 1206 noc_opp_table: opp-table { 1207 compatible = "operating-points-v2"; 1208 1209 opp-133M { 1210 opp-hz = /bits/ 64 <133333333>; 1211 }; 1212 1213 opp-400M { 1214 opp-hz = /bits/ 64 <400000000>; 1215 }; 1216 1217 opp-800M { 1218 opp-hz = /bits/ 64 <800000000>; 1219 }; 1220 }; 1221 }; 1222 1223 bus@32c00000 { /* AIPS4 */ 1224 compatible = "fsl,aips-bus", "simple-bus"; 1225 reg = <0x32c00000 0x400000>; 1226 #address-cells = <1>; 1227 #size-cells = <1>; 1228 ranges = <0x32c00000 0x32c00000 0x400000>; 1229 1230 irqsteer: interrupt-controller@32e2d000 { 1231 compatible = "fsl,imx8m-irqsteer", "fsl,imx-irqsteer"; 1232 reg = <0x32e2d000 0x1000>; 1233 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; 1234 clocks = <&clk IMX8MQ_CLK_DISP_APB_ROOT>; 1235 clock-names = "ipg"; 1236 fsl,channel = <0>; 1237 fsl,num-irqs = <64>; 1238 interrupt-controller; 1239 #interrupt-cells = <1>; 1240 }; 1241 }; 1242 1243 gpu: gpu@38000000 { 1244 compatible = "vivante,gc"; 1245 reg = <0x38000000 0x40000>; 1246 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 1247 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>, 1248 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>, 1249 <&clk IMX8MQ_CLK_GPU_AXI>, 1250 <&clk IMX8MQ_CLK_GPU_AHB>; 1251 clock-names = "core", "shader", "bus", "reg"; 1252 #cooling-cells = <2>; 1253 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>, 1254 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>, 1255 <&clk IMX8MQ_CLK_GPU_AXI>, 1256 <&clk IMX8MQ_CLK_GPU_AHB>, 1257 <&clk IMX8MQ_GPU_PLL_BYPASS>; 1258 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>, 1259 <&clk IMX8MQ_GPU_PLL_OUT>, 1260 <&clk IMX8MQ_GPU_PLL_OUT>, 1261 <&clk IMX8MQ_GPU_PLL_OUT>, 1262 <&clk IMX8MQ_GPU_PLL>; 1263 assigned-clock-rates = <800000000>, <800000000>, 1264 <800000000>, <800000000>, <0>; 1265 power-domains = <&pgc_gpu>; 1266 }; 1267 1268 usb_dwc3_0: usb@38100000 { 1269 compatible = "fsl,imx8mq-dwc3", "snps,dwc3"; 1270 reg = <0x38100000 0x10000>; 1271 clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>, 1272 <&clk IMX8MQ_CLK_USB_CORE_REF>, 1273 <&clk IMX8MQ_CLK_32K>; 1274 clock-names = "bus_early", "ref", "suspend"; 1275 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>, 1276 <&clk IMX8MQ_CLK_USB_CORE_REF>; 1277 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>, 1278 <&clk IMX8MQ_SYS1_PLL_100M>; 1279 assigned-clock-rates = <500000000>, <100000000>; 1280 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 1281 phys = <&usb3_phy0>, <&usb3_phy0>; 1282 phy-names = "usb2-phy", "usb3-phy"; 1283 power-domains = <&pgc_otg1>; 1284 usb3-resume-missing-cas; 1285 status = "disabled"; 1286 }; 1287 1288 usb3_phy0: usb-phy@381f0040 { 1289 compatible = "fsl,imx8mq-usb-phy"; 1290 reg = <0x381f0040 0x40>; 1291 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>; 1292 clock-names = "phy"; 1293 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>; 1294 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>; 1295 assigned-clock-rates = <100000000>; 1296 #phy-cells = <0>; 1297 status = "disabled"; 1298 }; 1299 1300 usb_dwc3_1: usb@38200000 { 1301 compatible = "fsl,imx8mq-dwc3", "snps,dwc3"; 1302 reg = <0x38200000 0x10000>; 1303 clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>, 1304 <&clk IMX8MQ_CLK_USB_CORE_REF>, 1305 <&clk IMX8MQ_CLK_32K>; 1306 clock-names = "bus_early", "ref", "suspend"; 1307 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>, 1308 <&clk IMX8MQ_CLK_USB_CORE_REF>; 1309 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>, 1310 <&clk IMX8MQ_SYS1_PLL_100M>; 1311 assigned-clock-rates = <500000000>, <100000000>; 1312 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 1313 phys = <&usb3_phy1>, <&usb3_phy1>; 1314 phy-names = "usb2-phy", "usb3-phy"; 1315 power-domains = <&pgc_otg2>; 1316 usb3-resume-missing-cas; 1317 status = "disabled"; 1318 }; 1319 1320 usb3_phy1: usb-phy@382f0040 { 1321 compatible = "fsl,imx8mq-usb-phy"; 1322 reg = <0x382f0040 0x40>; 1323 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>; 1324 clock-names = "phy"; 1325 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>; 1326 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>; 1327 assigned-clock-rates = <100000000>; 1328 #phy-cells = <0>; 1329 status = "disabled"; 1330 }; 1331 1332 vpu: video-codec@38300000 { 1333 compatible = "nxp,imx8mq-vpu"; 1334 reg = <0x38300000 0x10000>, 1335 <0x38310000 0x10000>, 1336 <0x38320000 0x10000>; 1337 reg-names = "g1", "g2", "ctrl"; 1338 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 1339 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 1340 interrupt-names = "g1", "g2"; 1341 clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>, 1342 <&clk IMX8MQ_CLK_VPU_G2_ROOT>, 1343 <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; 1344 clock-names = "g1", "g2", "bus"; 1345 assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>, 1346 <&clk IMX8MQ_CLK_VPU_G2>, 1347 <&clk IMX8MQ_CLK_VPU_BUS>, 1348 <&clk IMX8MQ_VPU_PLL_BYPASS>; 1349 assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>, 1350 <&clk IMX8MQ_VPU_PLL_OUT>, 1351 <&clk IMX8MQ_SYS1_PLL_800M>, 1352 <&clk IMX8MQ_VPU_PLL>; 1353 assigned-clock-rates = <600000000>, <600000000>, 1354 <800000000>, <0>; 1355 power-domains = <&pgc_vpu>; 1356 }; 1357 1358 pcie0: pcie@33800000 { 1359 compatible = "fsl,imx8mq-pcie"; 1360 reg = <0x33800000 0x400000>, 1361 <0x1ff00000 0x80000>; 1362 reg-names = "dbi", "config"; 1363 #address-cells = <3>; 1364 #size-cells = <2>; 1365 device_type = "pci"; 1366 bus-range = <0x00 0xff>; 1367 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */ 1368 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */ 1369 num-lanes = <1>; 1370 num-viewport = <4>; 1371 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 1372 interrupt-names = "msi"; 1373 #interrupt-cells = <1>; 1374 interrupt-map-mask = <0 0 0 0x7>; 1375 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, 1376 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, 1377 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, 1378 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 1379 fsl,max-link-speed = <2>; 1380 linux,pci-domain = <0>; 1381 power-domains = <&pgc_pcie>; 1382 resets = <&src IMX8MQ_RESET_PCIEPHY>, 1383 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>, 1384 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>; 1385 reset-names = "pciephy", "apps", "turnoff"; 1386 assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>, 1387 <&clk IMX8MQ_CLK_PCIE1_PHY>, 1388 <&clk IMX8MQ_CLK_PCIE1_AUX>; 1389 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>, 1390 <&clk IMX8MQ_SYS2_PLL_100M>, 1391 <&clk IMX8MQ_SYS1_PLL_80M>; 1392 assigned-clock-rates = <250000000>, <100000000>, 1393 <10000000>; 1394 status = "disabled"; 1395 }; 1396 1397 pcie1: pcie@33c00000 { 1398 compatible = "fsl,imx8mq-pcie"; 1399 reg = <0x33c00000 0x400000>, 1400 <0x27f00000 0x80000>; 1401 reg-names = "dbi", "config"; 1402 #address-cells = <3>; 1403 #size-cells = <2>; 1404 device_type = "pci"; 1405 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */ 1406 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */ 1407 num-lanes = <1>; 1408 num-viewport = <4>; 1409 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 1410 interrupt-names = "msi"; 1411 #interrupt-cells = <1>; 1412 interrupt-map-mask = <0 0 0 0x7>; 1413 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, 1414 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, 1415 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, 1416 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 1417 fsl,max-link-speed = <2>; 1418 linux,pci-domain = <1>; 1419 power-domains = <&pgc_pcie>; 1420 resets = <&src IMX8MQ_RESET_PCIEPHY2>, 1421 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>, 1422 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>; 1423 reset-names = "pciephy", "apps", "turnoff"; 1424 assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>, 1425 <&clk IMX8MQ_CLK_PCIE2_PHY>, 1426 <&clk IMX8MQ_CLK_PCIE2_AUX>; 1427 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>, 1428 <&clk IMX8MQ_SYS2_PLL_100M>, 1429 <&clk IMX8MQ_SYS1_PLL_80M>; 1430 assigned-clock-rates = <250000000>, <100000000>, 1431 <10000000>; 1432 status = "disabled"; 1433 }; 1434 1435 gic: interrupt-controller@38800000 { 1436 compatible = "arm,gic-v3"; 1437 reg = <0x38800000 0x10000>, /* GIC Dist */ 1438 <0x38880000 0xc0000>, /* GICR */ 1439 <0x31000000 0x2000>, /* GICC */ 1440 <0x31010000 0x2000>, /* GICV */ 1441 <0x31020000 0x2000>; /* GICH */ 1442 #interrupt-cells = <3>; 1443 interrupt-controller; 1444 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 1445 interrupt-parent = <&gic>; 1446 }; 1447 1448 ddrc: memory-controller@3d400000 { 1449 compatible = "fsl,imx8mq-ddrc", "fsl,imx8m-ddrc"; 1450 reg = <0x3d400000 0x400000>; 1451 clock-names = "core", "pll", "alt", "apb"; 1452 clocks = <&clk IMX8MQ_CLK_DRAM_CORE>, 1453 <&clk IMX8MQ_DRAM_PLL_OUT>, 1454 <&clk IMX8MQ_CLK_DRAM_ALT>, 1455 <&clk IMX8MQ_CLK_DRAM_APB>; 1456 }; 1457 1458 ddr-pmu@3d800000 { 1459 compatible = "fsl,imx8mq-ddr-pmu", "fsl,imx8m-ddr-pmu"; 1460 reg = <0x3d800000 0x400000>; 1461 interrupt-parent = <&gic>; 1462 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 1463 }; 1464 }; 1465}; 1466