1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * dts file for Xilinx ZynqMP ZCU102 RevA 4 * 5 * (C) Copyright 2015 - 2018, Xilinx, Inc. 6 * 7 * Michal Simek <michal.simek@xilinx.com> 8 */ 9 10/dts-v1/; 11 12#include "zynqmp.dtsi" 13#include "zynqmp-clk-ccf.dtsi" 14#include <dt-bindings/input/input.h> 15#include <dt-bindings/gpio/gpio.h> 16#include <dt-bindings/phy/phy.h> 17 18/ { 19 model = "ZynqMP ZCU102 RevA"; 20 compatible = "xlnx,zynqmp-zcu102-revA", "xlnx,zynqmp-zcu102", "xlnx,zynqmp"; 21 22 aliases { 23 ethernet0 = &gem3; 24 gpio0 = &gpio; 25 i2c0 = &i2c0; 26 i2c1 = &i2c1; 27 mmc0 = &sdhci1; 28 rtc0 = &rtc; 29 serial0 = &uart0; 30 serial1 = &uart1; 31 serial2 = &dcc; 32 spi0 = &qspi; 33 usb0 = &usb0; 34 }; 35 36 chosen { 37 bootargs = "earlycon"; 38 stdout-path = "serial0:115200n8"; 39 }; 40 41 memory@0 { 42 device_type = "memory"; 43 reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>; 44 }; 45 46 gpio-keys { 47 compatible = "gpio-keys"; 48 autorepeat; 49 sw19 { 50 label = "sw19"; 51 gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; 52 linux,code = <KEY_DOWN>; 53 gpio-key,wakeup; 54 autorepeat; 55 }; 56 }; 57 58 leds { 59 compatible = "gpio-leds"; 60 heartbeat_led { 61 label = "heartbeat"; 62 gpios = <&gpio 23 GPIO_ACTIVE_HIGH>; 63 linux,default-trigger = "heartbeat"; 64 }; 65 }; 66}; 67 68&can1 { 69 status = "okay"; 70}; 71 72&dcc { 73 status = "okay"; 74}; 75 76&fpd_dma_chan1 { 77 status = "okay"; 78}; 79 80&fpd_dma_chan2 { 81 status = "okay"; 82}; 83 84&fpd_dma_chan3 { 85 status = "okay"; 86}; 87 88&fpd_dma_chan4 { 89 status = "okay"; 90}; 91 92&fpd_dma_chan5 { 93 status = "okay"; 94}; 95 96&fpd_dma_chan6 { 97 status = "okay"; 98}; 99 100&fpd_dma_chan7 { 101 status = "okay"; 102}; 103 104&fpd_dma_chan8 { 105 status = "okay"; 106}; 107 108&gem3 { 109 status = "okay"; 110 phy-handle = <&phy0>; 111 phy-mode = "rgmii-id"; 112 phy0: phy@21 { 113 reg = <21>; 114 ti,rx-internal-delay = <0x8>; 115 ti,tx-internal-delay = <0xa>; 116 ti,fifo-depth = <0x1>; 117 }; 118}; 119 120&gpio { 121 status = "okay"; 122}; 123 124&gpu { 125 status = "okay"; 126}; 127 128&i2c0 { 129 status = "okay"; 130 clock-frequency = <400000>; 131 132 tca6416_u97: gpio@20 { 133 compatible = "ti,tca6416"; 134 reg = <0x20>; 135 gpio-controller; 136 #gpio-cells = <2>; 137 /* 138 * IRQ not connected 139 * Lines: 140 * 0 - PS_GTR_LAN_SEL0 141 * 1 - PS_GTR_LAN_SEL1 142 * 2 - PS_GTR_LAN_SEL2 143 * 3 - PS_GTR_LAN_SEL3 144 * 4 - PCI_CLK_DIR_SEL 145 * 5 - IIC_MUX_RESET_B 146 * 6 - GEM3_EXP_RESET_B 147 * 7, 10 - 17 - not connected 148 */ 149 150 gtr_sel0 { 151 gpio-hog; 152 gpios = <0 0>; 153 output-low; /* PCIE = 0, DP = 1 */ 154 line-name = "sel0"; 155 }; 156 gtr_sel1 { 157 gpio-hog; 158 gpios = <1 0>; 159 output-high; /* PCIE = 0, DP = 1 */ 160 line-name = "sel1"; 161 }; 162 gtr_sel2 { 163 gpio-hog; 164 gpios = <2 0>; 165 output-high; /* PCIE = 0, USB0 = 1 */ 166 line-name = "sel2"; 167 }; 168 gtr_sel3 { 169 gpio-hog; 170 gpios = <3 0>; 171 output-high; /* PCIE = 0, SATA = 1 */ 172 line-name = "sel3"; 173 }; 174 }; 175 176 tca6416_u61: gpio@21 { 177 compatible = "ti,tca6416"; 178 reg = <0x21>; 179 gpio-controller; 180 #gpio-cells = <2>; 181 /* 182 * IRQ not connected 183 * Lines: 184 * 0 - VCCPSPLL_EN 185 * 1 - MGTRAVCC_EN 186 * 2 - MGTRAVTT_EN 187 * 3 - VCCPSDDRPLL_EN 188 * 4 - MIO26_PMU_INPUT_LS 189 * 5 - PL_PMBUS_ALERT 190 * 6 - PS_PMBUS_ALERT 191 * 7 - MAXIM_PMBUS_ALERT 192 * 10 - PL_DDR4_VTERM_EN 193 * 11 - PL_DDR4_VPP_2V5_EN 194 * 12 - PS_DIMM_VDDQ_TO_PSVCCO_ON 195 * 13 - PS_DIMM_SUSPEND_EN 196 * 14 - PS_DDR4_VTERM_EN 197 * 15 - PS_DDR4_VPP_2V5_EN 198 * 16 - 17 - not connected 199 */ 200 }; 201 202 i2c-mux@75 { /* u60 */ 203 compatible = "nxp,pca9544"; 204 #address-cells = <1>; 205 #size-cells = <0>; 206 reg = <0x75>; 207 i2c@0 { 208 #address-cells = <1>; 209 #size-cells = <0>; 210 reg = <0>; 211 /* PS_PMBUS */ 212 ina226@40 { /* u76 */ 213 compatible = "ti,ina226"; 214 reg = <0x40>; 215 shunt-resistor = <5000>; 216 }; 217 ina226@41 { /* u77 */ 218 compatible = "ti,ina226"; 219 reg = <0x41>; 220 shunt-resistor = <5000>; 221 }; 222 ina226@42 { /* u78 */ 223 compatible = "ti,ina226"; 224 reg = <0x42>; 225 shunt-resistor = <5000>; 226 }; 227 ina226@43 { /* u87 */ 228 compatible = "ti,ina226"; 229 reg = <0x43>; 230 shunt-resistor = <5000>; 231 }; 232 ina226@44 { /* u85 */ 233 compatible = "ti,ina226"; 234 reg = <0x44>; 235 shunt-resistor = <5000>; 236 }; 237 ina226@45 { /* u86 */ 238 compatible = "ti,ina226"; 239 reg = <0x45>; 240 shunt-resistor = <5000>; 241 }; 242 ina226@46 { /* u93 */ 243 compatible = "ti,ina226"; 244 reg = <0x46>; 245 shunt-resistor = <5000>; 246 }; 247 ina226@47 { /* u88 */ 248 compatible = "ti,ina226"; 249 reg = <0x47>; 250 shunt-resistor = <5000>; 251 }; 252 ina226@4a { /* u15 */ 253 compatible = "ti,ina226"; 254 reg = <0x4a>; 255 shunt-resistor = <5000>; 256 }; 257 ina226@4b { /* u92 */ 258 compatible = "ti,ina226"; 259 reg = <0x4b>; 260 shunt-resistor = <5000>; 261 }; 262 }; 263 i2c@1 { 264 #address-cells = <1>; 265 #size-cells = <0>; 266 reg = <1>; 267 /* PL_PMBUS */ 268 ina226@40 { /* u79 */ 269 compatible = "ti,ina226"; 270 reg = <0x40>; 271 shunt-resistor = <2000>; 272 }; 273 ina226@41 { /* u81 */ 274 compatible = "ti,ina226"; 275 reg = <0x41>; 276 shunt-resistor = <5000>; 277 }; 278 ina226@42 { /* u80 */ 279 compatible = "ti,ina226"; 280 reg = <0x42>; 281 shunt-resistor = <5000>; 282 }; 283 ina226@43 { /* u84 */ 284 compatible = "ti,ina226"; 285 reg = <0x43>; 286 shunt-resistor = <5000>; 287 }; 288 ina226@44 { /* u16 */ 289 compatible = "ti,ina226"; 290 reg = <0x44>; 291 shunt-resistor = <5000>; 292 }; 293 ina226@45 { /* u65 */ 294 compatible = "ti,ina226"; 295 reg = <0x45>; 296 shunt-resistor = <5000>; 297 }; 298 ina226@46 { /* u74 */ 299 compatible = "ti,ina226"; 300 reg = <0x46>; 301 shunt-resistor = <5000>; 302 }; 303 ina226@47 { /* u75 */ 304 compatible = "ti,ina226"; 305 reg = <0x47>; 306 shunt-resistor = <5000>; 307 }; 308 }; 309 i2c@2 { 310 #address-cells = <1>; 311 #size-cells = <0>; 312 reg = <2>; 313 /* MAXIM_PMBUS - 00 */ 314 max15301@a { /* u46 */ 315 compatible = "maxim,max15301"; 316 reg = <0xa>; 317 }; 318 max15303@b { /* u4 */ 319 compatible = "maxim,max15303"; 320 reg = <0xb>; 321 }; 322 max15303@10 { /* u13 */ 323 compatible = "maxim,max15303"; 324 reg = <0x10>; 325 }; 326 max15301@13 { /* u47 */ 327 compatible = "maxim,max15301"; 328 reg = <0x13>; 329 }; 330 max15303@14 { /* u7 */ 331 compatible = "maxim,max15303"; 332 reg = <0x14>; 333 }; 334 max15303@15 { /* u6 */ 335 compatible = "maxim,max15303"; 336 reg = <0x15>; 337 }; 338 max15303@16 { /* u10 */ 339 compatible = "maxim,max15303"; 340 reg = <0x16>; 341 }; 342 max15303@17 { /* u9 */ 343 compatible = "maxim,max15303"; 344 reg = <0x17>; 345 }; 346 max15301@18 { /* u63 */ 347 compatible = "maxim,max15301"; 348 reg = <0x18>; 349 }; 350 max15303@1a { /* u49 */ 351 compatible = "maxim,max15303"; 352 reg = <0x1a>; 353 }; 354 max15303@1d { /* u18 */ 355 compatible = "maxim,max15303"; 356 reg = <0x1d>; 357 }; 358 max15303@20 { /* u8 */ 359 compatible = "maxim,max15303"; 360 status = "disabled"; /* unreachable */ 361 reg = <0x20>; 362 }; 363 364 max20751@72 { /* u95 */ 365 compatible = "maxim,max20751"; 366 reg = <0x72>; 367 }; 368 max20751@73 { /* u96 */ 369 compatible = "maxim,max20751"; 370 reg = <0x73>; 371 }; 372 }; 373 /* Bus 3 is not connected */ 374 }; 375}; 376 377&i2c1 { 378 status = "okay"; 379 clock-frequency = <400000>; 380 381 /* PL i2c via PCA9306 - u45 */ 382 i2c-mux@74 { /* u34 */ 383 compatible = "nxp,pca9548"; 384 #address-cells = <1>; 385 #size-cells = <0>; 386 reg = <0x74>; 387 i2c@0 { 388 #address-cells = <1>; 389 #size-cells = <0>; 390 reg = <0>; 391 /* 392 * IIC_EEPROM 1kB memory which uses 256B blocks 393 * where every block has different address. 394 * 0 - 256B address 0x54 395 * 256B - 512B address 0x55 396 * 512B - 768B address 0x56 397 * 768B - 1024B address 0x57 398 */ 399 eeprom: eeprom@54 { /* u23 */ 400 compatible = "atmel,24c08"; 401 reg = <0x54>; 402 }; 403 }; 404 i2c@1 { 405 #address-cells = <1>; 406 #size-cells = <0>; 407 reg = <1>; 408 si5341: clock-generator@36 { /* SI5341 - u69 */ 409 compatible = "silabs,si5341"; 410 reg = <0x36>; 411 }; 412 413 }; 414 i2c@2 { 415 #address-cells = <1>; 416 #size-cells = <0>; 417 reg = <2>; 418 si570_1: clock-generator@5d { /* USER SI570 - u42 */ 419 #clock-cells = <0>; 420 compatible = "silabs,si570"; 421 reg = <0x5d>; 422 temperature-stability = <50>; 423 factory-fout = <300000000>; 424 clock-frequency = <300000000>; 425 clock-output-names = "si570_user"; 426 }; 427 }; 428 i2c@3 { 429 #address-cells = <1>; 430 #size-cells = <0>; 431 reg = <3>; 432 si570_2: clock-generator@5d { /* USER MGT SI570 - u56 */ 433 #clock-cells = <0>; 434 compatible = "silabs,si570"; 435 reg = <0x5d>; 436 temperature-stability = <50>; /* copy from zc702 */ 437 factory-fout = <156250000>; 438 clock-frequency = <148500000>; 439 clock-output-names = "si570_mgt"; 440 }; 441 }; 442 i2c@4 { 443 #address-cells = <1>; 444 #size-cells = <0>; 445 reg = <4>; 446 si5328: clock-generator@69 {/* SI5328 - u20 */ 447 compatible = "silabs,si5328"; 448 reg = <0x69>; 449 /* 450 * Chip has interrupt present connected to PL 451 * interrupt-parent = <&>; 452 * interrupts = <>; 453 */ 454 }; 455 }; 456 /* 5 - 7 unconnected */ 457 }; 458 459 i2c-mux@75 { 460 compatible = "nxp,pca9548"; /* u135 */ 461 #address-cells = <1>; 462 #size-cells = <0>; 463 reg = <0x75>; 464 465 i2c@0 { 466 #address-cells = <1>; 467 #size-cells = <0>; 468 reg = <0>; 469 /* HPC0_IIC */ 470 }; 471 i2c@1 { 472 #address-cells = <1>; 473 #size-cells = <0>; 474 reg = <1>; 475 /* HPC1_IIC */ 476 }; 477 i2c@2 { 478 #address-cells = <1>; 479 #size-cells = <0>; 480 reg = <2>; 481 /* SYSMON */ 482 }; 483 i2c@3 { 484 #address-cells = <1>; 485 #size-cells = <0>; 486 reg = <3>; 487 /* DDR4 SODIMM */ 488 dev@19 { 489 reg = <0x19>; 490 }; 491 dev@30 { 492 reg = <0x30>; 493 }; 494 dev@35 { 495 reg = <0x35>; 496 }; 497 dev@36 { 498 reg = <0x36>; 499 }; 500 dev@51 { 501 reg = <0x51>; 502 }; 503 }; 504 i2c@4 { 505 #address-cells = <1>; 506 #size-cells = <0>; 507 reg = <4>; 508 /* SEP 3 */ 509 }; 510 i2c@5 { 511 #address-cells = <1>; 512 #size-cells = <0>; 513 reg = <5>; 514 /* SEP 2 */ 515 }; 516 i2c@6 { 517 #address-cells = <1>; 518 #size-cells = <0>; 519 reg = <6>; 520 /* SEP 1 */ 521 }; 522 i2c@7 { 523 #address-cells = <1>; 524 #size-cells = <0>; 525 reg = <7>; 526 /* SEP 0 */ 527 }; 528 }; 529}; 530 531&pcie { 532 status = "okay"; 533}; 534 535&qspi { 536 status = "okay"; 537 is-dual = <1>; 538 flash@0 { 539 compatible = "m25p80", "spi-flash"; /* 32MB */ 540 #address-cells = <1>; 541 #size-cells = <1>; 542 reg = <0x0>; 543 spi-tx-bus-width = <1>; 544 spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */ 545 spi-max-frequency = <108000000>; /* Based on DC1 spec */ 546 partition@qspi-fsbl-uboot { /* for testing purpose */ 547 label = "qspi-fsbl-uboot"; 548 reg = <0x0 0x100000>; 549 }; 550 partition@qspi-linux { /* for testing purpose */ 551 label = "qspi-linux"; 552 reg = <0x100000 0x500000>; 553 }; 554 partition@qspi-device-tree { /* for testing purpose */ 555 label = "qspi-device-tree"; 556 reg = <0x600000 0x20000>; 557 }; 558 partition@qspi-rootfs { /* for testing purpose */ 559 label = "qspi-rootfs"; 560 reg = <0x620000 0x5E0000>; 561 }; 562 }; 563}; 564 565&rtc { 566 status = "okay"; 567}; 568 569&sata { 570 status = "okay"; 571 /* SATA OOB timing settings */ 572 ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>; 573 ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>; 574 ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>; 575 ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>; 576 ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>; 577 ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>; 578 ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>; 579 ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>; 580 phy-names = "sata-phy"; 581 phys = <&lane3 PHY_TYPE_SATA 1 1 125000000>; 582}; 583 584/* SD1 with level shifter */ 585&sdhci1 { 586 status = "okay"; 587 no-1-8-v; /* for 1.0 silicon */ 588 xlnx,mio_bank = <1>; 589}; 590 591&serdes { 592 status = "okay"; 593}; 594 595&uart0 { 596 status = "okay"; 597}; 598 599&uart1 { 600 status = "okay"; 601}; 602 603/* ULPI SMSC USB3320 */ 604&usb0 { 605 status = "okay"; 606}; 607 608&dwc3_0 { 609 status = "okay"; 610 dr_mode = "host"; 611 snps,usb3_lpm_capable; 612 phy-names = "usb3-phy"; 613 phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>; 614 maximum-speed = "super-speed"; 615}; 616 617&watchdog0 { 618 status = "okay"; 619}; 620 621&xilinx_ams { 622 status = "okay"; 623}; 624 625&ams_ps { 626 status = "okay"; 627}; 628 629&ams_pl { 630 status = "okay"; 631}; 632 633&xilinx_drm { 634 status = "okay"; 635 clocks = <&si570_1>; 636}; 637 638&xlnx_dp { 639 status = "okay"; 640}; 641 642&xlnx_dp_sub { 643 status = "okay"; 644 xlnx,vid-clk-pl; 645}; 646 647&xlnx_dp_snd_pcm0 { 648 status = "okay"; 649}; 650 651&xlnx_dp_snd_pcm1 { 652 status = "okay"; 653}; 654 655&xlnx_dp_snd_card { 656 status = "okay"; 657}; 658 659&xlnx_dp_snd_codec0 { 660 status = "okay"; 661}; 662 663&xlnx_dpdma { 664 status = "okay"; 665}; 666