1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * dts file for Xilinx ZynqMP 4 * 5 * (C) Copyright 2014 - 2021, Xilinx, Inc. 6 * 7 * Michal Simek <michal.simek@xilinx.com> 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 2 of 12 * the License, or (at your option) any later version. 13 */ 14 15#include <dt-bindings/dma/xlnx-zynqmp-dpdma.h> 16#include <dt-bindings/power/xlnx-zynqmp-power.h> 17#include <dt-bindings/reset/xlnx-zynqmp-resets.h> 18 19/ { 20 compatible = "xlnx,zynqmp"; 21 #address-cells = <2>; 22 #size-cells = <2>; 23 24 cpus { 25 #address-cells = <1>; 26 #size-cells = <0>; 27 28 cpu0: cpu@0 { 29 compatible = "arm,cortex-a53"; 30 device_type = "cpu"; 31 enable-method = "psci"; 32 operating-points-v2 = <&cpu_opp_table>; 33 reg = <0x0>; 34 cpu-idle-states = <&CPU_SLEEP_0>; 35 }; 36 37 cpu1: cpu@1 { 38 compatible = "arm,cortex-a53"; 39 device_type = "cpu"; 40 enable-method = "psci"; 41 reg = <0x1>; 42 operating-points-v2 = <&cpu_opp_table>; 43 cpu-idle-states = <&CPU_SLEEP_0>; 44 }; 45 46 cpu2: cpu@2 { 47 compatible = "arm,cortex-a53"; 48 device_type = "cpu"; 49 enable-method = "psci"; 50 reg = <0x2>; 51 operating-points-v2 = <&cpu_opp_table>; 52 cpu-idle-states = <&CPU_SLEEP_0>; 53 }; 54 55 cpu3: cpu@3 { 56 compatible = "arm,cortex-a53"; 57 device_type = "cpu"; 58 enable-method = "psci"; 59 reg = <0x3>; 60 operating-points-v2 = <&cpu_opp_table>; 61 cpu-idle-states = <&CPU_SLEEP_0>; 62 }; 63 64 idle-states { 65 entry-method = "psci"; 66 67 CPU_SLEEP_0: cpu-sleep-0 { 68 compatible = "arm,idle-state"; 69 arm,psci-suspend-param = <0x40000000>; 70 local-timer-stop; 71 entry-latency-us = <300>; 72 exit-latency-us = <600>; 73 min-residency-us = <10000>; 74 }; 75 }; 76 }; 77 78 cpu_opp_table: cpu-opp-table { 79 compatible = "operating-points-v2"; 80 opp-shared; 81 opp00 { 82 opp-hz = /bits/ 64 <1199999988>; 83 opp-microvolt = <1000000>; 84 clock-latency-ns = <500000>; 85 }; 86 opp01 { 87 opp-hz = /bits/ 64 <599999994>; 88 opp-microvolt = <1000000>; 89 clock-latency-ns = <500000>; 90 }; 91 opp02 { 92 opp-hz = /bits/ 64 <399999996>; 93 opp-microvolt = <1000000>; 94 clock-latency-ns = <500000>; 95 }; 96 opp03 { 97 opp-hz = /bits/ 64 <299999997>; 98 opp-microvolt = <1000000>; 99 clock-latency-ns = <500000>; 100 }; 101 }; 102 103 zynqmp_ipi: zynqmp_ipi { 104 compatible = "xlnx,zynqmp-ipi-mailbox"; 105 interrupt-parent = <&gic>; 106 interrupts = <0 35 4>; 107 xlnx,ipi-id = <0>; 108 #address-cells = <2>; 109 #size-cells = <2>; 110 ranges; 111 112 ipi_mailbox_pmu1: mailbox@ff990400 { 113 reg = <0x0 0xff9905c0 0x0 0x20>, 114 <0x0 0xff9905e0 0x0 0x20>, 115 <0x0 0xff990e80 0x0 0x20>, 116 <0x0 0xff990ea0 0x0 0x20>; 117 reg-names = "local_request_region", 118 "local_response_region", 119 "remote_request_region", 120 "remote_response_region"; 121 #mbox-cells = <1>; 122 xlnx,ipi-id = <4>; 123 }; 124 }; 125 126 dcc: dcc { 127 compatible = "arm,dcc"; 128 status = "disabled"; 129 }; 130 131 pmu { 132 compatible = "arm,armv8-pmuv3"; 133 interrupt-parent = <&gic>; 134 interrupts = <0 143 4>, 135 <0 144 4>, 136 <0 145 4>, 137 <0 146 4>; 138 }; 139 140 psci { 141 compatible = "arm,psci-0.2"; 142 method = "smc"; 143 }; 144 145 firmware { 146 zynqmp_firmware: zynqmp-firmware { 147 compatible = "xlnx,zynqmp-firmware"; 148 #power-domain-cells = <1>; 149 method = "smc"; 150 151 zynqmp_power: zynqmp-power { 152 compatible = "xlnx,zynqmp-power"; 153 interrupt-parent = <&gic>; 154 interrupts = <0 35 4>; 155 mboxes = <&ipi_mailbox_pmu1 0>, <&ipi_mailbox_pmu1 1>; 156 mbox-names = "tx", "rx"; 157 }; 158 159 nvmem_firmware { 160 compatible = "xlnx,zynqmp-nvmem-fw"; 161 #address-cells = <1>; 162 #size-cells = <1>; 163 164 soc_revision: soc_revision@0 { 165 reg = <0x0 0x4>; 166 }; 167 }; 168 169 zynqmp_pcap: pcap { 170 compatible = "xlnx,zynqmp-pcap-fpga"; 171 }; 172 173 xlnx_aes: zynqmp-aes { 174 compatible = "xlnx,zynqmp-aes"; 175 }; 176 177 zynqmp_reset: reset-controller { 178 compatible = "xlnx,zynqmp-reset"; 179 #reset-cells = <1>; 180 }; 181 182 pinctrl0: pinctrl { 183 compatible = "xlnx,zynqmp-pinctrl"; 184 status = "disabled"; 185 }; 186 }; 187 }; 188 189 timer { 190 compatible = "arm,armv8-timer"; 191 interrupt-parent = <&gic>; 192 interrupts = <1 13 0xf08>, 193 <1 14 0xf08>, 194 <1 11 0xf08>, 195 <1 10 0xf08>; 196 }; 197 198 fpga_full: fpga-full { 199 compatible = "fpga-region"; 200 fpga-mgr = <&zynqmp_pcap>; 201 #address-cells = <2>; 202 #size-cells = <2>; 203 ranges; 204 }; 205 206 amba: axi { 207 compatible = "simple-bus"; 208 #address-cells = <2>; 209 #size-cells = <2>; 210 ranges; 211 212 can0: can@ff060000 { 213 compatible = "xlnx,zynq-can-1.0"; 214 status = "disabled"; 215 clock-names = "can_clk", "pclk"; 216 reg = <0x0 0xff060000 0x0 0x1000>; 217 interrupts = <0 23 4>; 218 interrupt-parent = <&gic>; 219 tx-fifo-depth = <0x40>; 220 rx-fifo-depth = <0x40>; 221 power-domains = <&zynqmp_firmware PD_CAN_0>; 222 }; 223 224 can1: can@ff070000 { 225 compatible = "xlnx,zynq-can-1.0"; 226 status = "disabled"; 227 clock-names = "can_clk", "pclk"; 228 reg = <0x0 0xff070000 0x0 0x1000>; 229 interrupts = <0 24 4>; 230 interrupt-parent = <&gic>; 231 tx-fifo-depth = <0x40>; 232 rx-fifo-depth = <0x40>; 233 power-domains = <&zynqmp_firmware PD_CAN_1>; 234 }; 235 236 cci: cci@fd6e0000 { 237 compatible = "arm,cci-400"; 238 status = "disabled"; 239 reg = <0x0 0xfd6e0000 0x0 0x9000>; 240 ranges = <0x0 0x0 0xfd6e0000 0x10000>; 241 #address-cells = <1>; 242 #size-cells = <1>; 243 244 pmu@9000 { 245 compatible = "arm,cci-400-pmu,r1"; 246 reg = <0x9000 0x5000>; 247 interrupt-parent = <&gic>; 248 interrupts = <0 123 4>, 249 <0 123 4>, 250 <0 123 4>, 251 <0 123 4>, 252 <0 123 4>; 253 }; 254 }; 255 256 /* GDMA */ 257 fpd_dma_chan1: dma@fd500000 { 258 status = "disabled"; 259 compatible = "xlnx,zynqmp-dma-1.0"; 260 reg = <0x0 0xfd500000 0x0 0x1000>; 261 interrupt-parent = <&gic>; 262 interrupts = <0 124 4>; 263 clock-names = "clk_main", "clk_apb"; 264 xlnx,bus-width = <128>; 265 #stream-id-cells = <1>; 266 iommus = <&smmu 0x14e8>; 267 power-domains = <&zynqmp_firmware PD_GDMA>; 268 }; 269 270 fpd_dma_chan2: dma@fd510000 { 271 status = "disabled"; 272 compatible = "xlnx,zynqmp-dma-1.0"; 273 reg = <0x0 0xfd510000 0x0 0x1000>; 274 interrupt-parent = <&gic>; 275 interrupts = <0 125 4>; 276 clock-names = "clk_main", "clk_apb"; 277 xlnx,bus-width = <128>; 278 #stream-id-cells = <1>; 279 iommus = <&smmu 0x14e9>; 280 power-domains = <&zynqmp_firmware PD_GDMA>; 281 }; 282 283 fpd_dma_chan3: dma@fd520000 { 284 status = "disabled"; 285 compatible = "xlnx,zynqmp-dma-1.0"; 286 reg = <0x0 0xfd520000 0x0 0x1000>; 287 interrupt-parent = <&gic>; 288 interrupts = <0 126 4>; 289 clock-names = "clk_main", "clk_apb"; 290 xlnx,bus-width = <128>; 291 #stream-id-cells = <1>; 292 iommus = <&smmu 0x14ea>; 293 power-domains = <&zynqmp_firmware PD_GDMA>; 294 }; 295 296 fpd_dma_chan4: dma@fd530000 { 297 status = "disabled"; 298 compatible = "xlnx,zynqmp-dma-1.0"; 299 reg = <0x0 0xfd530000 0x0 0x1000>; 300 interrupt-parent = <&gic>; 301 interrupts = <0 127 4>; 302 clock-names = "clk_main", "clk_apb"; 303 xlnx,bus-width = <128>; 304 #stream-id-cells = <1>; 305 iommus = <&smmu 0x14eb>; 306 power-domains = <&zynqmp_firmware PD_GDMA>; 307 }; 308 309 fpd_dma_chan5: dma@fd540000 { 310 status = "disabled"; 311 compatible = "xlnx,zynqmp-dma-1.0"; 312 reg = <0x0 0xfd540000 0x0 0x1000>; 313 interrupt-parent = <&gic>; 314 interrupts = <0 128 4>; 315 clock-names = "clk_main", "clk_apb"; 316 xlnx,bus-width = <128>; 317 #stream-id-cells = <1>; 318 iommus = <&smmu 0x14ec>; 319 power-domains = <&zynqmp_firmware PD_GDMA>; 320 }; 321 322 fpd_dma_chan6: dma@fd550000 { 323 status = "disabled"; 324 compatible = "xlnx,zynqmp-dma-1.0"; 325 reg = <0x0 0xfd550000 0x0 0x1000>; 326 interrupt-parent = <&gic>; 327 interrupts = <0 129 4>; 328 clock-names = "clk_main", "clk_apb"; 329 xlnx,bus-width = <128>; 330 #stream-id-cells = <1>; 331 iommus = <&smmu 0x14ed>; 332 power-domains = <&zynqmp_firmware PD_GDMA>; 333 }; 334 335 fpd_dma_chan7: dma@fd560000 { 336 status = "disabled"; 337 compatible = "xlnx,zynqmp-dma-1.0"; 338 reg = <0x0 0xfd560000 0x0 0x1000>; 339 interrupt-parent = <&gic>; 340 interrupts = <0 130 4>; 341 clock-names = "clk_main", "clk_apb"; 342 xlnx,bus-width = <128>; 343 #stream-id-cells = <1>; 344 iommus = <&smmu 0x14ee>; 345 power-domains = <&zynqmp_firmware PD_GDMA>; 346 }; 347 348 fpd_dma_chan8: dma@fd570000 { 349 status = "disabled"; 350 compatible = "xlnx,zynqmp-dma-1.0"; 351 reg = <0x0 0xfd570000 0x0 0x1000>; 352 interrupt-parent = <&gic>; 353 interrupts = <0 131 4>; 354 clock-names = "clk_main", "clk_apb"; 355 xlnx,bus-width = <128>; 356 #stream-id-cells = <1>; 357 iommus = <&smmu 0x14ef>; 358 power-domains = <&zynqmp_firmware PD_GDMA>; 359 }; 360 361 gic: interrupt-controller@f9010000 { 362 compatible = "arm,gic-400"; 363 #address-cells = <0>; 364 #interrupt-cells = <3>; 365 reg = <0x0 0xf9010000 0x0 0x10000>, 366 <0x0 0xf9020000 0x0 0x20000>, 367 <0x0 0xf9040000 0x0 0x20000>, 368 <0x0 0xf9060000 0x0 0x20000>; 369 interrupt-controller; 370 interrupt-parent = <&gic>; 371 interrupts = <1 9 0xf04>; 372 }; 373 374 /* LPDDMA default allows only secured access. inorder to enable 375 * These dma channels, Users should ensure that these dma 376 * Channels are allowed for non secure access. 377 */ 378 lpd_dma_chan1: dma@ffa80000 { 379 status = "disabled"; 380 compatible = "xlnx,zynqmp-dma-1.0"; 381 reg = <0x0 0xffa80000 0x0 0x1000>; 382 interrupt-parent = <&gic>; 383 interrupts = <0 77 4>; 384 clock-names = "clk_main", "clk_apb"; 385 xlnx,bus-width = <64>; 386 #stream-id-cells = <1>; 387 iommus = <&smmu 0x868>; 388 power-domains = <&zynqmp_firmware PD_ADMA>; 389 }; 390 391 lpd_dma_chan2: dma@ffa90000 { 392 status = "disabled"; 393 compatible = "xlnx,zynqmp-dma-1.0"; 394 reg = <0x0 0xffa90000 0x0 0x1000>; 395 interrupt-parent = <&gic>; 396 interrupts = <0 78 4>; 397 clock-names = "clk_main", "clk_apb"; 398 xlnx,bus-width = <64>; 399 #stream-id-cells = <1>; 400 iommus = <&smmu 0x869>; 401 power-domains = <&zynqmp_firmware PD_ADMA>; 402 }; 403 404 lpd_dma_chan3: dma@ffaa0000 { 405 status = "disabled"; 406 compatible = "xlnx,zynqmp-dma-1.0"; 407 reg = <0x0 0xffaa0000 0x0 0x1000>; 408 interrupt-parent = <&gic>; 409 interrupts = <0 79 4>; 410 clock-names = "clk_main", "clk_apb"; 411 xlnx,bus-width = <64>; 412 #stream-id-cells = <1>; 413 iommus = <&smmu 0x86a>; 414 power-domains = <&zynqmp_firmware PD_ADMA>; 415 }; 416 417 lpd_dma_chan4: dma@ffab0000 { 418 status = "disabled"; 419 compatible = "xlnx,zynqmp-dma-1.0"; 420 reg = <0x0 0xffab0000 0x0 0x1000>; 421 interrupt-parent = <&gic>; 422 interrupts = <0 80 4>; 423 clock-names = "clk_main", "clk_apb"; 424 xlnx,bus-width = <64>; 425 #stream-id-cells = <1>; 426 iommus = <&smmu 0x86b>; 427 power-domains = <&zynqmp_firmware PD_ADMA>; 428 }; 429 430 lpd_dma_chan5: dma@ffac0000 { 431 status = "disabled"; 432 compatible = "xlnx,zynqmp-dma-1.0"; 433 reg = <0x0 0xffac0000 0x0 0x1000>; 434 interrupt-parent = <&gic>; 435 interrupts = <0 81 4>; 436 clock-names = "clk_main", "clk_apb"; 437 xlnx,bus-width = <64>; 438 #stream-id-cells = <1>; 439 iommus = <&smmu 0x86c>; 440 power-domains = <&zynqmp_firmware PD_ADMA>; 441 }; 442 443 lpd_dma_chan6: dma@ffad0000 { 444 status = "disabled"; 445 compatible = "xlnx,zynqmp-dma-1.0"; 446 reg = <0x0 0xffad0000 0x0 0x1000>; 447 interrupt-parent = <&gic>; 448 interrupts = <0 82 4>; 449 clock-names = "clk_main", "clk_apb"; 450 xlnx,bus-width = <64>; 451 #stream-id-cells = <1>; 452 iommus = <&smmu 0x86d>; 453 power-domains = <&zynqmp_firmware PD_ADMA>; 454 }; 455 456 lpd_dma_chan7: dma@ffae0000 { 457 status = "disabled"; 458 compatible = "xlnx,zynqmp-dma-1.0"; 459 reg = <0x0 0xffae0000 0x0 0x1000>; 460 interrupt-parent = <&gic>; 461 interrupts = <0 83 4>; 462 clock-names = "clk_main", "clk_apb"; 463 xlnx,bus-width = <64>; 464 #stream-id-cells = <1>; 465 iommus = <&smmu 0x86e>; 466 power-domains = <&zynqmp_firmware PD_ADMA>; 467 }; 468 469 lpd_dma_chan8: dma@ffaf0000 { 470 status = "disabled"; 471 compatible = "xlnx,zynqmp-dma-1.0"; 472 reg = <0x0 0xffaf0000 0x0 0x1000>; 473 interrupt-parent = <&gic>; 474 interrupts = <0 84 4>; 475 clock-names = "clk_main", "clk_apb"; 476 xlnx,bus-width = <64>; 477 #stream-id-cells = <1>; 478 iommus = <&smmu 0x86f>; 479 power-domains = <&zynqmp_firmware PD_ADMA>; 480 }; 481 482 mc: memory-controller@fd070000 { 483 compatible = "xlnx,zynqmp-ddrc-2.40a"; 484 reg = <0x0 0xfd070000 0x0 0x30000>; 485 interrupt-parent = <&gic>; 486 interrupts = <0 112 4>; 487 }; 488 489 nand0: nand-controller@ff100000 { 490 compatible = "xlnx,zynqmp-nand-controller", "arasan,nfc-v3p10"; 491 status = "disabled"; 492 reg = <0x0 0xff100000 0x0 0x1000>; 493 clock-names = "controller", "bus"; 494 interrupt-parent = <&gic>; 495 interrupts = <0 14 4>; 496 #address-cells = <1>; 497 #size-cells = <0>; 498 #stream-id-cells = <1>; 499 iommus = <&smmu 0x872>; 500 power-domains = <&zynqmp_firmware PD_NAND>; 501 }; 502 503 gem0: ethernet@ff0b0000 { 504 compatible = "cdns,zynqmp-gem", "cdns,gem"; 505 status = "disabled"; 506 interrupt-parent = <&gic>; 507 interrupts = <0 57 4>, <0 57 4>; 508 reg = <0x0 0xff0b0000 0x0 0x1000>; 509 clock-names = "pclk", "hclk", "tx_clk"; 510 #address-cells = <1>; 511 #size-cells = <0>; 512 #stream-id-cells = <1>; 513 iommus = <&smmu 0x874>; 514 power-domains = <&zynqmp_firmware PD_ETH_0>; 515 }; 516 517 gem1: ethernet@ff0c0000 { 518 compatible = "cdns,zynqmp-gem", "cdns,gem"; 519 status = "disabled"; 520 interrupt-parent = <&gic>; 521 interrupts = <0 59 4>, <0 59 4>; 522 reg = <0x0 0xff0c0000 0x0 0x1000>; 523 clock-names = "pclk", "hclk", "tx_clk"; 524 #address-cells = <1>; 525 #size-cells = <0>; 526 #stream-id-cells = <1>; 527 iommus = <&smmu 0x875>; 528 power-domains = <&zynqmp_firmware PD_ETH_1>; 529 }; 530 531 gem2: ethernet@ff0d0000 { 532 compatible = "cdns,zynqmp-gem", "cdns,gem"; 533 status = "disabled"; 534 interrupt-parent = <&gic>; 535 interrupts = <0 61 4>, <0 61 4>; 536 reg = <0x0 0xff0d0000 0x0 0x1000>; 537 clock-names = "pclk", "hclk", "tx_clk"; 538 #address-cells = <1>; 539 #size-cells = <0>; 540 #stream-id-cells = <1>; 541 iommus = <&smmu 0x876>; 542 power-domains = <&zynqmp_firmware PD_ETH_2>; 543 }; 544 545 gem3: ethernet@ff0e0000 { 546 compatible = "cdns,zynqmp-gem", "cdns,gem"; 547 status = "disabled"; 548 interrupt-parent = <&gic>; 549 interrupts = <0 63 4>, <0 63 4>; 550 reg = <0x0 0xff0e0000 0x0 0x1000>; 551 clock-names = "pclk", "hclk", "tx_clk"; 552 #address-cells = <1>; 553 #size-cells = <0>; 554 #stream-id-cells = <1>; 555 iommus = <&smmu 0x877>; 556 power-domains = <&zynqmp_firmware PD_ETH_3>; 557 }; 558 559 gpio: gpio@ff0a0000 { 560 compatible = "xlnx,zynqmp-gpio-1.0"; 561 status = "disabled"; 562 #address-cells = <0>; 563 #gpio-cells = <0x2>; 564 gpio-controller; 565 interrupt-parent = <&gic>; 566 interrupts = <0 16 4>; 567 interrupt-controller; 568 #interrupt-cells = <2>; 569 reg = <0x0 0xff0a0000 0x0 0x1000>; 570 power-domains = <&zynqmp_firmware PD_GPIO>; 571 }; 572 573 i2c0: i2c@ff020000 { 574 compatible = "cdns,i2c-r1p14"; 575 status = "disabled"; 576 interrupt-parent = <&gic>; 577 interrupts = <0 17 4>; 578 reg = <0x0 0xff020000 0x0 0x1000>; 579 #address-cells = <1>; 580 #size-cells = <0>; 581 power-domains = <&zynqmp_firmware PD_I2C_0>; 582 }; 583 584 i2c1: i2c@ff030000 { 585 compatible = "cdns,i2c-r1p14"; 586 status = "disabled"; 587 interrupt-parent = <&gic>; 588 interrupts = <0 18 4>; 589 reg = <0x0 0xff030000 0x0 0x1000>; 590 #address-cells = <1>; 591 #size-cells = <0>; 592 power-domains = <&zynqmp_firmware PD_I2C_1>; 593 }; 594 595 pcie: pcie@fd0e0000 { 596 compatible = "xlnx,nwl-pcie-2.11"; 597 status = "disabled"; 598 #address-cells = <3>; 599 #size-cells = <2>; 600 #interrupt-cells = <1>; 601 msi-controller; 602 device_type = "pci"; 603 interrupt-parent = <&gic>; 604 interrupts = <0 118 4>, 605 <0 117 4>, 606 <0 116 4>, 607 <0 115 4>, /* MSI_1 [63...32] */ 608 <0 114 4>; /* MSI_0 [31...0] */ 609 interrupt-names = "misc", "dummy", "intx", 610 "msi1", "msi0"; 611 msi-parent = <&pcie>; 612 reg = <0x0 0xfd0e0000 0x0 0x1000>, 613 <0x0 0xfd480000 0x0 0x1000>, 614 <0x80 0x00000000 0x0 0x1000000>; 615 reg-names = "breg", "pcireg", "cfg"; 616 ranges = <0x02000000 0x00000000 0xe0000000 0x00000000 0xe0000000 0x00000000 0x10000000>,/* non-prefetchable memory */ 617 <0x43000000 0x00000006 0x00000000 0x00000006 0x00000000 0x00000002 0x00000000>;/* prefetchable memory */ 618 bus-range = <0x00 0xff>; 619 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 620 interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>, 621 <0x0 0x0 0x0 0x2 &pcie_intc 0x2>, 622 <0x0 0x0 0x0 0x3 &pcie_intc 0x3>, 623 <0x0 0x0 0x0 0x4 &pcie_intc 0x4>; 624 #stream-id-cells = <1>; 625 iommus = <&smmu 0x4d0>; 626 power-domains = <&zynqmp_firmware PD_PCIE>; 627 pcie_intc: legacy-interrupt-controller { 628 interrupt-controller; 629 #address-cells = <0>; 630 #interrupt-cells = <1>; 631 }; 632 }; 633 634 qspi: spi@ff0f0000 { 635 compatible = "xlnx,zynqmp-qspi-1.0"; 636 status = "disabled"; 637 clock-names = "ref_clk", "pclk"; 638 interrupts = <0 15 4>; 639 interrupt-parent = <&gic>; 640 num-cs = <1>; 641 reg = <0x0 0xff0f0000 0x0 0x1000>, 642 <0x0 0xc0000000 0x0 0x8000000>; 643 #address-cells = <1>; 644 #size-cells = <0>; 645 #stream-id-cells = <1>; 646 iommus = <&smmu 0x873>; 647 power-domains = <&zynqmp_firmware PD_QSPI>; 648 }; 649 650 psgtr: phy@fd400000 { 651 compatible = "xlnx,zynqmp-psgtr-v1.1"; 652 status = "disabled"; 653 reg = <0x0 0xfd400000 0x0 0x40000>, 654 <0x0 0xfd3d0000 0x0 0x1000>; 655 reg-names = "serdes", "siou"; 656 #phy-cells = <4>; 657 }; 658 659 rtc: rtc@ffa60000 { 660 compatible = "xlnx,zynqmp-rtc"; 661 status = "disabled"; 662 reg = <0x0 0xffa60000 0x0 0x100>; 663 interrupt-parent = <&gic>; 664 interrupts = <0 26 4>, <0 27 4>; 665 interrupt-names = "alarm", "sec"; 666 calibration = <0x7FFF>; 667 }; 668 669 sata: ahci@fd0c0000 { 670 compatible = "ceva,ahci-1v84"; 671 status = "disabled"; 672 reg = <0x0 0xfd0c0000 0x0 0x2000>; 673 interrupt-parent = <&gic>; 674 interrupts = <0 133 4>; 675 power-domains = <&zynqmp_firmware PD_SATA>; 676 resets = <&zynqmp_reset ZYNQMP_RESET_SATA>; 677 #stream-id-cells = <4>; 678 iommus = <&smmu 0x4c0>, <&smmu 0x4c1>, 679 <&smmu 0x4c2>, <&smmu 0x4c3>; 680 }; 681 682 sdhci0: mmc@ff160000 { 683 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; 684 status = "disabled"; 685 interrupt-parent = <&gic>; 686 interrupts = <0 48 4>; 687 reg = <0x0 0xff160000 0x0 0x1000>; 688 clock-names = "clk_xin", "clk_ahb"; 689 #stream-id-cells = <1>; 690 iommus = <&smmu 0x870>; 691 #clock-cells = <1>; 692 clock-output-names = "clk_out_sd0", "clk_in_sd0"; 693 power-domains = <&zynqmp_firmware PD_SD_0>; 694 }; 695 696 sdhci1: mmc@ff170000 { 697 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; 698 status = "disabled"; 699 interrupt-parent = <&gic>; 700 interrupts = <0 49 4>; 701 reg = <0x0 0xff170000 0x0 0x1000>; 702 clock-names = "clk_xin", "clk_ahb"; 703 #stream-id-cells = <1>; 704 iommus = <&smmu 0x871>; 705 #clock-cells = <1>; 706 clock-output-names = "clk_out_sd1", "clk_in_sd1"; 707 power-domains = <&zynqmp_firmware PD_SD_1>; 708 }; 709 710 smmu: iommu@fd800000 { 711 compatible = "arm,mmu-500"; 712 reg = <0x0 0xfd800000 0x0 0x20000>; 713 #iommu-cells = <1>; 714 status = "disabled"; 715 #global-interrupts = <1>; 716 interrupt-parent = <&gic>; 717 interrupts = <0 155 4>, 718 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>, 719 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>, 720 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>, 721 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>; 722 }; 723 724 spi0: spi@ff040000 { 725 compatible = "cdns,spi-r1p6"; 726 status = "disabled"; 727 interrupt-parent = <&gic>; 728 interrupts = <0 19 4>; 729 reg = <0x0 0xff040000 0x0 0x1000>; 730 clock-names = "ref_clk", "pclk"; 731 #address-cells = <1>; 732 #size-cells = <0>; 733 power-domains = <&zynqmp_firmware PD_SPI_0>; 734 }; 735 736 spi1: spi@ff050000 { 737 compatible = "cdns,spi-r1p6"; 738 status = "disabled"; 739 interrupt-parent = <&gic>; 740 interrupts = <0 20 4>; 741 reg = <0x0 0xff050000 0x0 0x1000>; 742 clock-names = "ref_clk", "pclk"; 743 #address-cells = <1>; 744 #size-cells = <0>; 745 power-domains = <&zynqmp_firmware PD_SPI_1>; 746 }; 747 748 ttc0: timer@ff110000 { 749 compatible = "cdns,ttc"; 750 status = "disabled"; 751 interrupt-parent = <&gic>; 752 interrupts = <0 36 4>, <0 37 4>, <0 38 4>; 753 reg = <0x0 0xff110000 0x0 0x1000>; 754 timer-width = <32>; 755 power-domains = <&zynqmp_firmware PD_TTC_0>; 756 }; 757 758 ttc1: timer@ff120000 { 759 compatible = "cdns,ttc"; 760 status = "disabled"; 761 interrupt-parent = <&gic>; 762 interrupts = <0 39 4>, <0 40 4>, <0 41 4>; 763 reg = <0x0 0xff120000 0x0 0x1000>; 764 timer-width = <32>; 765 power-domains = <&zynqmp_firmware PD_TTC_1>; 766 }; 767 768 ttc2: timer@ff130000 { 769 compatible = "cdns,ttc"; 770 status = "disabled"; 771 interrupt-parent = <&gic>; 772 interrupts = <0 42 4>, <0 43 4>, <0 44 4>; 773 reg = <0x0 0xff130000 0x0 0x1000>; 774 timer-width = <32>; 775 power-domains = <&zynqmp_firmware PD_TTC_2>; 776 }; 777 778 ttc3: timer@ff140000 { 779 compatible = "cdns,ttc"; 780 status = "disabled"; 781 interrupt-parent = <&gic>; 782 interrupts = <0 45 4>, <0 46 4>, <0 47 4>; 783 reg = <0x0 0xff140000 0x0 0x1000>; 784 timer-width = <32>; 785 power-domains = <&zynqmp_firmware PD_TTC_3>; 786 }; 787 788 uart0: serial@ff000000 { 789 compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; 790 status = "disabled"; 791 interrupt-parent = <&gic>; 792 interrupts = <0 21 4>; 793 reg = <0x0 0xff000000 0x0 0x1000>; 794 clock-names = "uart_clk", "pclk"; 795 power-domains = <&zynqmp_firmware PD_UART_0>; 796 }; 797 798 uart1: serial@ff010000 { 799 compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; 800 status = "disabled"; 801 interrupt-parent = <&gic>; 802 interrupts = <0 22 4>; 803 reg = <0x0 0xff010000 0x0 0x1000>; 804 clock-names = "uart_clk", "pclk"; 805 power-domains = <&zynqmp_firmware PD_UART_1>; 806 }; 807 808 usb0: usb@ff9d0000 { 809 #address-cells = <2>; 810 #size-cells = <2>; 811 status = "disabled"; 812 compatible = "xlnx,zynqmp-dwc3"; 813 reg = <0x0 0xff9d0000 0x0 0x100>; 814 clock-names = "bus_clk", "ref_clk"; 815 power-domains = <&zynqmp_firmware PD_USB_0>; 816 resets = <&zynqmp_reset ZYNQMP_RESET_USB0_CORERESET>, 817 <&zynqmp_reset ZYNQMP_RESET_USB0_HIBERRESET>, 818 <&zynqmp_reset ZYNQMP_RESET_USB0_APB>; 819 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst"; 820 ranges; 821 822 dwc3_0: usb@fe200000 { 823 compatible = "snps,dwc3"; 824 reg = <0x0 0xfe200000 0x0 0x40000>; 825 interrupt-parent = <&gic>; 826 interrupt-names = "dwc_usb3", "otg"; 827 interrupts = <0 65 4>, <0 69 4>; 828 #stream-id-cells = <1>; 829 iommus = <&smmu 0x860>; 830 snps,quirk-frame-length-adjustment = <0x20>; 831 /* dma-coherent; */ 832 }; 833 }; 834 835 usb1: usb@ff9e0000 { 836 #address-cells = <2>; 837 #size-cells = <2>; 838 status = "disabled"; 839 compatible = "xlnx,zynqmp-dwc3"; 840 reg = <0x0 0xff9e0000 0x0 0x100>; 841 clock-names = "bus_clk", "ref_clk"; 842 power-domains = <&zynqmp_firmware PD_USB_1>; 843 resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>, 844 <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>, 845 <&zynqmp_reset ZYNQMP_RESET_USB1_APB>; 846 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst"; 847 ranges; 848 849 dwc3_1: usb@fe300000 { 850 compatible = "snps,dwc3"; 851 reg = <0x0 0xfe300000 0x0 0x40000>; 852 interrupt-parent = <&gic>; 853 interrupt-names = "dwc_usb3", "otg"; 854 interrupts = <0 70 4>, <0 74 4>; 855 #stream-id-cells = <1>; 856 iommus = <&smmu 0x861>; 857 snps,quirk-frame-length-adjustment = <0x20>; 858 /* dma-coherent; */ 859 }; 860 }; 861 862 watchdog0: watchdog@fd4d0000 { 863 compatible = "cdns,wdt-r1p2"; 864 status = "disabled"; 865 interrupt-parent = <&gic>; 866 interrupts = <0 113 1>; 867 reg = <0x0 0xfd4d0000 0x0 0x1000>; 868 timeout-sec = <60>; 869 reset-on-timeout; 870 }; 871 872 lpd_watchdog: watchdog@ff150000 { 873 compatible = "cdns,wdt-r1p2"; 874 status = "disabled"; 875 interrupt-parent = <&gic>; 876 interrupts = <0 52 1>; 877 reg = <0x0 0xff150000 0x0 0x1000>; 878 timeout-sec = <10>; 879 }; 880 881 zynqmp_dpdma: dma-controller@fd4c0000 { 882 compatible = "xlnx,zynqmp-dpdma"; 883 status = "disabled"; 884 reg = <0x0 0xfd4c0000 0x0 0x1000>; 885 interrupts = <0 122 4>; 886 interrupt-parent = <&gic>; 887 clock-names = "axi_clk"; 888 power-domains = <&zynqmp_firmware PD_DP>; 889 #dma-cells = <1>; 890 }; 891 892 zynqmp_dpsub: display@fd4a0000 { 893 compatible = "xlnx,zynqmp-dpsub-1.7"; 894 status = "disabled"; 895 reg = <0x0 0xfd4a0000 0x0 0x1000>, 896 <0x0 0xfd4aa000 0x0 0x1000>, 897 <0x0 0xfd4ab000 0x0 0x1000>, 898 <0x0 0xfd4ac000 0x0 0x1000>; 899 reg-names = "dp", "blend", "av_buf", "aud"; 900 interrupts = <0 119 4>; 901 interrupt-parent = <&gic>; 902 clock-names = "dp_apb_clk", "dp_aud_clk", 903 "dp_vtc_pixel_clk_in"; 904 power-domains = <&zynqmp_firmware PD_DP>; 905 resets = <&zynqmp_reset ZYNQMP_RESET_DP>; 906 dma-names = "vid0", "vid1", "vid2", "gfx0"; 907 dmas = <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO0>, 908 <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO1>, 909 <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO2>, 910 <&zynqmp_dpdma ZYNQMP_DPDMA_GRAPHICS>; 911 }; 912 }; 913}; 914