2 * dts file for Xilinx ZynqMP
4 * (C) Copyright 2014 - 2015, Xilinx, Inc.
6 * Michal Simek <michal.simek@xilinx.com>
8 * SPDX-License-Identifier: GPL-2.0+
11 compatible = "xlnx,zynqmp";
20 compatible = "arm,cortex-a53", "arm,armv8";
22 enable-method = "psci";
27 compatible = "arm,cortex-a53", "arm,armv8";
29 enable-method = "psci";
34 compatible = "arm,cortex-a53", "arm,armv8";
36 enable-method = "psci";
41 compatible = "arm,cortex-a53", "arm,armv8";
43 enable-method = "psci";
49 compatible = "xlnx,zynqmp-genpd";
52 #power-domain-cells = <0x0>;
57 #power-domain-cells = <0x0>;
62 #power-domain-cells = <0x0>;
67 #power-domain-cells = <0x0>;
72 #power-domain-cells = <0x0>;
77 #power-domain-cells = <0x0>;
82 #power-domain-cells = <0x0>;
87 #power-domain-cells = <0x0>;
92 #power-domain-cells = <0x0>;
97 #power-domain-cells = <0x0>;
102 #power-domain-cells = <0x0>;
107 #power-domain-cells = <0x0>;
112 #power-domain-cells = <0x0>;
117 /* fixme: what to attach to */
118 #power-domain-cells = <0x0>;
123 #power-domain-cells = <0x0>;
128 #power-domain-cells = <0x0>;
133 #power-domain-cells = <0x0>;
138 #power-domain-cells = <0x0>;
143 #power-domain-cells = <0x0>;
148 #power-domain-cells = <0x0>;
153 #power-domain-cells = <0x0>;
158 #power-domain-cells = <0x0>;
163 #power-domain-cells = <0x0>;
168 #power-domain-cells = <0x0>;
173 #power-domain-cells = <0x0>;
178 #power-domain-cells = <0x0>;
183 #power-domain-cells = <0x0>;
188 #power-domain-cells = <0x0>;
193 #power-domain-cells = <0x0>;
198 #power-domain-cells = <0x0>;
203 #power-domain-cells = <0x0>;
208 #power-domain-cells = <0x0>;
213 #power-domain-cells = <0x0>;
219 compatible = "arm,armv8-pmuv3";
220 interrupt-parent = <&gic>;
221 interrupts = <0 143 4>,
228 compatible = "arm,psci-0.2";
233 compatible = "xlnx,zynqmp-pm";
238 compatible = "arm,armv8-timer";
239 interrupt-parent = <&gic>;
240 interrupts = <1 13 0xf01>,
247 compatible = "simple-bus";
248 #address-cells = <2>;
250 ranges = <0 0 0 0 0xffffffff>;
252 gic: interrupt-controller@f9010000 {
253 compatible = "arm,gic-400", "arm,cortex-a15-gic";
254 #interrupt-cells = <3>;
255 reg = <0x0 0xf9010000 0x10000>,
256 <0x0 0xf9020000 0x20000>,
257 <0x0 0xf9040000 0x20000>,
258 <0x0 0xf9060000 0x20000>;
259 interrupt-controller;
260 interrupt-parent = <&gic>;
261 interrupts = <1 9 0xf04>;
266 compatible = "simple-bus";
268 #address-cells = <2>;
270 ranges = <0 0 0 0 0xffffffff>;
273 compatible = "xlnx,zynq-can-1.0";
275 clock-names = "can_clk", "pclk";
276 reg = <0x0 0xff060000 0x1000>;
277 interrupts = <0 23 4>;
278 interrupt-parent = <&gic>;
279 tx-fifo-depth = <0x40>;
280 rx-fifo-depth = <0x40>;
281 power-domains = <&pd_can0>;
285 compatible = "xlnx,zynq-can-1.0";
287 clock-names = "can_clk", "pclk";
288 reg = <0x0 0xff070000 0x1000>;
289 interrupts = <0 24 4>;
290 interrupt-parent = <&gic>;
291 tx-fifo-depth = <0x40>;
292 rx-fifo-depth = <0x40>;
293 power-domains = <&pd_can1>;
297 compatible = "arm,cci-400";
298 reg = <0x0 0xfd6e0000 0x9000>;
299 ranges = <0x0 0x0 0xfd6e0000 0x10000>;
300 #address-cells = <1>;
304 compatible = "arm,cci-400-pmu,r1";
305 reg = <0x9000 0x5000>;
306 interrupt-parent = <&gic>;
307 interrupts = <0 123 4>,
316 fpd_dma_chan1: dma@fd500000 {
318 compatible = "xlnx,zynqmp-dma-1.0";
319 reg = <0x0 0xfd500000 0x1000>;
320 interrupt-parent = <&gic>;
321 interrupts = <0 124 4>;
322 clock-names = "clk_main", "clk_apb";
324 xlnx,bus-width = <128>;
325 power-domains = <&pd_gdma>;
328 fpd_dma_chan2: dma@fd510000 {
330 compatible = "xlnx,zynqmp-dma-1.0";
331 reg = <0x0 0xfd510000 0x1000>;
332 interrupt-parent = <&gic>;
333 interrupts = <0 125 4>;
334 clock-names = "clk_main", "clk_apb";
336 xlnx,bus-width = <128>;
337 power-domains = <&pd_gdma>;
340 fpd_dma_chan3: dma@fd520000 {
342 compatible = "xlnx,zynqmp-dma-1.0";
343 reg = <0x0 0xfd520000 0x1000>;
344 interrupt-parent = <&gic>;
345 interrupts = <0 126 4>;
346 clock-names = "clk_main", "clk_apb";
348 xlnx,bus-width = <128>;
349 power-domains = <&pd_gdma>;
352 fpd_dma_chan4: dma@fd530000 {
354 compatible = "xlnx,zynqmp-dma-1.0";
355 reg = <0x0 0xfd530000 0x1000>;
356 interrupt-parent = <&gic>;
357 interrupts = <0 127 4>;
358 clock-names = "clk_main", "clk_apb";
360 xlnx,bus-width = <128>;
361 power-domains = <&pd_gdma>;
364 fpd_dma_chan5: dma@fd540000 {
366 compatible = "xlnx,zynqmp-dma-1.0";
367 reg = <0x0 0xfd540000 0x1000>;
368 interrupt-parent = <&gic>;
369 interrupts = <0 128 4>;
370 clock-names = "clk_main", "clk_apb";
372 xlnx,bus-width = <128>;
373 power-domains = <&pd_gdma>;
376 fpd_dma_chan6: dma@fd550000 {
378 compatible = "xlnx,zynqmp-dma-1.0";
379 reg = <0x0 0xfd550000 0x1000>;
380 interrupt-parent = <&gic>;
381 interrupts = <0 129 4>;
382 clock-names = "clk_main", "clk_apb";
384 xlnx,bus-width = <128>;
385 power-domains = <&pd_gdma>;
388 fpd_dma_chan7: dma@fd560000 {
390 compatible = "xlnx,zynqmp-dma-1.0";
391 reg = <0x0 0xfd560000 0x1000>;
392 interrupt-parent = <&gic>;
393 interrupts = <0 130 4>;
394 clock-names = "clk_main", "clk_apb";
396 xlnx,bus-width = <128>;
397 power-domains = <&pd_gdma>;
400 fpd_dma_chan8: dma@fd570000 {
402 compatible = "xlnx,zynqmp-dma-1.0";
403 reg = <0x0 0xfd570000 0x1000>;
404 interrupt-parent = <&gic>;
405 interrupts = <0 131 4>;
406 clock-names = "clk_main", "clk_apb";
408 xlnx,bus-width = <128>;
409 power-domains = <&pd_gdma>;
414 compatible = "arm,mali-400", "arm,mali-utgard";
415 reg = <0x0 0xfd4b0000 0x30000>;
416 interrupt-parent = <&gic>;
417 interrupts = <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>;
418 interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1";
422 lpd_dma_chan1: dma@ffa80000 {
424 compatible = "xlnx,zynqmp-dma-1.0";
425 reg = <0x0 0xffa80000 0x1000>;
426 interrupt-parent = <&gic>;
427 interrupts = <0 77 4>;
429 xlnx,bus-width = <64>;
430 power-domains = <&pd_adma>;
433 lpd_dma_chan2: dma@ffa90000 {
435 compatible = "xlnx,zynqmp-dma-1.0";
436 reg = <0x0 0xffa90000 0x1000>;
437 interrupt-parent = <&gic>;
438 interrupts = <0 78 4>;
440 xlnx,bus-width = <64>;
441 power-domains = <&pd_adma>;
444 lpd_dma_chan3: dma@ffaa0000 {
446 compatible = "xlnx,zynqmp-dma-1.0";
447 reg = <0x0 0xffaa0000 0x1000>;
448 interrupt-parent = <&gic>;
449 interrupts = <0 79 4>;
451 xlnx,bus-width = <64>;
452 power-domains = <&pd_adma>;
455 lpd_dma_chan4: dma@ffab0000 {
457 compatible = "xlnx,zynqmp-dma-1.0";
458 reg = <0x0 0xffab0000 0x1000>;
459 interrupt-parent = <&gic>;
460 interrupts = <0 80 4>;
462 xlnx,bus-width = <64>;
463 power-domains = <&pd_adma>;
466 lpd_dma_chan5: dma@ffac0000 {
468 compatible = "xlnx,zynqmp-dma-1.0";
469 reg = <0x0 0xffac0000 0x1000>;
470 interrupt-parent = <&gic>;
471 interrupts = <0 81 4>;
473 xlnx,bus-width = <64>;
474 power-domains = <&pd_adma>;
477 lpd_dma_chan6: dma@ffad0000 {
479 compatible = "xlnx,zynqmp-dma-1.0";
480 reg = <0x0 0xffad0000 0x1000>;
481 interrupt-parent = <&gic>;
482 interrupts = <0 82 4>;
484 xlnx,bus-width = <64>;
485 power-domains = <&pd_adma>;
488 lpd_dma_chan7: dma@ffae0000 {
490 compatible = "xlnx,zynqmp-dma-1.0";
491 reg = <0x0 0xffae0000 0x1000>;
492 interrupt-parent = <&gic>;
493 interrupts = <0 83 4>;
495 xlnx,bus-width = <64>;
496 power-domains = <&pd_adma>;
499 lpd_dma_chan8: dma@ffaf0000 {
501 compatible = "xlnx,zynqmp-dma-1.0";
502 reg = <0x0 0xffaf0000 0x1000>;
503 interrupt-parent = <&gic>;
504 interrupts = <0 84 4>;
506 xlnx,bus-width = <64>;
507 power-domains = <&pd_adma>;
510 mc: memory-controller@fd070000 {
511 compatible = "xlnx,zynqmp-ddrc-2.40a";
512 reg = <0x0 0xfd070000 0x30000>;
513 interrupt-parent = <&gic>;
514 interrupts = <0 112 4>;
517 nand0: nand@ff100000 {
518 compatible = "arasan,nfc-v3p10";
520 reg = <0x0 0xff100000 0x1000>;
521 clock-names = "clk_sys", "clk_flash";
522 interrupt-parent = <&gic>;
523 interrupts = <0 14 4>;
524 #address-cells = <2>;
526 power-domains = <&pd_nand>;
529 gem0: ethernet@ff0b0000 {
530 compatible = "cdns,zynqmp-gem";
532 interrupt-parent = <&gic>;
533 interrupts = <0 57 4>, <0 57 4>;
534 reg = <0x0 0xff0b0000 0x1000>;
535 clock-names = "pclk", "hclk", "tx_clk";
536 #address-cells = <1>;
538 #stream-id-cells = <1>;
539 power-domains = <&pd_eth0>;
542 gem1: ethernet@ff0c0000 {
543 compatible = "cdns,zynqmp-gem";
545 interrupt-parent = <&gic>;
546 interrupts = <0 59 4>, <0 59 4>;
547 reg = <0x0 0xff0c0000 0x1000>;
548 clock-names = "pclk", "hclk", "tx_clk";
549 #address-cells = <1>;
551 #stream-id-cells = <1>;
552 power-domains = <&pd_eth1>;
555 gem2: ethernet@ff0d0000 {
556 compatible = "cdns,zynqmp-gem";
558 interrupt-parent = <&gic>;
559 interrupts = <0 61 4>, <0 61 4>;
560 reg = <0x0 0xff0d0000 0x1000>;
561 clock-names = "pclk", "hclk", "tx_clk";
562 #address-cells = <1>;
564 #stream-id-cells = <1>;
565 power-domains = <&pd_eth2>;
568 gem3: ethernet@ff0e0000 {
569 compatible = "cdns,zynqmp-gem";
571 interrupt-parent = <&gic>;
572 interrupts = <0 63 4>, <0 63 4>;
573 reg = <0x0 0xff0e0000 0x1000>;
574 clock-names = "pclk", "hclk", "tx_clk";
575 #address-cells = <1>;
577 #stream-id-cells = <1>;
578 power-domains = <&pd_eth3>;
581 gpio: gpio@ff0a0000 {
582 compatible = "xlnx,zynqmp-gpio-1.0";
585 #interrupt-cells = <2>;
586 interrupt-controller;
587 interrupt-parent = <&gic>;
588 interrupts = <0 16 4>;
589 reg = <0x0 0xff0a0000 0x1000>;
590 power-domains = <&pd_gpio>;
594 compatible = "cdns,i2c-r1p10";
596 interrupt-parent = <&gic>;
597 interrupts = <0 17 4>;
598 reg = <0x0 0xff020000 0x1000>;
599 #address-cells = <1>;
601 power-domains = <&pd_i2c0>;
605 compatible = "cdns,i2c-r1p10";
607 interrupt-parent = <&gic>;
608 interrupts = <0 18 4>;
609 reg = <0x0 0xff030000 0x1000>;
610 #address-cells = <1>;
612 power-domains = <&pd_i2c1>;
615 pcie: pcie@fd0e0000 {
616 compatible = "xlnx,nwl-pcie-2.11";
618 #address-cells = <3>;
620 #interrupt-cells = <1>;
622 interrupt-parent = <&gic>;
623 interrupts = <0 118 4>,
625 <0 115 4>, /* MSI_1 [63...32] */
626 <0 114 4>; /* MSI_0 [31...0] */
627 interrupt-names = "misc", "intx", "msi_1", "msi_0";
628 reg = <0x0 0xfd0e0000 0x1000>,
629 <0x0 0xfd480000 0x1000>,
630 <0x0 0xe0000000 0x1000000>;
631 reg-names = "breg", "pcireg", "cfg";
632 ranges = <0x02000000 0x00000000 0xe1000000 0x00000000 0xe1000000 0 0x0f000000>;
633 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
634 interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>,
635 <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
636 <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
637 <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
638 pcie_intc: legacy-interrupt-controller {
639 interrupt-controller;
640 #address-cells = <0>;
641 #interrupt-cells = <1>;
646 compatible = "xlnx,zynqmp-qspi-1.0";
648 clock-names = "ref_clk", "pclk";
649 interrupts = <0 15 4>;
650 interrupt-parent = <&gic>;
652 reg = <0x0 0xff0f0000 0x1000>,
653 <0x0 0xc0000000 0x8000000>;
654 #address-cells = <1>;
656 power-domains = <&pd_qspi>;
660 compatible = "xlnx,zynqmp-rtc";
662 reg = <0x0 0xffa60000 0x100>;
663 interrupt-parent = <&gic>;
664 interrupts = <0 26 4>, <0 27 4>;
665 interrupt-names = "alarm", "sec";
668 sata: ahci@fd0c0000 {
669 compatible = "ceva,ahci-1v84";
671 reg = <0x0 0xfd0c0000 0x2000>;
672 interrupt-parent = <&gic>;
673 interrupts = <0 133 4>;
674 power-domains = <&pd_sata>;
677 sdhci0: sdhci@ff160000 {
679 compatible = "arasan,sdhci-8.9a";
681 interrupt-parent = <&gic>;
682 interrupts = <0 48 4>;
683 reg = <0x0 0xff160000 0x1000>;
684 clock-names = "clk_xin", "clk_ahb";
686 power-domains = <&pd_sd0>;
689 sdhci1: sdhci@ff170000 {
691 compatible = "arasan,sdhci-8.9a";
693 interrupt-parent = <&gic>;
694 interrupts = <0 49 4>;
695 reg = <0x0 0xff170000 0x1000>;
696 clock-names = "clk_xin", "clk_ahb";
698 power-domains = <&pd_sd1>;
701 smmu: smmu@fd800000 {
702 compatible = "arm,mmu-500";
703 reg = <0x0 0xfd800000 0x20000>;
704 #global-interrupts = <1>;
705 interrupt-parent = <&gic>;
706 interrupts = <0 155 4>,
707 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
708 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
709 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
710 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>;
711 mmu-masters = < &gem0 0x874
718 compatible = "cdns,spi-r1p6";
720 interrupt-parent = <&gic>;
721 interrupts = <0 19 4>;
722 reg = <0x0 0xff040000 0x1000>;
723 clock-names = "ref_clk", "pclk";
724 #address-cells = <1>;
726 power-domains = <&pd_spi0>;
730 compatible = "cdns,spi-r1p6";
732 interrupt-parent = <&gic>;
733 interrupts = <0 20 4>;
734 reg = <0x0 0xff050000 0x1000>;
735 clock-names = "ref_clk", "pclk";
736 #address-cells = <1>;
738 power-domains = <&pd_spi1>;
741 ttc0: timer@ff110000 {
742 compatible = "cdns,ttc";
744 interrupt-parent = <&gic>;
745 interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
746 reg = <0x0 0xff110000 0x1000>;
748 power-domains = <&pd_ttc0>;
751 ttc1: timer@ff120000 {
752 compatible = "cdns,ttc";
754 interrupt-parent = <&gic>;
755 interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
756 reg = <0x0 0xff120000 0x1000>;
758 power-domains = <&pd_ttc1>;
761 ttc2: timer@ff130000 {
762 compatible = "cdns,ttc";
764 interrupt-parent = <&gic>;
765 interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
766 reg = <0x0 0xff130000 0x1000>;
768 power-domains = <&pd_ttc2>;
771 ttc3: timer@ff140000 {
772 compatible = "cdns,ttc";
774 interrupt-parent = <&gic>;
775 interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
776 reg = <0x0 0xff140000 0x1000>;
778 power-domains = <&pd_ttc3>;
781 uart0: serial@ff000000 {
783 compatible = "cdns,uart-r1p12", "xlnx,xuartps";
785 interrupt-parent = <&gic>;
786 interrupts = <0 21 4>;
787 reg = <0x0 0xff000000 0x1000>;
788 clock-names = "uart_clk", "pclk";
789 power-domains = <&pd_uart0>;
792 uart1: serial@ff010000 {
794 compatible = "cdns,uart-r1p12", "xlnx,xuartps";
796 interrupt-parent = <&gic>;
797 interrupts = <0 22 4>;
798 reg = <0x0 0xff010000 0x1000>;
799 clock-names = "uart_clk", "pclk";
800 power-domains = <&pd_uart1>;
804 #address-cells = <2>;
807 compatible = "xlnx,zynqmp-dwc3";
808 clock-names = "bus_clk", "ref_clk";
809 clocks = <&clk125>, <&clk125>;
810 power-domains = <&pd_usb0>;
813 dwc3_0: dwc3@fe200000 {
814 compatible = "snps,dwc3";
816 reg = <0x0 0xfe200000 0x40000>;
817 interrupt-parent = <&gic>;
818 interrupts = <0 65 4>;
819 /* snps,quirk-frame-length-adjustment = <0x20>; */
825 #address-cells = <2>;
828 compatible = "xlnx,zynqmp-dwc3";
829 clock-names = "bus_clk", "ref_clk";
830 clocks = <&clk125>, <&clk125>;
831 power-domains = <&pd_usb1>;
834 dwc3_1: dwc3@fe300000 {
835 compatible = "snps,dwc3";
837 reg = <0x0 0xfe300000 0x40000>;
838 interrupt-parent = <&gic>;
839 interrupts = <0 70 4>;
840 /* snps,quirk-frame-length-adjustment = <0x20>; */
845 watchdog0: watchdog@fd4d0000 {
846 compatible = "cdns,wdt-r1p2";
848 interrupt-parent = <&gic>;
849 interrupts = <0 113 1>;
850 reg = <0x0 0xfd4d0000 0x1000>;
854 xilinx_drm: xilinx_drm {
855 compatible = "xlnx,drm";
857 xlnx,encoder-slave = <&xlnx_dp>;
858 xlnx,connector-type = "DisplayPort";
859 xlnx,dp-sub = <&xlnx_dp_sub>;
861 xlnx,pixel-format = "rgb565";
863 dmas = <&xlnx_dpdma 3>;
867 dmas = <&xlnx_dpdma 0>;
873 xlnx_dp: dp@fd4a0000 {
874 compatible = "xlnx,v-dp";
876 reg = <0x0 0xfd4a0000 0x1000>,
877 <0x0 0xfd400000 0x20000>;
878 interrupts = <0 119 4>;
879 interrupt-parent = <&gic>;
880 clock-names = "aclk", "aud_clk";
881 xlnx,dp-version = "v1.2";
882 xlnx,max-lanes = <2>;
883 xlnx,max-link-rate = <540000>;
886 xlnx,colormetry = "rgb";
888 xlnx,audio-chan = <2>;
889 xlnx,dp-sub = <&xlnx_dp_sub>;
890 xlnx,max-pclock-frequency = <300000>;
893 xlnx_dp_snd_card: dp_snd_card {
894 compatible = "xlnx,dp-snd-card";
896 xlnx,dp-snd-pcm = <&xlnx_dp_snd_pcm0>, <&xlnx_dp_snd_pcm1>;
897 xlnx,dp-snd-codec = <&xlnx_dp_snd_codec0>;
900 xlnx_dp_snd_codec0: dp_snd_codec0 {
901 compatible = "xlnx,dp-snd-codec";
903 clock-names = "aud_clk";
906 xlnx_dp_snd_pcm0: dp_snd_pcm0 {
907 compatible = "xlnx,dp-snd-pcm";
909 dmas = <&xlnx_dpdma 4>;
913 xlnx_dp_snd_pcm1: dp_snd_pcm1 {
914 compatible = "xlnx,dp-snd-pcm";
916 dmas = <&xlnx_dpdma 5>;
920 xlnx_dp_sub: dp_sub@fd4aa000 {
921 compatible = "xlnx,dp-sub";
923 reg = <0x0 0xfd4aa000 0x1000>,
924 <0x0 0xfd4ab000 0x1000>,
925 <0x0 0xfd4ac000 0x1000>;
926 reg-names = "blend", "av_buf", "aud";
927 xlnx,output-fmt = "rgb";
928 xlnx,vid-fmt = "yuyv";
929 xlnx,gfx-fmt = "rgb565";
932 xlnx_dpdma: dma@fd4c0000 {
933 compatible = "xlnx,dpdma";
935 reg = <0x0 0xfd4c0000 0x1000>;
936 interrupts = <0 122 4>;
937 interrupt-parent = <&gic>;
938 clock-names = "axi_clk";
941 dma-video0channel@fd4c0000 {
942 compatible = "xlnx,video0";
944 dma-video1channel@fd4c0000 {
945 compatible = "xlnx,video1";
947 dma-video2channel@fd4c0000 {
948 compatible = "xlnx,video2";
950 dma-graphicschannel@fd4c0000 {
951 compatible = "xlnx,graphics";
953 dma-audio0channel@fd4c0000 {
954 compatible = "xlnx,audio0";
956 dma-audio1channel@fd4c0000 {
957 compatible = "xlnx,audio1";