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/interrupt-controller/arm-gic.h> 12#include <dt-bindings/thermal/thermal.h> 13#include "imx8mq-pinfunc.h" 14 15/ { 16 interrupt-parent = <&gpc>; 17 18 #address-cells = <2>; 19 #size-cells = <2>; 20 21 aliases { 22 i2c0 = &i2c1; 23 i2c1 = &i2c2; 24 i2c2 = &i2c3; 25 i2c3 = &i2c4; 26 serial0 = &uart1; 27 serial1 = &uart2; 28 serial2 = &uart3; 29 serial3 = &uart4; 30 spi0 = &ecspi1; 31 spi1 = &ecspi2; 32 spi2 = &ecspi3; 33 }; 34 35 ckil: clock-ckil { 36 compatible = "fixed-clock"; 37 #clock-cells = <0>; 38 clock-frequency = <32768>; 39 clock-output-names = "ckil"; 40 }; 41 42 osc_25m: clock-osc-25m { 43 compatible = "fixed-clock"; 44 #clock-cells = <0>; 45 clock-frequency = <25000000>; 46 clock-output-names = "osc_25m"; 47 }; 48 49 osc_27m: clock-osc-27m { 50 compatible = "fixed-clock"; 51 #clock-cells = <0>; 52 clock-frequency = <27000000>; 53 clock-output-names = "osc_27m"; 54 }; 55 56 clk_ext1: clock-ext1 { 57 compatible = "fixed-clock"; 58 #clock-cells = <0>; 59 clock-frequency = <133000000>; 60 clock-output-names = "clk_ext1"; 61 }; 62 63 clk_ext2: clock-ext2 { 64 compatible = "fixed-clock"; 65 #clock-cells = <0>; 66 clock-frequency = <133000000>; 67 clock-output-names = "clk_ext2"; 68 }; 69 70 clk_ext3: clock-ext3 { 71 compatible = "fixed-clock"; 72 #clock-cells = <0>; 73 clock-frequency = <133000000>; 74 clock-output-names = "clk_ext3"; 75 }; 76 77 clk_ext4: clock-ext4 { 78 compatible = "fixed-clock"; 79 #clock-cells = <0>; 80 clock-frequency= <133000000>; 81 clock-output-names = "clk_ext4"; 82 }; 83 84 cpus { 85 #address-cells = <1>; 86 #size-cells = <0>; 87 88 A53_0: cpu@0 { 89 device_type = "cpu"; 90 compatible = "arm,cortex-a53"; 91 reg = <0x0>; 92 clock-latency = <61036>; /* two CLK32 periods */ 93 clocks = <&clk IMX8MQ_CLK_ARM>; 94 enable-method = "psci"; 95 next-level-cache = <&A53_L2>; 96 operating-points-v2 = <&a53_opp_table>; 97 #cooling-cells = <2>; 98 }; 99 100 A53_1: cpu@1 { 101 device_type = "cpu"; 102 compatible = "arm,cortex-a53"; 103 reg = <0x1>; 104 clock-latency = <61036>; /* two CLK32 periods */ 105 clocks = <&clk IMX8MQ_CLK_ARM>; 106 enable-method = "psci"; 107 next-level-cache = <&A53_L2>; 108 operating-points-v2 = <&a53_opp_table>; 109 #cooling-cells = <2>; 110 }; 111 112 A53_2: cpu@2 { 113 device_type = "cpu"; 114 compatible = "arm,cortex-a53"; 115 reg = <0x2>; 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_3: cpu@3 { 125 device_type = "cpu"; 126 compatible = "arm,cortex-a53"; 127 reg = <0x3>; 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_L2: l2-cache0 { 137 compatible = "cache"; 138 }; 139 }; 140 141 a53_opp_table: opp-table { 142 compatible = "operating-points-v2"; 143 opp-shared; 144 145 opp-800000000 { 146 opp-hz = /bits/ 64 <800000000>; 147 opp-microvolt = <900000>; 148 clock-latency-ns = <150000>; 149 }; 150 151 opp-1300000000 { 152 opp-hz = /bits/ 64 <1300000000>; 153 opp-microvolt = <1000000>; 154 clock-latency-ns = <150000>; 155 opp-suspend; 156 }; 157 }; 158 159 pmu { 160 compatible = "arm,cortex-a53-pmu"; 161 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>; 162 interrupt-parent = <&gic>; 163 interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>; 164 }; 165 166 psci { 167 compatible = "arm,psci-1.0"; 168 method = "smc"; 169 }; 170 171 thermal-zones { 172 cpu-thermal { 173 polling-delay-passive = <250>; 174 polling-delay = <2000>; 175 thermal-sensors = <&tmu 0>; 176 177 trips { 178 cpu_alert: cpu-alert { 179 temperature = <80000>; 180 hysteresis = <2000>; 181 type = "passive"; 182 }; 183 184 cpu-crit { 185 temperature = <90000>; 186 hysteresis = <2000>; 187 type = "critical"; 188 }; 189 }; 190 191 cooling-maps { 192 map0 { 193 trip = <&cpu_alert>; 194 cooling-device = 195 <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 196 <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 197 <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 198 <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 199 }; 200 }; 201 }; 202 203 gpu-thermal { 204 polling-delay-passive = <250>; 205 polling-delay = <2000>; 206 thermal-sensors = <&tmu 1>; 207 208 trips { 209 gpu-crit { 210 temperature = <90000>; 211 hysteresis = <2000>; 212 type = "critical"; 213 }; 214 }; 215 }; 216 217 vpu-thermal { 218 polling-delay-passive = <250>; 219 polling-delay = <2000>; 220 thermal-sensors = <&tmu 2>; 221 222 trips { 223 vpu-crit { 224 temperature = <90000>; 225 hysteresis = <2000>; 226 type = "critical"; 227 }; 228 }; 229 }; 230 }; 231 232 timer { 233 compatible = "arm,armv8-timer"; 234 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Physical Secure */ 235 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Physical Non-Secure */ 236 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virtual */ 237 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hypervisor */ 238 interrupt-parent = <&gic>; 239 arm,no-tick-in-suspend; 240 }; 241 242 soc@0 { 243 compatible = "simple-bus"; 244 #address-cells = <1>; 245 #size-cells = <1>; 246 ranges = <0x0 0x0 0x0 0x3e000000>; 247 dma-ranges = <0x40000000 0x0 0x40000000 0xc0000000>; 248 249 bus@30000000 { /* AIPS1 */ 250 compatible = "fsl,imx8mq-aips-bus", "simple-bus"; 251 #address-cells = <1>; 252 #size-cells = <1>; 253 ranges = <0x30000000 0x30000000 0x400000>; 254 255 gpio1: gpio@30200000 { 256 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; 257 reg = <0x30200000 0x10000>; 258 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>, 259 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 260 clocks = <&clk IMX8MQ_CLK_GPIO1_ROOT>; 261 gpio-controller; 262 #gpio-cells = <2>; 263 interrupt-controller; 264 #interrupt-cells = <2>; 265 }; 266 267 gpio2: gpio@30210000 { 268 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; 269 reg = <0x30210000 0x10000>; 270 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>, 271 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 272 clocks = <&clk IMX8MQ_CLK_GPIO2_ROOT>; 273 gpio-controller; 274 #gpio-cells = <2>; 275 interrupt-controller; 276 #interrupt-cells = <2>; 277 }; 278 279 gpio3: gpio@30220000 { 280 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; 281 reg = <0x30220000 0x10000>; 282 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>, 283 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 284 clocks = <&clk IMX8MQ_CLK_GPIO3_ROOT>; 285 gpio-controller; 286 #gpio-cells = <2>; 287 interrupt-controller; 288 #interrupt-cells = <2>; 289 }; 290 291 gpio4: gpio@30230000 { 292 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; 293 reg = <0x30230000 0x10000>; 294 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>, 295 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 296 clocks = <&clk IMX8MQ_CLK_GPIO4_ROOT>; 297 gpio-controller; 298 #gpio-cells = <2>; 299 interrupt-controller; 300 #interrupt-cells = <2>; 301 }; 302 303 gpio5: gpio@30240000 { 304 compatible = "fsl,imx8mq-gpio", "fsl,imx35-gpio"; 305 reg = <0x30240000 0x10000>; 306 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, 307 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 308 clocks = <&clk IMX8MQ_CLK_GPIO5_ROOT>; 309 gpio-controller; 310 #gpio-cells = <2>; 311 interrupt-controller; 312 #interrupt-cells = <2>; 313 }; 314 315 tmu: tmu@30260000 { 316 compatible = "fsl,imx8mq-tmu"; 317 reg = <0x30260000 0x10000>; 318 interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 319 little-endian; 320 fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>; 321 fsl,tmu-calibration = <0x00000000 0x00000023 322 0x00000001 0x00000029 323 0x00000002 0x0000002f 324 0x00000003 0x00000035 325 0x00000004 0x0000003d 326 0x00000005 0x00000043 327 0x00000006 0x0000004b 328 0x00000007 0x00000051 329 0x00000008 0x00000057 330 0x00000009 0x0000005f 331 0x0000000a 0x00000067 332 0x0000000b 0x0000006f 333 334 0x00010000 0x0000001b 335 0x00010001 0x00000023 336 0x00010002 0x0000002b 337 0x00010003 0x00000033 338 0x00010004 0x0000003b 339 0x00010005 0x00000043 340 0x00010006 0x0000004b 341 0x00010007 0x00000055 342 0x00010008 0x0000005d 343 0x00010009 0x00000067 344 0x0001000a 0x00000070 345 346 0x00020000 0x00000017 347 0x00020001 0x00000023 348 0x00020002 0x0000002d 349 0x00020003 0x00000037 350 0x00020004 0x00000041 351 0x00020005 0x0000004b 352 0x00020006 0x00000057 353 0x00020007 0x00000063 354 0x00020008 0x0000006f 355 356 0x00030000 0x00000015 357 0x00030001 0x00000021 358 0x00030002 0x0000002d 359 0x00030003 0x00000039 360 0x00030004 0x00000045 361 0x00030005 0x00000053 362 0x00030006 0x0000005f 363 0x00030007 0x00000071>; 364 #thermal-sensor-cells = <1>; 365 }; 366 367 wdog1: watchdog@30280000 { 368 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt"; 369 reg = <0x30280000 0x10000>; 370 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; 371 clocks = <&clk IMX8MQ_CLK_WDOG1_ROOT>; 372 status = "disabled"; 373 }; 374 375 wdog2: watchdog@30290000 { 376 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt"; 377 reg = <0x30290000 0x10000>; 378 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; 379 clocks = <&clk IMX8MQ_CLK_WDOG2_ROOT>; 380 status = "disabled"; 381 }; 382 383 wdog3: watchdog@302a0000 { 384 compatible = "fsl,imx8mq-wdt", "fsl,imx21-wdt"; 385 reg = <0x302a0000 0x10000>; 386 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 387 clocks = <&clk IMX8MQ_CLK_WDOG3_ROOT>; 388 status = "disabled"; 389 }; 390 391 sdma2: sdma@302c0000 { 392 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma"; 393 reg = <0x302c0000 0x10000>; 394 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 395 clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>, 396 <&clk IMX8MQ_CLK_SDMA2_ROOT>; 397 clock-names = "ipg", "ahb"; 398 #dma-cells = <3>; 399 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin"; 400 }; 401 402 iomuxc: iomuxc@30330000 { 403 compatible = "fsl,imx8mq-iomuxc"; 404 reg = <0x30330000 0x10000>; 405 }; 406 407 iomuxc_gpr: syscon@30340000 { 408 compatible = "fsl,imx8mq-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", "syscon"; 409 reg = <0x30340000 0x10000>; 410 }; 411 412 ocotp: ocotp-ctrl@30350000 { 413 compatible = "fsl,imx8mq-ocotp", "syscon"; 414 reg = <0x30350000 0x10000>; 415 clocks = <&clk IMX8MQ_CLK_OCOTP_ROOT>; 416 #address-cells = <1>; 417 #size-cells = <1>; 418 }; 419 420 anatop: syscon@30360000 { 421 compatible = "fsl,imx8mq-anatop", "syscon"; 422 reg = <0x30360000 0x10000>; 423 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 424 }; 425 426 snvs: snvs@30370000 { 427 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd"; 428 reg = <0x30370000 0x10000>; 429 430 snvs_rtc: snvs-rtc-lp{ 431 compatible = "fsl,sec-v4.0-mon-rtc-lp"; 432 regmap =<&snvs>; 433 offset = <0x34>; 434 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 435 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 436 }; 437 438 }; 439 440 clk: clock-controller@30380000 { 441 compatible = "fsl,imx8mq-ccm"; 442 reg = <0x30380000 0x10000>; 443 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>, 444 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; 445 #clock-cells = <1>; 446 clocks = <&ckil>, <&osc_25m>, <&osc_27m>, 447 <&clk_ext1>, <&clk_ext2>, 448 <&clk_ext3>, <&clk_ext4>; 449 clock-names = "ckil", "osc_25m", "osc_27m", 450 "clk_ext1", "clk_ext2", 451 "clk_ext3", "clk_ext4"; 452 }; 453 454 src: reset-controller@30390000 { 455 compatible = "fsl,imx8mq-src", "syscon"; 456 reg = <0x30390000 0x10000>; 457 #reset-cells = <1>; 458 }; 459 460 gpc: gpc@303a0000 { 461 compatible = "fsl,imx8mq-gpc"; 462 reg = <0x303a0000 0x10000>; 463 interrupt-parent = <&gic>; 464 interrupt-controller; 465 #interrupt-cells = <3>; 466 467 pgc { 468 #address-cells = <1>; 469 #size-cells = <0>; 470 471 pgc_mipi: power-domain@0 { 472 #power-domain-cells = <0>; 473 reg = <IMX8M_POWER_DOMAIN_MIPI>; 474 }; 475 476 /* 477 * As per comment in ATF source code: 478 * 479 * PCIE1 and PCIE2 share the 480 * same reset signal, if we 481 * power down PCIE2, PCIE1 482 * will be held in reset too. 483 * 484 * So instead of creating two 485 * separate power domains for 486 * PCIE1 and PCIE2 we create a 487 * link between both and use 488 * it as a shared PCIE power 489 * domain. 490 */ 491 pgc_pcie: power-domain@1 { 492 #power-domain-cells = <0>; 493 reg = <IMX8M_POWER_DOMAIN_PCIE1>; 494 power-domains = <&pgc_pcie2>; 495 }; 496 497 pgc_otg1: power-domain@2 { 498 #power-domain-cells = <0>; 499 reg = <IMX8M_POWER_DOMAIN_USB_OTG1>; 500 }; 501 502 pgc_otg2: power-domain@3 { 503 #power-domain-cells = <0>; 504 reg = <IMX8M_POWER_DOMAIN_USB_OTG2>; 505 }; 506 507 pgc_ddr1: power-domain@4 { 508 #power-domain-cells = <0>; 509 reg = <IMX8M_POWER_DOMAIN_DDR1>; 510 }; 511 512 pgc_gpu: power-domain@5 { 513 #power-domain-cells = <0>; 514 reg = <IMX8M_POWER_DOMAIN_GPU>; 515 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>, 516 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>, 517 <&clk IMX8MQ_CLK_GPU_AXI>, 518 <&clk IMX8MQ_CLK_GPU_AHB>; 519 }; 520 521 pgc_vpu: power-domain@6 { 522 #power-domain-cells = <0>; 523 reg = <IMX8M_POWER_DOMAIN_VPU>; 524 }; 525 526 pgc_disp: power-domain@7 { 527 #power-domain-cells = <0>; 528 reg = <IMX8M_POWER_DOMAIN_DISP>; 529 }; 530 531 pgc_mipi_csi1: power-domain@8 { 532 #power-domain-cells = <0>; 533 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI1>; 534 }; 535 536 pgc_mipi_csi2: power-domain@9 { 537 #power-domain-cells = <0>; 538 reg = <IMX8M_POWER_DOMAIN_MIPI_CSI2>; 539 }; 540 541 pgc_pcie2: power-domain@a { 542 #power-domain-cells = <0>; 543 reg = <IMX8M_POWER_DOMAIN_PCIE2>; 544 }; 545 }; 546 }; 547 }; 548 549 bus@30400000 { /* AIPS2 */ 550 compatible = "fsl,imx8mq-aips-bus", "simple-bus"; 551 #address-cells = <1>; 552 #size-cells = <1>; 553 ranges = <0x30400000 0x30400000 0x400000>; 554 555 pwm1: pwm@30660000 { 556 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm"; 557 reg = <0x30660000 0x10000>; 558 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; 559 clocks = <&clk IMX8MQ_CLK_PWM1_ROOT>, 560 <&clk IMX8MQ_CLK_PWM1_ROOT>; 561 clock-names = "ipg", "per"; 562 #pwm-cells = <2>; 563 status = "disabled"; 564 }; 565 566 pwm2: pwm@30670000 { 567 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm"; 568 reg = <0x30670000 0x10000>; 569 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 570 clocks = <&clk IMX8MQ_CLK_PWM2_ROOT>, 571 <&clk IMX8MQ_CLK_PWM2_ROOT>; 572 clock-names = "ipg", "per"; 573 #pwm-cells = <2>; 574 status = "disabled"; 575 }; 576 577 pwm3: pwm@30680000 { 578 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm"; 579 reg = <0x30680000 0x10000>; 580 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 581 clocks = <&clk IMX8MQ_CLK_PWM3_ROOT>, 582 <&clk IMX8MQ_CLK_PWM3_ROOT>; 583 clock-names = "ipg", "per"; 584 #pwm-cells = <2>; 585 status = "disabled"; 586 }; 587 588 pwm4: pwm@30690000 { 589 compatible = "fsl,imx8mq-pwm", "fsl,imx27-pwm"; 590 reg = <0x30690000 0x10000>; 591 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 592 clocks = <&clk IMX8MQ_CLK_PWM4_ROOT>, 593 <&clk IMX8MQ_CLK_PWM4_ROOT>; 594 clock-names = "ipg", "per"; 595 #pwm-cells = <2>; 596 status = "disabled"; 597 }; 598 }; 599 600 bus@30800000 { /* AIPS3 */ 601 compatible = "fsl,imx8mq-aips-bus", "simple-bus"; 602 #address-cells = <1>; 603 #size-cells = <1>; 604 ranges = <0x30800000 0x30800000 0x400000>, 605 <0x08000000 0x08000000 0x10000000>; 606 607 ecspi1: spi@30820000 { 608 #address-cells = <1>; 609 #size-cells = <0>; 610 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi"; 611 reg = <0x30820000 0x10000>; 612 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; 613 clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>, 614 <&clk IMX8MQ_CLK_ECSPI1_ROOT>; 615 clock-names = "ipg", "per"; 616 status = "disabled"; 617 }; 618 619 ecspi2: spi@30830000 { 620 #address-cells = <1>; 621 #size-cells = <0>; 622 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi"; 623 reg = <0x30830000 0x10000>; 624 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 625 clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>, 626 <&clk IMX8MQ_CLK_ECSPI2_ROOT>; 627 clock-names = "ipg", "per"; 628 status = "disabled"; 629 }; 630 631 ecspi3: spi@30840000 { 632 #address-cells = <1>; 633 #size-cells = <0>; 634 compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi"; 635 reg = <0x30840000 0x10000>; 636 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 637 clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>, 638 <&clk IMX8MQ_CLK_ECSPI3_ROOT>; 639 clock-names = "ipg", "per"; 640 status = "disabled"; 641 }; 642 643 uart1: serial@30860000 { 644 compatible = "fsl,imx8mq-uart", 645 "fsl,imx6q-uart"; 646 reg = <0x30860000 0x10000>; 647 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 648 clocks = <&clk IMX8MQ_CLK_UART1_ROOT>, 649 <&clk IMX8MQ_CLK_UART1_ROOT>; 650 clock-names = "ipg", "per"; 651 status = "disabled"; 652 }; 653 654 uart3: serial@30880000 { 655 compatible = "fsl,imx8mq-uart", 656 "fsl,imx6q-uart"; 657 reg = <0x30880000 0x10000>; 658 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 659 clocks = <&clk IMX8MQ_CLK_UART3_ROOT>, 660 <&clk IMX8MQ_CLK_UART3_ROOT>; 661 clock-names = "ipg", "per"; 662 status = "disabled"; 663 }; 664 665 uart2: serial@30890000 { 666 compatible = "fsl,imx8mq-uart", 667 "fsl,imx6q-uart"; 668 reg = <0x30890000 0x10000>; 669 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; 670 clocks = <&clk IMX8MQ_CLK_UART2_ROOT>, 671 <&clk IMX8MQ_CLK_UART2_ROOT>; 672 clock-names = "ipg", "per"; 673 status = "disabled"; 674 }; 675 676 sai2: sai@308b0000 { 677 #sound-dai-cells = <0>; 678 compatible = "fsl,imx8mq-sai", 679 "fsl,imx6sx-sai"; 680 reg = <0x308b0000 0x10000>; 681 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 682 clocks = <&clk IMX8MQ_CLK_SAI2_IPG>, 683 <&clk IMX8MQ_CLK_SAI2_ROOT>, 684 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>; 685 clock-names = "bus", "mclk1", "mclk2", "mclk3"; 686 dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>; 687 dma-names = "rx", "tx"; 688 status = "disabled"; 689 }; 690 691 i2c1: i2c@30a20000 { 692 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c"; 693 reg = <0x30a20000 0x10000>; 694 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; 695 clocks = <&clk IMX8MQ_CLK_I2C1_ROOT>; 696 #address-cells = <1>; 697 #size-cells = <0>; 698 status = "disabled"; 699 }; 700 701 i2c2: i2c@30a30000 { 702 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c"; 703 reg = <0x30a30000 0x10000>; 704 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 705 clocks = <&clk IMX8MQ_CLK_I2C2_ROOT>; 706 #address-cells = <1>; 707 #size-cells = <0>; 708 status = "disabled"; 709 }; 710 711 i2c3: i2c@30a40000 { 712 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c"; 713 reg = <0x30a40000 0x10000>; 714 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 715 clocks = <&clk IMX8MQ_CLK_I2C3_ROOT>; 716 #address-cells = <1>; 717 #size-cells = <0>; 718 status = "disabled"; 719 }; 720 721 i2c4: i2c@30a50000 { 722 compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c"; 723 reg = <0x30a50000 0x10000>; 724 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 725 clocks = <&clk IMX8MQ_CLK_I2C4_ROOT>; 726 #address-cells = <1>; 727 #size-cells = <0>; 728 status = "disabled"; 729 }; 730 731 uart4: serial@30a60000 { 732 compatible = "fsl,imx8mq-uart", 733 "fsl,imx6q-uart"; 734 reg = <0x30a60000 0x10000>; 735 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 736 clocks = <&clk IMX8MQ_CLK_UART4_ROOT>, 737 <&clk IMX8MQ_CLK_UART4_ROOT>; 738 clock-names = "ipg", "per"; 739 status = "disabled"; 740 }; 741 742 usdhc1: mmc@30b40000 { 743 compatible = "fsl,imx8mq-usdhc", 744 "fsl,imx7d-usdhc"; 745 reg = <0x30b40000 0x10000>; 746 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 747 clocks = <&clk IMX8MQ_CLK_DUMMY>, 748 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>, 749 <&clk IMX8MQ_CLK_USDHC1_ROOT>; 750 clock-names = "ipg", "ahb", "per"; 751 assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>; 752 assigned-clock-rates = <400000000>; 753 fsl,tuning-start-tap = <20>; 754 fsl,tuning-step = <2>; 755 bus-width = <4>; 756 status = "disabled"; 757 }; 758 759 usdhc2: mmc@30b50000 { 760 compatible = "fsl,imx8mq-usdhc", 761 "fsl,imx7d-usdhc"; 762 reg = <0x30b50000 0x10000>; 763 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 764 clocks = <&clk IMX8MQ_CLK_DUMMY>, 765 <&clk IMX8MQ_CLK_NAND_USDHC_BUS>, 766 <&clk IMX8MQ_CLK_USDHC2_ROOT>; 767 clock-names = "ipg", "ahb", "per"; 768 fsl,tuning-start-tap = <20>; 769 fsl,tuning-step = <2>; 770 bus-width = <4>; 771 status = "disabled"; 772 }; 773 774 qspi0: spi@30bb0000 { 775 #address-cells = <1>; 776 #size-cells = <0>; 777 compatible = "fsl,imx8mq-qspi", "fsl,imx7d-qspi"; 778 reg = <0x30bb0000 0x10000>, 779 <0x08000000 0x10000000>; 780 reg-names = "QuadSPI", "QuadSPI-memory"; 781 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; 782 clocks = <&clk IMX8MQ_CLK_QSPI_ROOT>, 783 <&clk IMX8MQ_CLK_QSPI_ROOT>; 784 clock-names = "qspi_en", "qspi"; 785 status = "disabled"; 786 }; 787 788 sdma1: sdma@30bd0000 { 789 compatible = "fsl,imx8mq-sdma","fsl,imx7d-sdma"; 790 reg = <0x30bd0000 0x10000>; 791 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 792 clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>, 793 <&clk IMX8MQ_CLK_AHB>; 794 clock-names = "ipg", "ahb"; 795 #dma-cells = <3>; 796 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin"; 797 }; 798 799 fec1: ethernet@30be0000 { 800 compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec"; 801 reg = <0x30be0000 0x10000>; 802 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, 803 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>, 804 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; 805 clocks = <&clk IMX8MQ_CLK_ENET1_ROOT>, 806 <&clk IMX8MQ_CLK_ENET1_ROOT>, 807 <&clk IMX8MQ_CLK_ENET_TIMER>, 808 <&clk IMX8MQ_CLK_ENET_REF>, 809 <&clk IMX8MQ_CLK_ENET_PHY_REF>; 810 clock-names = "ipg", "ahb", "ptp", 811 "enet_clk_ref", "enet_out"; 812 fsl,num-tx-queues = <3>; 813 fsl,num-rx-queues = <3>; 814 status = "disabled"; 815 }; 816 }; 817 818 gpu: gpu@38000000 { 819 compatible = "vivante,gc"; 820 reg = <0x38000000 0x40000>; 821 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 822 clocks = <&clk IMX8MQ_CLK_GPU_ROOT>, 823 <&clk IMX8MQ_CLK_GPU_SHADER_DIV>, 824 <&clk IMX8MQ_CLK_GPU_AXI>, 825 <&clk IMX8MQ_CLK_GPU_AHB>; 826 clock-names = "core", "shader", "bus", "reg"; 827 assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>, 828 <&clk IMX8MQ_CLK_GPU_SHADER_SRC>, 829 <&clk IMX8MQ_CLK_GPU_AXI>, 830 <&clk IMX8MQ_CLK_GPU_AHB>, 831 <&clk IMX8MQ_GPU_PLL_BYPASS>; 832 assigned-clock-parents = <&clk IMX8MQ_GPU_PLL_OUT>, 833 <&clk IMX8MQ_GPU_PLL_OUT>, 834 <&clk IMX8MQ_GPU_PLL_OUT>, 835 <&clk IMX8MQ_GPU_PLL_OUT>, 836 <&clk IMX8MQ_GPU_PLL>; 837 assigned-clock-rates = <800000000>, <800000000>, 838 <800000000>, <800000000>, <0>; 839 power-domains = <&pgc_gpu>; 840 }; 841 842 usb_dwc3_0: usb@38100000 { 843 compatible = "fsl,imx8mq-dwc3", "snps,dwc3"; 844 reg = <0x38100000 0x10000>; 845 clocks = <&clk IMX8MQ_CLK_USB_BUS>, 846 <&clk IMX8MQ_CLK_USB_CORE_REF>, 847 <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>; 848 clock-names = "bus_early", "ref", "suspend"; 849 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>, 850 <&clk IMX8MQ_CLK_USB_CORE_REF>; 851 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>, 852 <&clk IMX8MQ_SYS1_PLL_100M>; 853 assigned-clock-rates = <500000000>, <100000000>; 854 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 855 phys = <&usb3_phy0>, <&usb3_phy0>; 856 phy-names = "usb2-phy", "usb3-phy"; 857 power-domains = <&pgc_otg1>; 858 usb3-resume-missing-cas; 859 status = "disabled"; 860 }; 861 862 usb3_phy0: usb-phy@381f0040 { 863 compatible = "fsl,imx8mq-usb-phy"; 864 reg = <0x381f0040 0x40>; 865 clocks = <&clk IMX8MQ_CLK_USB1_PHY_ROOT>; 866 clock-names = "phy"; 867 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>; 868 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>; 869 assigned-clock-rates = <100000000>; 870 #phy-cells = <0>; 871 status = "disabled"; 872 }; 873 874 usb_dwc3_1: usb@38200000 { 875 compatible = "fsl,imx8mq-dwc3", "snps,dwc3"; 876 reg = <0x38200000 0x10000>; 877 clocks = <&clk IMX8MQ_CLK_USB_BUS>, 878 <&clk IMX8MQ_CLK_USB_CORE_REF>, 879 <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>; 880 clock-names = "bus_early", "ref", "suspend"; 881 assigned-clocks = <&clk IMX8MQ_CLK_USB_BUS>, 882 <&clk IMX8MQ_CLK_USB_CORE_REF>; 883 assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_500M>, 884 <&clk IMX8MQ_SYS1_PLL_100M>; 885 assigned-clock-rates = <500000000>, <100000000>; 886 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 887 phys = <&usb3_phy1>, <&usb3_phy1>; 888 phy-names = "usb2-phy", "usb3-phy"; 889 power-domains = <&pgc_otg2>; 890 usb3-resume-missing-cas; 891 status = "disabled"; 892 }; 893 894 usb3_phy1: usb-phy@382f0040 { 895 compatible = "fsl,imx8mq-usb-phy"; 896 reg = <0x382f0040 0x40>; 897 clocks = <&clk IMX8MQ_CLK_USB2_PHY_ROOT>; 898 clock-names = "phy"; 899 assigned-clocks = <&clk IMX8MQ_CLK_USB_PHY_REF>; 900 assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_100M>; 901 assigned-clock-rates = <100000000>; 902 #phy-cells = <0>; 903 status = "disabled"; 904 }; 905 906 907 pcie0: pcie@33800000 { 908 compatible = "fsl,imx8mq-pcie"; 909 reg = <0x33800000 0x400000>, 910 <0x1ff00000 0x80000>; 911 reg-names = "dbi", "config"; 912 #address-cells = <3>; 913 #size-cells = <2>; 914 device_type = "pci"; 915 bus-range = <0x00 0xff>; 916 ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */ 917 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */ 918 num-lanes = <1>; 919 num-viewport = <4>; 920 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 921 interrupt-names = "msi"; 922 #interrupt-cells = <1>; 923 interrupt-map-mask = <0 0 0 0x7>; 924 interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, 925 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, 926 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, 927 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 928 fsl,max-link-speed = <2>; 929 power-domains = <&pgc_pcie>; 930 resets = <&src IMX8MQ_RESET_PCIEPHY>, 931 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>, 932 <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>; 933 reset-names = "pciephy", "apps", "turnoff"; 934 status = "disabled"; 935 }; 936 937 pcie1: pcie@33c00000 { 938 compatible = "fsl,imx8mq-pcie"; 939 reg = <0x33c00000 0x400000>, 940 <0x27f00000 0x80000>; 941 reg-names = "dbi", "config"; 942 #address-cells = <3>; 943 #size-cells = <2>; 944 device_type = "pci"; 945 ranges = <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */ 946 0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */ 947 num-lanes = <1>; 948 num-viewport = <4>; 949 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 950 interrupt-names = "msi"; 951 #interrupt-cells = <1>; 952 interrupt-map-mask = <0 0 0 0x7>; 953 interrupt-map = <0 0 0 1 &gic GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, 954 <0 0 0 2 &gic GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, 955 <0 0 0 3 &gic GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, 956 <0 0 0 4 &gic GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 957 fsl,max-link-speed = <2>; 958 power-domains = <&pgc_pcie>; 959 resets = <&src IMX8MQ_RESET_PCIEPHY2>, 960 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>, 961 <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>; 962 reset-names = "pciephy", "apps", "turnoff"; 963 status = "disabled"; 964 }; 965 966 gic: interrupt-controller@38800000 { 967 compatible = "arm,gic-v3"; 968 reg = <0x38800000 0x10000>, /* GIC Dist */ 969 <0x38880000 0xc0000>, /* GICR */ 970 <0x31000000 0x2000>, /* GICC */ 971 <0x31010000 0x2000>, /* GICV */ 972 <0x31020000 0x2000>; /* GICH */ 973 #interrupt-cells = <3>; 974 interrupt-controller; 975 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 976 interrupt-parent = <&gic>; 977 }; 978 }; 979}; 980