]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
arm64: zynqmp: Add DTs for xilinx platforms
authorMichal Simek <michal.simek@xilinx.com>
Tue, 19 Sep 2017 08:33:24 +0000 (10:33 +0200)
committerMichal Simek <monstr@monstr.eu>
Tue, 3 Oct 2017 15:26:45 +0000 (17:26 +0200)
Add device tree descriptions for Xilinx boards.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
21 files changed:
arch/arm64/boot/dts/xilinx/Makefile
arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-clk.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-ep108-clk.dtsi
arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1232-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm015-dc1.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm017-dc3.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm018-dc4.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm019-dc5.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revB-loopback.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revB.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.0.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revB.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp.dtsi

index ae16427f6a4a3097945f80e5e32d6f9289517656..87aff7c6efa00d0637d775197a31e5023ba90c95 100644 (file)
@@ -1,4 +1,19 @@
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-ep108.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zc1232-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zc1751-xm015-dc1.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zc1751-xm016-dc2.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zc1751-xm017-dc3.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zc1751-xm018-dc4.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zc1751-xm019-dc5.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu100-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu100-revB.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu100-revB-loopback.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu100-revC.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-revB.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-rev1.0.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu106-revA.dtb
 
 always         := $(dtb-y)
 subdir-y       := $(dts-dirs)
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi
new file mode 100644 (file)
index 0000000..d8d0be1
--- /dev/null
@@ -0,0 +1,293 @@
+/*
+ * Clock specification for Xilinx ZynqMP
+ *
+ * (C) Copyright 2017, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/ {
+       fclk0: fclk0 {
+               status = "disabled";
+               compatible = "xlnx,fclk";
+               clocks = <&clkc 71>;
+       };
+
+       fclk1: fclk1 {
+               status = "disabled";
+               compatible = "xlnx,fclk";
+               clocks = <&clkc 72>;
+       };
+
+       fclk2: fclk2 {
+               status = "disabled";
+               compatible = "xlnx,fclk";
+               clocks = <&clkc 73>;
+       };
+
+       fclk3: fclk3 {
+               status = "disabled";
+               compatible = "xlnx,fclk";
+               clocks = <&clkc 74>;
+       };
+
+       pss_ref_clk: pss_ref_clk {
+               u-boot,dm-pre-reloc;
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <33333333>;
+       };
+
+       video_clk: video_clk {
+               u-boot,dm-pre-reloc;
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
+
+       pss_alt_ref_clk: pss_alt_ref_clk {
+               u-boot,dm-pre-reloc;
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       gt_crx_ref_clk: gt_crx_ref_clk {
+               u-boot,dm-pre-reloc;
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <108000000>;
+       };
+
+       aux_ref_clk: aux_ref_clk {
+               u-boot,dm-pre-reloc;
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
+
+       clkc: clkc {
+               u-boot,dm-pre-reloc;
+               #clock-cells = <1>;
+               compatible = "xlnx,zynqmp-clkc";
+               clocks = <&pss_ref_clk>, <&video_clk>, <&pss_alt_ref_clk>, <&aux_ref_clk>, <&gt_crx_ref_clk>;
+               clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk", "aux_ref_clk", "gt_crx_ref_clk";
+               clock-output-names = "iopll", "rpll", "apll", "dpll",
+                               "vpll", "iopll_to_fpd", "rpll_to_fpd",
+                               "apll_to_lpd", "dpll_to_lpd", "vpll_to_lpd",
+                               "acpu", "acpu_half", "dbf_fpd", "dbf_lpd",
+                               "dbg_trace", "dbg_tstmp", "dp_video_ref",
+                               "dp_audio_ref", "dp_stc_ref", "gdma_ref",
+                               "dpdma_ref", "ddr_ref", "sata_ref", "pcie_ref",
+                               "gpu_ref", "gpu_pp0_ref", "gpu_pp1_ref",
+                               "topsw_main", "topsw_lsbus", "gtgref0_ref",
+                               "lpd_switch", "lpd_lsbus", "usb0_bus_ref",
+                               "usb1_bus_ref", "usb3_dual_ref", "usb0",
+                               "usb1", "cpu_r5", "cpu_r5_core", "csu_spb",
+                               "csu_pll", "pcap", "iou_switch", "gem_tsu_ref",
+                               "gem_tsu", "gem0_ref", "gem1_ref", "gem2_ref",
+                               "gem3_ref", "gem0_tx", "gem1_tx", "gem2_tx",
+                               "gem3_tx", "qspi_ref", "sdio0_ref", "sdio1_ref",
+                               "uart0_ref", "uart1_ref", "spi0_ref",
+                               "spi1_ref", "nand_ref", "i2c0_ref", "i2c1_ref",
+                               "can0_ref", "can1_ref", "can0", "can1",
+                               "dll_ref", "adma_ref", "timestamp_ref",
+                               "ams_ref", "pl0", "pl1", "pl2", "pl3", "wdt";
+       };
+
+       dp_aclk: dp_aclk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+               clock-accuracy = <100>;
+       };
+};
+
+&can0 {
+       clocks = <&clkc 63>, <&clkc 31>;
+};
+
+&can1 {
+       clocks = <&clkc 64>, <&clkc 31>;
+};
+
+&cpu0 {
+       clocks = <&clkc 10>;
+};
+
+&fpd_dma_chan1 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan2 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan3 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan4 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan5 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan6 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan7 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&fpd_dma_chan8 {
+       clocks = <&clkc 19>, <&clkc 31>;
+};
+
+&gpu {
+       clocks = <&clkc 24>, <&clkc 25>, <&clkc 26>;
+};
+
+&lpd_dma_chan1 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan2 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan3 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan4 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan5 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan6 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan7 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&lpd_dma_chan8 {
+       clocks = <&clkc 68>, <&clkc 31>;
+};
+
+&nand0 {
+       clocks = <&clkc 60>, <&clkc 31>;
+};
+
+&gem0 {
+       clocks = <&clkc 45>, <&clkc 45>, <&clkc 49>;
+       clock-names = "pclk", "tx_clk", "hclk";
+};
+
+&gem1 {
+       clocks = <&clkc 46>, <&clkc 46>, <&clkc 50>;
+       clock-names = "pclk", "tx_clk", "hclk";
+};
+
+&gem2 {
+       clocks = <&clkc 47>, <&clkc 47>, <&clkc 51>;
+       clock-names = "pclk", "tx_clk", "hclk";
+};
+
+&gem3 {
+       clocks = <&clkc 31>, <&clkc 52>, <&clkc 48>, <&clkc 52>;
+       clock-names = "pclk", "hclk", "tx_clk", "rx_clk";
+};
+
+&gpio {
+       clocks = <&clkc 31>;
+};
+
+&i2c0 {
+       clocks = <&clkc 61>;
+};
+
+&i2c1 {
+       clocks = <&clkc 62>;
+};
+
+&pcie {
+       clocks = <&clkc 23>;
+};
+
+&qspi {
+       clocks = <&clkc 53>, <&clkc 31>;
+};
+
+&sata {
+       clocks = <&clkc 22>;
+};
+
+&sdhci0 {
+       clocks = <&clkc 54>, <&clkc 31>;
+};
+
+&sdhci1 {
+       clocks = <&clkc 55>, <&clkc 31>;
+};
+
+&spi0 {
+       clocks = <&clkc 58>, <&clkc 31>;
+};
+
+&spi1 {
+       clocks = <&clkc 59>, <&clkc 31>;
+};
+
+&uart0 {
+       clocks = <&clkc 56>,  <&clkc 31>;
+};
+
+&uart1 {
+       clocks = <&clkc 57>,  <&clkc 31>;
+};
+
+&usb0 {
+       clocks = <&clkc 32>,  <&clkc 34>;
+};
+
+&usb1 {
+       clocks = <&clkc 33>,  <&clkc 34>;
+};
+
+&watchdog0 {
+       clocks = <&clkc 75>;
+};
+
+&xilinx_ams {
+       clocks = <&clkc 70>;
+};
+
+&xilinx_drm {
+       clocks = <&clkc 16>;
+};
+
+&xlnx_dp {
+       clocks = <&dp_aclk>, <&clkc 17>;
+};
+
+&xlnx_dpdma {
+       clocks = <&clkc 20>;
+};
+
+&xlnx_dp_snd_codec0 {
+       clocks = <&clkc 17>;
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-clk.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp-clk.dtsi
new file mode 100644 (file)
index 0000000..e2a39a9
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+ * Clock specification for Xilinx ZynqMP
+ *
+ * (C) Copyright 2015, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/ {
+       clk100: clk100 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+               u-boot,dm-pre-reloc;
+       };
+
+       clk125: clk125 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
+
+       clk200: clk200 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+       };
+
+       clk250: clk250 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <250000000>;
+       };
+
+       clk300: clk300 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <300000000>;
+       };
+
+       clk600: clk600 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <600000000>;
+       };
+
+       dp_aclk: clock0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+               clock-accuracy = <100>;
+       };
+
+       dp_aud_clk: clock1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+               clock-accuracy = <100>;
+       };
+
+       dpdma_clk: dpdma_clk {
+               compatible = "fixed-clock";
+               #clock-cells = <0x0>;
+               clock-frequency = <533000000>;
+       };
+
+       drm_clock: drm_clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0x0>;
+               clock-frequency = <262750000>;
+               clock-accuracy = <0x64>;
+       };
+};
+
+&can0 {
+       clocks = <&clk100 &clk100>;
+};
+
+&can1 {
+       clocks = <&clk100 &clk100>;
+};
+
+&fpd_dma_chan1 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan2 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan3 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan4 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan5 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan6 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan7 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan8 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan1 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan2 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan3 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan4 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan5 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan6 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan7 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&lpd_dma_chan8 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&nand0 {
+       clocks = <&clk100 &clk100>;
+};
+
+&gem0 {
+       clocks = <&clk125>, <&clk125>, <&clk125>;
+};
+
+&gem1 {
+       clocks = <&clk125>, <&clk125>, <&clk125>;
+};
+
+&gem2 {
+       clocks = <&clk125>, <&clk125>, <&clk125>;
+};
+
+&gem3 {
+       clocks = <&clk125>, <&clk125>, <&clk125>;
+};
+
+&gpio {
+       clocks = <&clk100>;
+};
+
+&i2c0 {
+       clocks = <&clk100>;
+};
+
+&i2c1 {
+       clocks = <&clk100>;
+};
+
+&qspi {
+       clocks = <&clk300 &clk300>;
+};
+
+&sata {
+       clocks = <&clk250>;
+};
+
+&sdhci0 {
+       clocks = <&clk200 &clk200>;
+};
+
+&sdhci1 {
+       clocks = <&clk200 &clk200>;
+};
+
+&spi0 {
+       clocks = <&clk200 &clk200>;
+};
+
+&spi1 {
+       clocks = <&clk200 &clk200>;
+};
+
+&uart0 {
+       clocks = <&clk100 &clk100>;
+};
+
+&uart1 {
+       clocks = <&clk100 &clk100>;
+};
+
+&usb0 {
+       clocks = <&clk250>, <&clk250>;
+};
+
+&usb1 {
+       clocks = <&clk250>, <&clk250>;
+};
+
+&watchdog0 {
+       clocks = <&clk250>;
+};
+
+&xilinx_drm {
+       clocks = <&drm_clock>;
+};
+
+&xlnx_dp {
+       clocks = <&dp_aclk>, <&dp_aud_clk>;
+};
+
+&xlnx_dpdma {
+       clocks = <&dpdma_clk>;
+};
+
+&xlnx_dp_snd_codec0 {
+       clocks = <&dp_aud_clk>;
+};
index cdc6a437dcc73d33c0aaedb28df523cda333891a..f68f3e0efbed9bb5c4f6d61fe4b7a576e4aca03c 100644 (file)
  * the License, or (at your option) any later version.
  */
 
-&amba {
+/ {
        misc_clk: misc_clk {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <25000000>;
+               u-boot,dm-pre-reloc;
        };
 
        i2c_clk: i2c_clk {
                #clock-cells = <0>;
                clock-frequency = <75000000>;
        };
+
+       dp_aclk: clock0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <50000000>;
+               clock-accuracy = <100>;
+       };
+
+       clk100: clk100 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+       };
+
+       clk600: clk600 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <600000000>;
+       };
+
+       dp_aud_clk: clock1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <22579200>;
+               clock-accuracy = <100>;
+       };
 };
 
 &can0 {
        clocks = <&misc_clk &misc_clk>;
 };
 
+&can1 {
+       clocks = <&misc_clk &misc_clk>;
+};
+
+&fpd_dma_chan1 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan2 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan3 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan4 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan5 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan6 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan7 {
+       clocks = <&clk600>, <&clk100>;
+};
+
+&fpd_dma_chan8 {
+       clocks = <&clk600>, <&clk100>;
+};
+
 &gem0 {
        clocks = <&misc_clk>, <&misc_clk>, <&misc_clk>;
 };
        clocks = <&i2c_clk>;
 };
 
+&nand0 {
+       clocks = <&misc_clk &misc_clk>;
+};
+
+&qspi {
+       clocks = <&misc_clk &misc_clk>;
+};
+
 &sata {
        clocks = <&sata_clk>;
 };
 &watchdog0 {
        clocks= <&misc_clk>;
 };
+
+&xilinx_drm {
+       clocks = <&misc_clk>;
+};
+
+&xlnx_dp {
+       clocks = <&dp_aclk>, <&dp_aud_clk>;
+};
+
+&xlnx_dp_snd_codec0 {
+       clocks = <&dp_aud_clk>;
+};
+
+&xlnx_dpdma {
+       clocks = <&misc_clk>;
+};
index 358089687a69b5946851ef7c5ac5c0a776d9d161..8f78b5e36ec663f11fcd23924e1eb0c3f08df4cd 100644 (file)
 
 /dts-v1/;
 
-/include/ "zynqmp.dtsi"
-/include/ "zynqmp-ep108-clk.dtsi"
+#include "zynqmp.dtsi"
+#include "zynqmp-ep108-clk.dtsi"
 
 / {
        model = "ZynqMP EP108";
 
        aliases {
+               ethernet0 = &gem0;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
                serial0 = &uart0;
+               spi0 = &qspi;
+               spi1 = &spi0;
+               spi2 = &spi1;
+               usb0 = &usb0;
+               usb1 = &usb1;
        };
 
        chosen {
+               bootargs = "earlycon";
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x40000000>;
        };
        status = "okay";
 };
 
+&can1 {
+       status = "okay";
+};
+
 &gem0 {
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
-       phy0: phy@0{
+       phy0: phy@0 {
                reg = <0>;
                max-speed = <100>;
        };
        };
 };
 
+&nand0 {
+       status = "okay";
+       arasan,has-mdma;
+
+       nand@0 {
+               reg = <0x0>;
+               #address-cells = <0x2>;
+               #size-cells = <0x1>;
+               partition@0 {   /* for testing purpose */
+                       label = "nand-fsbl-uboot";
+                       reg = <0x0 0x0 0x400000>;
+               };
+               partition@1 {   /* for testing purpose */
+                       label = "nand-linux";
+                       reg = <0x0 0x400000 0x1400000>;
+               };
+               partition@2 {   /* for testing purpose */
+                       label = "nand-device-tree";
+                       reg = <0x0 0x1800000 0x400000>;
+               };
+               partition@3 {   /* for testing purpose */
+                       label = "nand-rootfs";
+                       reg = <0x0 0x1c00000 0x1400000>;
+               };
+               partition@4 {   /* for testing purpose */
+                       label = "nand-bitstream";
+                       reg = <0x0 0x3000000 0x400000>;
+               };
+               partition@5 {   /* for testing purpose */
+                       label = "nand-misc";
+                       reg = <0x0 0x3400000 0xfcc00000>;
+               };
+       };
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <10000000>;
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
 &sata {
        status = "okay";
        ceva,broken-gen2;
+       /* SATA Phy OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x0F 0x25 0x18 0x29>;
+       ceva,p0-comwake-params = /bits/ 8 <0x04 0x0B 0x08 0x0F>;
+       ceva,p0-burst-params = /bits/ 8 <0x0A 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x0216 0x7F06>;
+       ceva,p1-cominit-params = /bits/ 8 <0x0F 0x25 0x18 0x29>;
+       ceva,p1-comwake-params = /bits/ 8 <0x04 0x0B 0x08 0x0F>;
+       ceva,p1-burst-params = /bits/ 8 <0x0A 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x0216 0x7F06>;
 };
 
 &sdhci0 {
        status = "okay";
+       bus-width = <8>;
+       xlnx,mio_bank = <2>;
 };
 
 &sdhci1 {
        status = "okay";
+       xlnx,mio_bank = <1>;
 };
 
 &spi0 {
                spi-max-frequency = <50000000>;
                reg = <0>;
 
-               spi0_flash0@00000000 {
+               spi0_flash0@0 {
                        label = "spi0_flash0";
                        reg = <0x0 0x100000>;
                };
                spi-max-frequency = <50000000>;
                reg = <0>;
 
-               spi1_flash0@00000000 {
+               spi1_flash0@0 {
                        label = "spi1_flash0";
                        reg = <0x0 0x100000>;
                };
 
 &usb0 {
        status = "okay";
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "peripheral";
        maximum-speed = "high-speed";
 };
 
 &usb1 {
        status = "okay";
+};
+
+&dwc3_1 {
+       status = "okay";
        dr_mode = "host";
        maximum-speed = "high-speed";
 };
 &watchdog0 {
        status = "okay";
 };
+
+&xlnx_dp {
+       xlnx,max-pclock-frequency = <200000>;
+};
+
+&xlnx_dpdma {
+       xlnx,axi-clock-freq = <200000000>;
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zc1232-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zc1232-revA.dts
new file mode 100644 (file)
index 0000000..fa78a3a
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * dts file for Xilinx ZynqMP ZC1232
+ *
+ * (C) Copyright 2017, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZC1232 RevA";
+       compatible = "xlnx,zynqmp-zc1232-revA", "xlnx,zynqmp-zc1232", "xlnx,zynqmp";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &dcc;
+               spi0 = &qspi;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+};
+
+&dcc {
+       status = "okay";
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80"; /* 32MB FIXME */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&lane0 PHY_TYPE_SATA 0 0 125000000>, <&lane1 PHY_TYPE_SATA 1 1 125000000>;
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm015-dc1.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm015-dc1.dts
new file mode 100644 (file)
index 0000000..13d91c2
--- /dev/null
@@ -0,0 +1,461 @@
+/*
+ * dts file for Xilinx ZynqMP zc1751-xm015-dc1
+ *
+ * (C) Copyright 2015, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+
+/ {
+       model = "ZynqMP zc1751-xm015-dc1 RevA";
+       compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem3;
+               gpio0 = &gpio;
+               i2c0 = &i2c1;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               spi0 = &qspi;
+               usb0 = &usb0;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&gem3 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy0: phy@0 {
+               reg = <0>;
+       };
+};
+
+&gpio {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 36 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 37 GPIO_ACTIVE_HIGH>;
+
+       eeprom@55 {
+               compatible = "at,24c64"; /* 24AA64 */
+               reg = <0x55>;
+       };
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80"; /* Micron MT25QU512ABB8ESF */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+       /* SATA phy OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x1B 0x4D 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x19 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x1B 0x4D 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x19 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&lane3 PHY_TYPE_SATA 1 3 150000000>;
+};
+
+/* eMMC */
+&sdhci0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
+       bus-width = <8>;
+       xlnx,mio_bank = <0>;
+};
+
+/* SD1 with level shifter */
+&sdhci1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <1>;
+};
+
+&serdes {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>;
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 0 27000000>,
+              <&lane0 PHY_TYPE_DP 1 1 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+       xlnx,vid-clk-pl;
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_9_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_9_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_36_grp", "gpio0_37_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_36_grp", "gpio0_37_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_8_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_8_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO34";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO35";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_0_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_0_cd_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio0_0_wp_grp";
+                       function = "sdio0_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio0_0_wp_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_0_cd_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio1_0_wp_grp";
+                       function = "sdio1_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio1_0_wp_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux {
+                       function = "gpio0";
+                       groups = "gpio0_38_grp";
+               };
+
+               conf {
+                       groups = "gpio0_38_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dts
new file mode 100644 (file)
index 0000000..e220d82
--- /dev/null
@@ -0,0 +1,559 @@
+/*
+ * dts file for Xilinx ZynqMP zc1751-xm016-dc2
+ *
+ * (C) Copyright 2015, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+
+/ {
+       model = "ZynqMP zc1751-xm016-dc2 RevA";
+       compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
+
+       aliases {
+               can0 = &can0;
+               can1 = &can1;
+               ethernet0 = &gem2;
+               gpio0 = &gpio;
+               i2c0 = &i2c0;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               usb0 = &usb1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+};
+
+&can0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can0_default>;
+};
+
+&can1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&gem2 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem2_default>;
+       phy0: phy@5 {
+               reg = <5>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,rxctrl-strap-worka;
+       };
+};
+
+&gpio {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
+
+       tca6416_u26: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /* IRQ not connected */
+       };
+
+       rtc@68 {
+               compatible = "dallas,ds1339";
+               reg = <0x68>;
+       };
+};
+
+&nand0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_nand0_default>;
+       arasan,has-mdma;
+
+       nand@0 {
+               reg = <0x0>;
+               #address-cells = <0x2>;
+               #size-cells = <0x1>;
+
+               partition@0 {   /* for testing purpose */
+                       label = "nand-fsbl-uboot";
+                       reg = <0x0 0x0 0x400000>;
+               };
+               partition@1 {   /* for testing purpose */
+                       label = "nand-linux";
+                       reg = <0x0 0x400000 0x1400000>;
+               };
+               partition@2 {   /* for testing purpose */
+                       label = "nand-device-tree";
+                       reg = <0x0 0x1800000 0x400000>;
+               };
+               partition@3 {   /* for testing purpose */
+                       label = "nand-rootfs";
+                       reg = <0x0 0x1c00000 0x1400000>;
+               };
+               partition@4 {   /* for testing purpose */
+                       label = "nand-bitstream";
+                       reg = <0x0 0x3000000 0x400000>;
+               };
+               partition@5 {   /* for testing purpose */
+                       label = "nand-misc";
+                       reg = <0x0 0x3400000 0xfcc00000>;
+               };
+       };
+       nand@1 {
+               reg = <0x1>;
+               #address-cells = <0x2>;
+               #size-cells = <0x1>;
+
+               partition@0 {   /* for testing purpose */
+                       label = "nand1-fsbl-uboot";
+                       reg = <0x0 0x0 0x400000>;
+               };
+               partition@1 {   /* for testing purpose */
+                       label = "nand1-linux";
+                       reg = <0x0 0x400000 0x1400000>;
+               };
+               partition@2 {   /* for testing purpose */
+                       label = "nand1-device-tree";
+                       reg = <0x0 0x1800000 0x400000>;
+               };
+               partition@3 {   /* for testing purpose */
+                       label = "nand1-rootfs";
+                       reg = <0x0 0x1c00000 0x1400000>;
+               };
+               partition@4 {   /* for testing purpose */
+                       label = "nand1-bitstream";
+                       reg = <0x0 0x3000000 0x400000>;
+               };
+               partition@5 {   /* for testing purpose */
+                       label = "nand1-misc";
+                       reg = <0x0 0x3400000 0xfcc00000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+       num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi0_default>;
+
+       spi0_flash0: spi0_flash0@0 {
+               compatible = "m25p80";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               spi-max-frequency = <50000000>;
+               reg = <0>;
+
+               spi0_flash0@0 {
+                       label = "spi0_flash0";
+                       reg = <0x0 0x100000>;
+               };
+       };
+};
+
+&spi1 {
+       status = "okay";
+       num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       spi1_flash0: spi1_flash0@0 {
+               compatible = "mtd_dataflash";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+
+               spi1_flash0@0 {
+                       label = "spi1_flash0";
+                       reg = <0x0 0x84000>;
+               };
+       };
+};
+
+/* ULPI SMSC USB3320 */
+&usb1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1_default>;
+};
+
+&dwc3_1 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_can0_default: can0-default {
+               mux {
+                       function = "can0";
+                       groups = "can0_9_grp";
+               };
+
+               conf {
+                       groups = "can0_9_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO38";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO39";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_8_grp";
+               };
+
+               conf {
+                       groups = "can1_8_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO33";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO32";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_1_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_1_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_6_grp", "gpio0_7_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_6_grp", "gpio0_7_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_10_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_10_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO42";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO43";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_10_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_10_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO41";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO40";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb1_default: usb1-default {
+               mux {
+                       groups = "usb1_0_grp";
+                       function = "usb1";
+               };
+
+               conf {
+                       groups = "usb1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO64", "MIO65", "MIO67";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO66", "MIO68", "MIO69", "MIO70", "MIO71",
+                              "MIO72", "MIO73", "MIO74", "MIO75";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem2_default: gem2-default {
+               mux {
+                       function = "ethernet2";
+                       groups = "ethernet2_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet2_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO58", "MIO59", "MIO60", "MIO61", "MIO62",
+                                                                       "MIO63";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO52", "MIO53", "MIO54", "MIO55", "MIO56",
+                                                                       "MIO57";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio2";
+                       groups = "mdio2_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio2_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_nand0_default: nand0-default {
+               mux {
+                       groups = "nand0_0_grp";
+                       function = "nand0";
+               };
+
+               conf {
+                       groups = "nand0_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-ce {
+                       groups = "nand0_0_ce_grp";
+                       function = "nand0_ce";
+               };
+
+               conf-ce {
+                       groups = "nand0_0_ce_grp";
+                       bias-pull-up;
+               };
+
+               mux-rb {
+                       groups = "nand0_0_rb_grp";
+                       function = "nand0_rb";
+               };
+
+               conf-rb {
+                       groups = "nand0_0_rb_grp";
+                       bias-pull-up;
+               };
+
+               mux-dqs {
+                       groups = "nand0_0_dqs_grp";
+                       function = "nand0_dqs";
+               };
+
+               conf-dqs {
+                       groups = "nand0_0_dqs_grp";
+                       bias-pull-up;
+               };
+       };
+
+       pinctrl_spi0_default: spi0-default {
+               mux {
+                       groups = "spi0_0_grp";
+                       function = "spi0";
+               };
+
+               conf {
+                       groups = "spi0_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi0_0_ss0_grp", "spi0_0_ss1_grp",
+                                                       "spi0_0_ss2_grp";
+                       function = "spi0_ss";
+               };
+
+               conf-cs {
+                       groups = "spi0_0_ss0_grp", "spi0_0_ss1_grp",
+                                                       "spi0_0_ss2_grp";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_spi1_default: spi1-default {
+               mux {
+                       groups = "spi1_3_grp";
+                       function = "spi1";
+               };
+
+               conf {
+                       groups = "spi1_3_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi1_3_ss0_grp", "spi1_3_ss1_grp",
+                                                       "spi1_3_ss2_grp";
+                       function = "spi1_ss";
+               };
+
+               conf-cs {
+                       groups = "spi1_3_ss0_grp", "spi1_3_ss1_grp",
+                                                       "spi1_3_ss2_grp";
+                       bias-disable;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm017-dc3.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm017-dc3.dts
new file mode 100644 (file)
index 0000000..3da9bd2
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ * dts file for Xilinx ZynqMP zc1751-xm017-dc3
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+
+/ {
+       model = "ZynqMP zc1751-xm017-dc3 RevA";
+       compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem0;
+               gpio0 = &gpio;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               mmc0 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               usb0 = &usb0;
+               usb1 = &usb1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&gem0 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       phy0: phy@0 { /* VSC8211 */
+               reg = <0>;
+       };
+};
+
+&gpio {
+       status = "okay";
+};
+
+/* just eeprom here */
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tca6416_u26: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /* IRQ not connected */
+       };
+
+       rtc@68 {
+               compatible = "dallas,ds1339";
+               reg = <0x68>;
+       };
+};
+
+/* eeprom24c02 and SE98A temp chip pca9306 */
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+/* MT29F64G08AECDBJ4-6 */
+&nand0 {
+       status = "okay";
+       arasan,has-mdma;
+       num-cs = <2>;
+
+       partition@0 {   /* for testing purpose */
+               label = "nand-fsbl-uboot";
+               reg = <0x0 0x0 0x400000>;
+       };
+       partition@1 {   /* for testing purpose */
+               label = "nand-linux";
+               reg = <0x0 0x400000 0x1400000>;
+       };
+       partition@2 {   /* for testing purpose */
+               label = "nand-device-tree";
+               reg = <0x0 0x1800000 0x400000>;
+       };
+       partition@3 {   /* for testing purpose */
+               label = "nand-rootfs";
+               reg = <0x0 0x1C00000 0x1400000>;
+       };
+       partition@4 {   /* for testing purpose */
+               label = "nand-bitstream";
+               reg = <0x0 0x3000000 0x400000>;
+       };
+       partition@5 {   /* for testing purpose */
+               label = "nand-misc";
+               reg = <0x0 0x3400000 0xFCC00000>;
+       };
+
+       partition@6 {   /* for testing purpose */
+               label = "nand1-fsbl-uboot";
+               reg = <0x1 0x0 0x400000>;
+       };
+       partition@7 {   /* for testing purpose */
+               label = "nand1-linux";
+               reg = <0x1 0x400000 0x1400000>;
+       };
+       partition@8 {   /* for testing purpose */
+               label = "nand1-device-tree";
+               reg = <0x1 0x1800000 0x400000>;
+       };
+       partition@9 {   /* for testing purpose */
+               label = "nand1-rootfs";
+               reg = <0x1 0x1C00000 0x1400000>;
+       };
+       partition@10 {  /* for testing purpose */
+               label = "nand1-bitstream";
+               reg = <0x1 0x3000000 0x400000>;
+       };
+       partition@11 {  /* for testing purpose */
+               label = "nand1-misc";
+               reg = <0x1 0x3400000 0xFCC00000>;
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+       /* SATA phy OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x1B 0x4D 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x19 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x1B 0x4D 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x19 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+};
+
+&sdhci1 { /* emmc with some settings */
+       status = "okay";
+};
+
+/* main */
+&uart0 {
+       status = "okay";
+};
+
+/* DB9 */
+&uart1 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+/* ULPI SMSC USB3320 */
+&usb1 {
+       status = "okay";
+       dr_mode = "host";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm018-dc4.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm018-dc4.dts
new file mode 100644 (file)
index 0000000..dd55ea1
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * dts file for Xilinx ZynqMP zc1751-xm018-dc4
+ *
+ * (C) Copyright 2015 - 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+
+/ {
+       model = "ZynqMP zc1751-xm018-dc4";
+       compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
+
+       aliases {
+               can0 = &can0;
+               can1 = &can1;
+               ethernet0 = &gem0;
+               ethernet1 = &gem1;
+               ethernet2 = &gem2;
+               ethernet3 = &gem3;
+               gpio0 = &gpio;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               spi0 = &qspi;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+};
+
+&can0 {
+       status = "okay";
+};
+
+&can1 {
+       status = "okay";
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&lpd_dma_chan1 {
+       status = "okay";
+};
+
+&lpd_dma_chan2 {
+       status = "okay";
+};
+
+&lpd_dma_chan3 {
+       status = "okay";
+};
+
+&lpd_dma_chan4 {
+       status = "okay";
+};
+
+&lpd_dma_chan5 {
+       status = "okay";
+};
+
+&lpd_dma_chan6 {
+       status = "okay";
+};
+
+&lpd_dma_chan7 {
+       status = "okay";
+};
+
+&lpd_dma_chan8 {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
+
+&gem0 {
+       status = "okay";
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethernet_phy0>;
+       ethernet_phy0: ethernet-phy@0 { /* Marvell 88e1512 */
+               reg = <0>;
+       };
+       ethernet_phy7: ethernet-phy@7 { /* Vitesse VSC8211 */
+               reg = <7>;
+       };
+       ethernet_phy3: ethernet-phy@3 { /* Realtek RTL8211DN */
+               reg = <3>;
+       };
+       ethernet_phy8: ethernet-phy@8 { /* Vitesse VSC8211 */
+               reg = <8>;
+       };
+};
+
+&gem1 {
+       status = "okay";
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethernet_phy7>;
+};
+
+&gem2 {
+       status = "okay";
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethernet_phy3>;
+};
+
+&gem3 {
+       status = "okay";
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethernet_phy8>;
+};
+
+&gpio {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80"; /* 32MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&watchdog0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm019-dc5.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm019-dc5.dts
new file mode 100644 (file)
index 0000000..0c82d52
--- /dev/null
@@ -0,0 +1,470 @@
+/*
+ * dts file for Xilinx ZynqMP zc1751-xm019-dc5
+ *
+ * (C) Copyright 2015, Xilinx, Inc.
+ *
+ * Siva Durga Prasad <siva.durga.paladugu@xilinx.com>
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+
+/ {
+       model = "ZynqMP zc1751-xm019-dc5 RevA";
+       compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem1;
+               gpio0 = &gpio;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               mmc0 = &sdhci0;
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&gem1 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem1_default>;
+       phy0: phy@0 {
+               reg = <0>;
+       };
+};
+
+&gpio {
+       status = "okay";
+};
+
+/* FIXME: Add device */
+&i2c0 {
+       status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 74 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 75 GPIO_ACTIVE_HIGH>;
+};
+
+/* FIXME: Add device */
+&i2c1 {
+       status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 76 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 77 GPIO_ACTIVE_HIGH>;
+
+};
+
+&sdhci0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
+       no-1-8-v;
+       xlnx,mio_bank = <0>;
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
+
+&watchdog0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_watchdog0_default>;
+};
+
+&ttc0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc0_default>;
+};
+
+&ttc1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc1_default>;
+};
+
+&ttc2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc2_default>;
+};
+
+&ttc3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc3_default>;
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_18_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_18_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_74_grp", "gpio0_75_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_74_grp", "gpio0_75_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_19_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_19_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_76_grp", "gpio0_77_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_76_grp", "gpio0_77_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_17_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO71";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_18_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_18_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO73";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO72";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem1_default: gem1-default {
+               mux {
+                       function = "ethernet1";
+                       groups = "ethernet1_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO44", "MIO45", "MIO46", "MIO47", "MIO48",
+                                                                       "MIO49";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO38", "MIO39", "MIO40", "MIO41", "MIO42",
+                                                                       "MIO43";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio1";
+                       groups = "mdio1_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_0_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_0_cd_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio0_0_wp_grp";
+                       function = "sdio0_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio0_0_wp_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_watchdog0_default: watchdog0-default {
+               mux-clk {
+                       groups = "swdt0_1_clk_grp";
+                       function = "swdt0_clk";
+               };
+
+               conf-clk {
+                       groups = "swdt0_1_clk_grp";
+                       bias-pull-up;
+               };
+
+               mux-rst {
+                       groups = "swdt0_1_rst_grp";
+                       function = "swdt0_rst";
+               };
+
+               conf-rst {
+                       groups = "swdt0_1_rst_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc0_default: ttc0-default {
+               mux-clk {
+                       groups = "ttc0_0_clk_grp";
+                       function = "ttc0_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc0_0_clk_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc0_0_wav_grp";
+                       function = "ttc0_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc0_0_wav_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc1_default: ttc1-default {
+               mux-clk {
+                       groups = "ttc1_0_clk_grp";
+                       function = "ttc1_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc1_0_clk_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc1_0_wav_grp";
+                       function = "ttc1_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc1_0_wav_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc2_default: ttc2-default {
+               mux-clk {
+                       groups = "ttc2_0_clk_grp";
+                       function = "ttc2_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc2_0_clk_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc2_0_wav_grp";
+                       function = "ttc2_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc2_0_wav_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc3_default: ttc3-default {
+               mux-clk {
+                       groups = "ttc3_0_clk_grp";
+                       function = "ttc3_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc3_0_clk_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc3_0_wav_grp";
+                       function = "ttc3_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc3_0_wav_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revA.dts
new file mode 100644 (file)
index 0000000..91cd3d9
--- /dev/null
@@ -0,0 +1,490 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU100
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ * Nathalie Chan King Choy <nathalie@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU100 RevA";
+       compatible = "xlnx,zynqmp-zcu100-revA", "xlnx,zynqmp-zcu100", "xlnx,zynqmp";
+
+       aliases {
+               gpio0 = &gpio;
+               gpio1 = &max3107;
+               i2c0 = &i2c0;
+               rtc0 = &rtc;
+               serial0 = &uart1;
+               serial1 = &max3107;
+               serial2 = &dcc;
+               spi0 = &qspi;
+               spi1 = &spi0;
+               spi2 = &spi1;
+               usb0 = &usb0;
+               usb1 = &usb1;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+               sw4 {
+                       label = "sw4";
+                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>; /* shared with pmic IRQ */ /* uboot: gpio input 39 */
+                       linux,code = <108>; /* down */
+                       gpio-key,wakeup;
+                       autorepeat;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               ds2 {
+                       label = "ds2";
+                       gpios = <&gpio 20 GPIO_ACTIVE_HIGH>; /* uboot: gpio toggle 20 */
+                       linux,default-trigger = "heartbeat";
+               };
+
+               ds3 {
+                       label = "ds3";
+                       gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tx"; /* WLAN tx */
+                       default-state = "off";
+               };
+
+               ds4 {
+                       label = "ds4";
+                       gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0rx"; /* WLAN rx */
+                       default-state = "off";
+               };
+
+               ds5 {
+                       label = "ds5";
+                       gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* FIXME this is not correct - used fixed-regulator for it */
+               vbus_det { /* U5 USB5744  VBUS detection via MIO7 */
+                       label = "vbus_det";
+                       gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       clk3_6: clk3_6 { /* for spi uart max3107 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <3600000>;
+       };
+
+       ltc2952: ltc2952 { /* U7 */
+               compatible = "lltc,ltc2952";
+               trigger-gpios = <&gpio 23 GPIO_ACTIVE_LOW>; /* INT line - input */
+               watchdog-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>; /* FIXME Bogus - set it up to max3107 */
+               kill-gpios = <&gpio 25 GPIO_ACTIVE_LOW>; /* KILL signal - output */
+       };
+
+       wmmcsdio_fixed: fixedregulator-mmcsdio {
+               compatible = "regulator-fixed";
+               regulator-name = "wmmcsdio_fixed";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       sdio_pwrseq: sdio_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&max3107 1 GPIO_ACTIVE_LOW>; /* WIFI_EN */
+       };
+};
+
+&dcc {
+       status = "okay";
+};
+
+&gpio {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       clock-frequency = <100000>;
+       i2cswitch@75 { /* u11 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2csw_0: i2c@0 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * LSEXP_I2C0
+                        */
+               };
+               i2csw_1: i2c@1 { /* i2c mw 75 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /*
+                        * LSEXP_I2C1
+                        */
+               };
+               i2csw_2: i2c@2 { /* i2c mw 75 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /*
+                        * HSEXP_I2C2
+                        */
+               };
+               i2csw_3: i2c@3 { /* i2c mw 75 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       /*
+                        * HSEXP_I2C3
+                        */
+               };
+               i2csw_4: i2c@4 { /* i2c mw 75 0 10 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+
+                       /* Comment it out because will be pre-programmed
+                          at the factory */
+
+                       pmic: tps65086x@5e { // Custom TI PMIC u33
+                               compatible = "ti,tps65086";
+                               reg = <0x5e>;
+                               interrupt-parent = <&gpio>;
+                               interrupts = <39 GPIO_ACTIVE_LOW>; /* shared with pmic IRQ */
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+/*
+                               sys-supply = <&some_reg>;
+                               // spec 12V
+
+                               buck1 5V0
+                               buck2 PSINTLP (no idea)
+                               buck3 VCC_PSDDR 1V1
+                               buck4 3V3
+                               buck5 1V2
+                               buck6 VCC_PSAUX 1V8
+
+                               vin-sm0-supply = <&some_reg>;
+                               vin-sm1-supply = <&some_reg>;
+                               vin-sm2-supply = <&some_reg>;
+                               vinldo01-supply = <...>;
+                               vinldo23-supply = <...>;
+                               vinldo4-supply = <...>;
+                               vinldo678-supply = <...>;
+                               vinldo9-supply = <...>;
+
+                               regulators {
+                                       sys_reg: sys {
+                                               regulator-name = "vdd_sys";
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm0_reg: sm0 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm1_reg: sm1 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm2_reg: sm2 {
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <4550000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       ldo0_reg: ldo0 {
+                                               regulator-name = "PCIE CLK";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo1_reg: ldo1 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                       };
+
+                                       ldo2_reg: ldo2 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                       };
+
+                                       ldo3_reg: ldo3 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo4_reg: ldo4 {
+                                               regulator-min-microvolt = <1700000>;
+                                               regulator-max-microvolt = <2475000>;
+                                       };
+
+                                       ldo5_reg: ldo5 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo6_reg: ldo6 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo7_reg: ldo7 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo8_reg: ldo8 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo9_reg: ldo9 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                               // FIXME look at this one
+                                       ldo_rtc {
+                                               regulator-name = "vdd_rtc_out,vdd_cell";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                       };
+                               };
+                               */
+                       };
+               };
+               i2csw_5: i2c@5 { /* i2c mw 75 0 20 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+                       /*
+                        * SYSMON
+                        */
+               };
+               i2csw_6: i2c@6 { /* i2c mw 75 0 40 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+                       /*
+                        * EEPROM with globally unique ID (will provide MAC address)
+                        */
+                       eeprom@50 { /* u35 - 24aa02E48T */
+                               compatible = "atmel,24c02"; /* 8 blocks 50-57 - works */
+                               reg = <0x50>; /* low 3 bits: don't care */
+                       };
+               };
+               i2csw_7: i2c@7 { /* i2c mw 75 0 80 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+                       /*
+                        * usb5744 - U5
+                        * 100kHz - this is default freq for us
+                        */
+                       /* FIXME 0x2c 0x2d - disabled because of SMBUS */
+               };
+       };
+};
+
+&qspi {
+       status = "okay"; /* This device may be DNP for cost savings */
+       flash@0 { /* single x4 - 16 MB flash at U13 */
+               compatible = "n25q128a13", "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x9E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+/* SD0 only supports 3.3V, no level shifter */
+&sdhci0 {
+       status = "okay";
+       no-1-8-v;
+       broken-cd; /* CD has to be enabled by default */
+       disable-wp;
+       xlnx,mio_bank = <0>;
+};
+
+&sdhci1 {
+       status = "okay";
+       bus-width = <0x4>;
+       xlnx,mio_bank = <0>;
+       non-removable;
+       disable-wp;
+       cap-power-off-card;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       max-frequency = <16000000>;
+       vqmmc-supply = <&wmmcsdio_fixed>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       wlcore: wlcore@2 {
+               compatible = "ti,wl1831";
+               reg = <2>;
+               interrupt-parent = <&gpio>;
+               interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
+       };
+};
+
+&serdes {
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+       max3107: max3107@0 { /* I'm assuming no offset...? */
+               compatible = "maxim,max3107";
+               spi-max-frequency = <26000000>;
+               reg = <0>;
+               interrupt-parent = <&gpio>;
+               interrupts = <77 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&clk3_6>;
+               clock-names = "osc";
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+};
+
+&spi1 { /* High Speed connector */
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "peripheral";
+/*     phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 0 26000000>; */
+       maximum-speed = "high-speed"; /* super-speed */
+};
+
+/* ULPI SMSC USB3320 */
+&usb1 {
+       status = "okay";
+};
+
+&dwc3_1 {
+       status = "okay";
+       dr_mode = "host";
+/*     phy-names = "usb3-phy";
+       phys = <&lane3 PHY_TYPE_USB3 1 0 26000000>; */
+       maximum-speed = "high-speed"; /* super-speed */
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 1 27000000>,
+              <&lane0 PHY_TYPE_DP 1 1 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revB-loopback.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revB-loopback.dts
new file mode 100644 (file)
index 0000000..8a3fa11
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU100 revB
+ *
+ * (C) Copyright 2017, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+#include "zynqmp-zcu100-revB.dts"
+
+/* loopback */
+&i2csw_0 {
+       eeprom0: eeprom@54 { /* u1 */
+               compatible = "at,24c02";
+               reg = <0x54>;
+       };
+};
+
+&i2csw_1 {
+       eeprom1: eeprom@54 { /* u2 */
+               compatible = "at,24c02";
+               reg = <0x54>;
+       };
+};
+
+&i2csw_2 {
+       eeprom2: eeprom@54 { /* u3 */
+               compatible = "at,24c02";
+               reg = <0x54>;
+       };
+};
+
+&i2csw_3 {
+       eeprom3: eeprom@54 { /* u4 */
+               compatible = "at,24c02";
+               reg = <0x54>;
+       };
+};
+
+&spi1 { /* High Speed connector */
+       flash: at45db041@0 { /* u5 */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "atmel,at45db041e", "atmel,at45", "atmel,dataflash";
+               spi-max-frequency = <85000000>;
+               reg = <0>;
+
+               partition@0 {
+                       label = "test";
+                       reg = <0x0 0x84000>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revB.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revB.dts
new file mode 100644 (file)
index 0000000..34ab818
--- /dev/null
@@ -0,0 +1,761 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU100 revB
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ * Nathalie Chan King Choy <nathalie@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU100 RevB";
+       compatible = "xlnx,zynqmp-zcu100-revB", "xlnx,zynqmp-zcu100", "xlnx,zynqmp";
+
+       aliases {
+               gpio0 = &gpio;
+               i2c0 = &i2c1;
+               rtc0 = &rtc;
+               serial0 = &uart1;
+               serial1 = &uart0;
+               serial2 = &dcc;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               usb0 = &usb0;
+               usb1 = &usb1;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+               sw4 {
+                       label = "sw4";
+                       gpios = <&gpio 23 GPIO_ACTIVE_LOW>; /* shared with pmic IRQ */
+                       linux,code = <108>; /* down */
+                       gpio-key,wakeup; /* FIXME test this */
+                       autorepeat;
+               };
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&xilinx_ams 0>, <&xilinx_ams 1>, <&xilinx_ams 2>,
+                             <&xilinx_ams 3>, <&xilinx_ams 4>, <&xilinx_ams 5>,
+                             <&xilinx_ams 6>, <&xilinx_ams 7>, <&xilinx_ams 8>,
+                             <&xilinx_ams 9>, <&xilinx_ams 10>,
+                             <&xilinx_ams 11>, <&xilinx_ams 12>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               ds2 {
+                       label = "ds2";
+                       gpios = <&gpio 20 GPIO_ACTIVE_HIGH>; /* uboot: gpio toggle 20 */
+                       linux,default-trigger = "heartbeat";
+               };
+
+               ds3 {
+                       label = "ds3";
+                       gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tx"; /* WLAN tx */
+                       default-state = "off";
+               };
+
+               ds4 {
+                       label = "ds4";
+                       gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0rx"; /* WLAN rx */
+                       default-state = "off";
+               };
+
+               ds5 {
+                       label = "ds5";
+                       gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "bluetooth-power";
+               };
+
+               /* FIXME this is not correct - used fixed-regulator for it */
+               vbus_det { /* U5 USB5744  VBUS detection via MIO25 */
+                       label = "vbus_det";
+                       gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               bt_power {
+                       label = "bt_power";
+                       gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       ltc2952: ltc2952 { /* U7 */
+               /*
+                * FIXME this is ltc2954 not ltc2952 - try this driver and
+                * maybe just extend compatible string.
+                */
+               compatible = "lltc,ltc2954", "lltc,ltc2952";
+               trigger-gpios = <&gpio 26 GPIO_ACTIVE_LOW>; /* INT line - input */
+               /* If there is HW watchdog on mezzanine this signal should be connected there */
+               watchdog-gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; /* FIXME - unconnected MIO pin now */
+               kill-gpios = <&gpio 34 GPIO_ACTIVE_LOW>; /* KILL signal - output */
+       };
+
+       wmmcsdio_fixed: fixedregulator-mmcsdio {
+               compatible = "regulator-fixed";
+               regulator-name = "wmmcsdio_fixed";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       sdio_pwrseq: sdio_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio 7 GPIO_ACTIVE_LOW>; /* WIFI_EN */
+       };
+};
+
+&dcc {
+       status = "okay";
+};
+
+&pmufw {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pmu_default>;
+};
+
+&gpio {
+       status = "okay";
+       gpio-line-names = "UART1_TX", "UART1_RX", "UART0_RX", "UART0_TX", "I2C1_SCL",
+                         "I2C1_SDA", "SPI1_SCLK", "WLAN_EN", "BT_EN", "SPI1_CS",
+                         "SPI1_MISO", "SPI1_MOSI", "I2C_MUX_RESET", "SD0_DAT0", "SD0_DAT1",
+                         "SD0_DAT2", "SD0_DAT3", "PS_LED3", "PS_LED2", "PS_LED1",
+                         "PS_LED0", "SD0_CMD", "SD0_CLK", "GPIO_PB", "SD0_DETECT",
+                         "VBUS_DET", "POWER_INT", "DP_AUX", "DP_HPD", "DP_OE",
+                         "DP_AUX_IN", "INA226_ALERT", "PS_FP_PWR_EN", "PL_PWR_EN", "POWER_KILL",
+                         "", "GPIO-A", "GPIO-B", "SPI0_SCLK", "GPIO-C",
+                         "GPIO-D", "SPI0_CS", "SPI0_MISO", "SPI_MOSI", "GPIO-E",
+                         "GPIO-F", "SD1_D0", "SD1_D1", "SD1_D2", "SD1_D3",
+                         "SD1_CMD", "SD1_CLK", "USB0_CLK", "USB0_DIR", "USB0_DATA2",
+                         "USB0_NXT", "USB0_DATA0", "USB0_DATA1", "USB0_STP", "USB0_DATA3",
+                         "USB0_DATA4", "USB0_DATA5", "USB0_DATA6", "USB0_DATA7", "USB1_CLK",
+                         "USB1_DIR", "USB1_DATA2", "USB1_NXT", "USB1_DATA0", "USB1_DATA1",
+                         "USB1_STP", "USB1_DATA3", "USB1_DATA4", "USB1_DATA5", "USB1_DATA6",
+                         "USB_DATA7", "WLAN_IRQ", "", /* MIO end and EMIO start */
+                         "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
+       clock-frequency = <100000>;
+       i2cswitch@75 { /* u11 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2csw_0: i2c@0 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * LSEXP_I2C0
+                        */
+               };
+               i2csw_1: i2c@1 { /* i2c mw 75 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /*
+                        * LSEXP_I2C1
+                        */
+               };
+               i2csw_2: i2c@2 { /* i2c mw 75 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /*
+                        * HSEXP_I2C2
+                        */
+               };
+               i2csw_3: i2c@3 { /* i2c mw 75 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       /*
+                        * HSEXP_I2C3
+                        */
+               };
+               i2csw_4: i2c@4 { /* i2c mw 75 0 10 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+
+                       /* Comment it out because will be pre-programmed
+                          at the factory */
+
+                       pmic: tps65086x@5e { // Custom TI PMIC u33
+                               compatible = "ti,tps65086";
+                               reg = <0x5e>;
+                               interrupt-parent = <&gpio>;
+                               interrupts = <23 GPIO_ACTIVE_LOW>; /* shared with pmic IRQ */
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+/*
+                               sys-supply = <&some_reg>;
+                               // spec 12V
+
+                               buck1 5V0
+                               buck2 PSINTLP (no idea)
+                               buck3 VCC_PSDDR 1V1
+                               buck4 3V3
+                               buck5 1V2
+                               buck6 VCC_PSAUX 1V8
+
+                               vin-sm0-supply = <&some_reg>;
+                               vin-sm1-supply = <&some_reg>;
+                               vin-sm2-supply = <&some_reg>;
+                               vinldo01-supply = <...>;
+                               vinldo23-supply = <...>;
+                               vinldo4-supply = <...>;
+                               vinldo678-supply = <...>;
+                               vinldo9-supply = <...>;
+
+                               regulators {
+                                       sys_reg: sys {
+                                               regulator-name = "vdd_sys";
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm0_reg: sm0 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm1_reg: sm1 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm2_reg: sm2 {
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <4550000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       ldo0_reg: ldo0 {
+                                               regulator-name = "PCIE CLK";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo1_reg: ldo1 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                       };
+
+                                       ldo2_reg: ldo2 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                       };
+
+                                       ldo3_reg: ldo3 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo4_reg: ldo4 {
+                                               regulator-min-microvolt = <1700000>;
+                                               regulator-max-microvolt = <2475000>;
+                                       };
+
+                                       ldo5_reg: ldo5 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo6_reg: ldo6 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo7_reg: ldo7 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo8_reg: ldo8 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo9_reg: ldo9 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                               // FIXME look at this one
+                                       ldo_rtc {
+                                               regulator-name = "vdd_rtc_out,vdd_cell";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                       };
+                               };
+                               */
+                       };
+               };
+               i2csw_5: i2c@5 { /* i2c mw 75 0 20 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+                       /* PS_PMBUS */
+                       ina226@40 { /* u35 */
+                               compatible = "ti,ina226";
+                               reg = <0x40>;
+                               shunt-resistor = <10000>;
+                               /* MIO31 is alert which should be routed to PMUFW */
+                       };
+               };
+               i2csw_6: i2c@6 { /* i2c mw 75 0 40 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+                       /*
+                        * Not Connected
+                        */
+               };
+               i2csw_7: i2c@7 { /* i2c mw 75 0 80 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+                       /*
+                        * usb5744 (DNP) - U5
+                        * 100kHz - this is default freq for us
+                        */
+               };
+       };
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_1_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_1_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_4_grp", "gpio0_5_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_4_grp", "gpio0_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_pmu_default: pmu-default {
+               mux {
+                       groups = "pmu0_8_grp";
+                       function = "pmu0";
+               };
+
+               conf {
+                       groups = "pmu0_8_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_4bit_0_0_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_4bit_0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_0_cd_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_4bit_0_1_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_4bit_0_1_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_spi0_default: spi0-default {
+               mux {
+                       groups = "spi0_3_grp";
+                       function = "spi0";
+               };
+
+               conf {
+                       groups = "spi0_3_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi0_3_ss0_grp";
+                       function = "spi0_ss";
+               };
+
+               conf-cs {
+                       groups = "spi0_3_ss0_grp";
+                       bias-disable;
+               };
+
+       };
+
+       pinctrl_spi1_default: spi1-default {
+               mux {
+                       groups = "spi1_0_grp";
+                       function = "spi1";
+               };
+
+               conf {
+                       groups = "spi1_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi1_0_ss0_grp";
+                       function = "spi1_ss";
+               };
+
+               conf-cs {
+                       groups = "spi1_0_ss0_grp";
+                       bias-disable;
+               };
+
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_0_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO3";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO2";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_0_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO1";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO0";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb1_default: usb1-default {
+               mux {
+                       groups = "usb1_0_grp";
+                       function = "usb1";
+               };
+
+               conf {
+                       groups = "usb1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO64", "MIO65", "MIO67";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO66", "MIO68", "MIO69", "MIO70", "MIO71",
+                              "MIO72", "MIO73", "MIO74", "MIO75";
+                       bias-disable;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+/* SD0 only supports 3.3V, no level shifter */
+&sdhci0 {
+       status = "okay";
+       no-1-8-v;
+       broken-cd; /* CD has to be enabled by default */
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
+       xlnx,mio_bank = <0>;
+};
+
+&sdhci1 {
+       status = "okay";
+       bus-width = <0x4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <0>;
+       non-removable;
+       disable-wp;
+       cap-power-off-card;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       vqmmc-supply = <&wmmcsdio_fixed>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       wlcore: wlcore@2 {
+               compatible = "ti,wl1831";
+               reg = <2>;
+               interrupt-parent = <&gpio>;
+               interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
+       };
+};
+
+&serdes {
+       status = "okay";
+};
+
+&spi0 { /* Low Speed connector */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi0_default>;
+};
+
+&spi1 { /* High Speed connector */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "peripheral";
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 0 26000000>;
+       maximum-speed = "super-speed";
+};
+
+/* ULPI SMSC USB3320 */
+&usb1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1_default>;
+};
+
+&dwc3_1 {
+       status = "okay";
+       dr_mode = "host";
+       phy-names = "usb3-phy";
+       phys = <&lane3 PHY_TYPE_USB3 1 0 26000000>;
+       maximum-speed = "super-speed";
+};
+
+&watchdog0 {
+       status = "okay";
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 1 27000000>,
+              <&lane0 PHY_TYPE_DP 1 1 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
+
+&xilinx_ams {
+       status = "okay";
+};
+
+&ams_ps {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dts
new file mode 100644 (file)
index 0000000..fbf37f5
--- /dev/null
@@ -0,0 +1,761 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU100 revC
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ * Nathalie Chan King Choy <nathalie@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU100 RevC";
+       compatible = "xlnx,zynqmp-zcu100-revC", "xlnx,zynqmp-zcu100", "xlnx,zynqmp";
+
+       aliases {
+               gpio0 = &gpio;
+               i2c0 = &i2c1;
+               rtc0 = &rtc;
+               serial0 = &uart1;
+               serial1 = &uart0;
+               serial2 = &dcc;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               usb0 = &usb0;
+               usb1 = &usb1;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+               sw4 {
+                       label = "sw4";
+                       gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
+                       linux,code = <108>; /* down */
+                       gpio-key,wakeup; /* FIXME test this */
+                       autorepeat;
+               };
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&xilinx_ams 0>, <&xilinx_ams 1>, <&xilinx_ams 2>,
+                             <&xilinx_ams 3>, <&xilinx_ams 4>, <&xilinx_ams 5>,
+                             <&xilinx_ams 6>, <&xilinx_ams 7>, <&xilinx_ams 8>,
+                             <&xilinx_ams 9>, <&xilinx_ams 10>,
+                             <&xilinx_ams 11>, <&xilinx_ams 12>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               ds2 {
+                       label = "ds2";
+                       gpios = <&gpio 20 GPIO_ACTIVE_HIGH>; /* uboot: gpio toggle 20 */
+                       linux,default-trigger = "heartbeat";
+               };
+
+               ds3 {
+                       label = "ds3";
+                       gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tx"; /* WLAN tx */
+                       default-state = "off";
+               };
+
+               ds4 {
+                       label = "ds4";
+                       gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0rx"; /* WLAN rx */
+                       default-state = "off";
+               };
+
+               ds5 {
+                       label = "ds5";
+                       gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "bluetooth-power";
+               };
+
+               /* FIXME this is not correct - used fixed-regulator for it */
+               vbus_det { /* U5 USB5744  VBUS detection via MIO25 */
+                       label = "vbus_det";
+                       gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               bt_power {
+                       label = "bt_power";
+                       gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       ltc2954: ltc2954 { /* U7 */
+               /*
+                * FIXME this is ltc2954 not ltc2952 - try this driver and
+                * maybe just extend compatible string.
+                */
+               compatible = "lltc,ltc2954", "lltc,ltc2952";
+               trigger-gpios = <&gpio 26 GPIO_ACTIVE_LOW>; /* INT line - input */
+               /* If there is HW watchdog on mezzanine this signal should be connected there */
+               watchdog-gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; /* MIO on PAD */
+               kill-gpios = <&gpio 34 GPIO_ACTIVE_LOW>; /* KILL signal - output */
+       };
+
+       wmmcsdio_fixed: fixedregulator-mmcsdio {
+               compatible = "regulator-fixed";
+               regulator-name = "wmmcsdio_fixed";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       sdio_pwrseq: sdio_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio 7 GPIO_ACTIVE_LOW>; /* WIFI_EN */
+       };
+};
+
+&dcc {
+       status = "okay";
+};
+
+&pmufw {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pmu_default>;
+};
+
+&gpio {
+       status = "okay";
+       gpio-line-names = "UART1_TX", "UART1_RX", "UART0_RX", "UART0_TX", "I2C1_SCL",
+                         "I2C1_SDA", "SPI1_SCLK", "WLAN_EN", "BT_EN", "SPI1_CS",
+                         "SPI1_MISO", "SPI1_MOSI", "I2C_MUX_RESET", "SD0_DAT0", "SD0_DAT1",
+                         "SD0_DAT2", "SD0_DAT3", "PS_LED3", "PS_LED2", "PS_LED1",
+                         "PS_LED0", "SD0_CMD", "SD0_CLK", "GPIO_PB", "SD0_DETECT",
+                         "VBUS_DET", "POWER_INT", "DP_AUX", "DP_HPD", "DP_OE",
+                         "DP_AUX_IN", "INA226_ALERT", "PS_FP_PWR_EN", "PL_PWR_EN", "POWER_KILL",
+                         "", "GPIO-A", "GPIO-B", "SPI0_SCLK", "GPIO-C",
+                         "GPIO-D", "SPI0_CS", "SPI0_MISO", "SPI_MOSI", "GPIO-E",
+                         "GPIO-F", "SD1_D0", "SD1_D1", "SD1_D2", "SD1_D3",
+                         "SD1_CMD", "SD1_CLK", "USB0_CLK", "USB0_DIR", "USB0_DATA2",
+                         "USB0_NXT", "USB0_DATA0", "USB0_DATA1", "USB0_STP", "USB0_DATA3",
+                         "USB0_DATA4", "USB0_DATA5", "USB0_DATA6", "USB0_DATA7", "USB1_CLK",
+                         "USB1_DIR", "USB1_DATA2", "USB1_NXT", "USB1_DATA0", "USB1_DATA1",
+                         "USB1_STP", "USB1_DATA3", "USB1_DATA4", "USB1_DATA5", "USB1_DATA6",
+                         "USB_DATA7", "WLAN_IRQ", "PMIC_IRQ", /* MIO end and EMIO start */
+                         "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
+       clock-frequency = <100000>;
+       i2cswitch@75 { /* u11 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2csw_0: i2c@0 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * LSEXP_I2C0
+                        */
+               };
+               i2csw_1: i2c@1 { /* i2c mw 75 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /*
+                        * LSEXP_I2C1
+                        */
+               };
+               i2csw_2: i2c@2 { /* i2c mw 75 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /*
+                        * HSEXP_I2C2
+                        */
+               };
+               i2csw_3: i2c@3 { /* i2c mw 75 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       /*
+                        * HSEXP_I2C3
+                        */
+               };
+               i2csw_4: i2c@4 { /* i2c mw 75 0 10 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+
+                       /* Comment it out because will be pre-programmed
+                          at the factory */
+
+                       pmic: tps65086x@5e { // Custom TI PMIC u33
+                               compatible = "ti,tps65086";
+                               reg = <0x5e>;
+                               interrupt-parent = <&gpio>;
+                               interrupts = <77 GPIO_ACTIVE_LOW>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+/*
+                               sys-supply = <&some_reg>;
+                               // spec 12V
+
+                               buck1 5V0
+                               buck2 PSINTLP (no idea)
+                               buck3 VCC_PSDDR 1V1
+                               buck4 3V3
+                               buck5 1V2
+                               buck6 VCC_PSAUX 1V8
+
+                               vin-sm0-supply = <&some_reg>;
+                               vin-sm1-supply = <&some_reg>;
+                               vin-sm2-supply = <&some_reg>;
+                               vinldo01-supply = <...>;
+                               vinldo23-supply = <...>;
+                               vinldo4-supply = <...>;
+                               vinldo678-supply = <...>;
+                               vinldo9-supply = <...>;
+
+                               regulators {
+                                       sys_reg: sys {
+                                               regulator-name = "vdd_sys";
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm0_reg: sm0 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm1_reg: sm1 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       sm2_reg: sm2 {
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <4550000>;
+                                               regulator-boot-on;
+                                               regulator-always-on;
+                                       };
+
+                                       ldo0_reg: ldo0 {
+                                               regulator-name = "PCIE CLK";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo1_reg: ldo1 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                       };
+
+                                       ldo2_reg: ldo2 {
+                                               regulator-min-microvolt = < 725000>;
+                                               regulator-max-microvolt = <1500000>;
+                                       };
+
+                                       ldo3_reg: ldo3 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo4_reg: ldo4 {
+                                               regulator-min-microvolt = <1700000>;
+                                               regulator-max-microvolt = <2475000>;
+                                       };
+
+                                       ldo5_reg: ldo5 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo6_reg: ldo6 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo7_reg: ldo7 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo8_reg: ldo8 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo9_reg: ldo9 {
+                                               regulator-min-microvolt = <1250000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                               // FIXME look at this one
+                                       ldo_rtc {
+                                               regulator-name = "vdd_rtc_out,vdd_cell";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                       };
+                               };
+                               */
+                       };
+               };
+               i2csw_5: i2c@5 { /* i2c mw 75 0 20 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+                       /* PS_PMBUS */
+                       ina226@40 { /* u35 */
+                               compatible = "ti,ina226";
+                               reg = <0x40>;
+                               shunt-resistor = <10000>;
+                               /* MIO31 is alert which should be routed to PMUFW */
+                       };
+               };
+               i2csw_6: i2c@6 { /* i2c mw 75 0 40 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+                       /*
+                        * Not Connected
+                        */
+               };
+               i2csw_7: i2c@7 { /* i2c mw 75 0 80 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+                       /*
+                        * usb5744 (DNP) - U5
+                        * 100kHz - this is default freq for us
+                        */
+               };
+       };
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_1_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_1_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_4_grp", "gpio0_5_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_4_grp", "gpio0_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_pmu_default: pmu-default {
+               mux {
+                       groups = "pmu0_8_grp";
+                       function = "pmu0";
+               };
+
+               conf {
+                       groups = "pmu0_8_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_4bit_0_0_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_4bit_0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_0_cd_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_4bit_0_1_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_4bit_0_1_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_spi0_default: spi0-default {
+               mux {
+                       groups = "spi0_3_grp";
+                       function = "spi0";
+               };
+
+               conf {
+                       groups = "spi0_3_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi0_3_ss0_grp";
+                       function = "spi0_ss";
+               };
+
+               conf-cs {
+                       groups = "spi0_3_ss0_grp";
+                       bias-disable;
+               };
+
+       };
+
+       pinctrl_spi1_default: spi1-default {
+               mux {
+                       groups = "spi1_0_grp";
+                       function = "spi1";
+               };
+
+               conf {
+                       groups = "spi1_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi1_0_ss0_grp";
+                       function = "spi1_ss";
+               };
+
+               conf-cs {
+                       groups = "spi1_0_ss0_grp";
+                       bias-disable;
+               };
+
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_0_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO3";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO2";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_0_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO1";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO0";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb1_default: usb1-default {
+               mux {
+                       groups = "usb1_0_grp";
+                       function = "usb1";
+               };
+
+               conf {
+                       groups = "usb1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO64", "MIO65", "MIO67";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO66", "MIO68", "MIO69", "MIO70", "MIO71",
+                              "MIO72", "MIO73", "MIO74", "MIO75";
+                       bias-disable;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+/* SD0 only supports 3.3V, no level shifter */
+&sdhci0 {
+       status = "okay";
+       no-1-8-v;
+       broken-cd; /* CD has to be enabled by default */
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
+       xlnx,mio_bank = <0>;
+};
+
+&sdhci1 {
+       status = "okay";
+       bus-width = <0x4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <0>;
+       non-removable;
+       disable-wp;
+       cap-power-off-card;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       vqmmc-supply = <&wmmcsdio_fixed>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       wlcore: wlcore@2 {
+               compatible = "ti,wl1831";
+               reg = <2>;
+               interrupt-parent = <&gpio>;
+               interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
+       };
+};
+
+&serdes {
+       status = "okay";
+};
+
+&spi0 { /* Low Speed connector */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi0_default>;
+};
+
+&spi1 { /* High Speed connector */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "peripheral";
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 0 26000000>;
+       maximum-speed = "super-speed";
+};
+
+/* ULPI SMSC USB3320 */
+&usb1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1_default>;
+};
+
+&dwc3_1 {
+       status = "okay";
+       dr_mode = "host";
+       phy-names = "usb3-phy";
+       phys = <&lane3 PHY_TYPE_USB3 1 0 26000000>;
+       maximum-speed = "super-speed";
+};
+
+&watchdog0 {
+       status = "okay";
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 1 27000000>,
+              <&lane0 PHY_TYPE_DP 1 1 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
+
+&xilinx_ams {
+       status = "okay";
+};
+
+&ams_ps {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.0.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.0.dts
new file mode 100644 (file)
index 0000000..191a70d
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU102 Rev1.0
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+#include "zynqmp-zcu102-revB.dts"
+
+/ {
+       model = "ZynqMP ZCU102 Rev1.0";
+       compatible = "xlnx,zynqmp-zcu102-rev1.0", "xlnx,zynqmp-zcu102", "xlnx,zynqmp";
+};
+
+&eeprom  {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       board_sn: board_sn@0 {
+               reg = <0x0 0x14>;
+       };
+
+       eth_mac: eth_mac@20 {
+               reg = <0x20 0x6>;
+       };
+
+       board_name: board_name@d0 {
+               reg = <0xd0 0x6>;
+       };
+
+       board_revision: board_revision@e0 {
+               reg = <0xe0 0x3>;
+       };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revA.dts
new file mode 100644 (file)
index 0000000..e8ab66e
--- /dev/null
@@ -0,0 +1,985 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU102 RevA
+ *
+ * (C) Copyright 2015, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU102 RevA";
+       compatible = "xlnx,zynqmp-zcu102-revA", "xlnx,zynqmp-zcu102", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem3;
+               gpio0 = &gpio;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               mmc0 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+               sw19 {
+                       label = "sw19";
+                       gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
+                       linux,code = <108>; /* down */
+                       gpio-key,wakeup;
+                       autorepeat;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               heartbeat_led {
+                       label = "heartbeat";
+                       gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&can1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
+};
+
+&dcc {
+       status = "okay";
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&gem3 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy0: phy@21 {
+               reg = <21>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,rxctrl-strap-worka;
+       };
+};
+
+&gpio {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
+
+       tca6416_u97: gpio@20 {
+               /*
+                * Enable all GTs to out from U-Boot
+                * i2c mw 20 6 0  - setup IO to output
+                * i2c mw 20 2 ef - setup output values on pins 0-7
+                * i2c mw 20 3 ff - setup output values on pins 10-17
+                */
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /*
+                * IRQ not connected
+                * Lines:
+                * 0 - PS_GTR_LAN_SEL0
+                * 1 - PS_GTR_LAN_SEL1
+                * 2 - PS_GTR_LAN_SEL2
+                * 3 - PS_GTR_LAN_SEL3
+                * 4 - PCI_CLK_DIR_SEL
+                * 5 - IIC_MUX_RESET_B
+                * 6 - GEM3_EXP_RESET_B
+                * 7, 10 - 17 - not connected
+                */
+
+               gtr_sel0 {
+                       gpio-hog;
+                       gpios = <0 0>;
+                       output-low; /* PCIE = 0, DP = 1 */
+                       line-name = "sel0";
+               };
+               gtr_sel1 {
+                       gpio-hog;
+                       gpios = <1 0>;
+                       output-high; /* PCIE = 0, DP = 1 */
+                       line-name = "sel1";
+               };
+               gtr_sel2 {
+                       gpio-hog;
+                       gpios = <2 0>;
+                       output-high; /* PCIE = 0, USB0 = 1 */
+                       line-name = "sel2";
+               };
+               gtr_sel3 {
+                       gpio-hog;
+                       gpios = <3 0>;
+                       output-high; /* PCIE = 0, SATA = 1 */
+                       line-name = "sel3";
+               };
+       };
+
+       tca6416_u61: gpio@21 { /* FIXME enable it by i2c mw 21 6 0 */
+               compatible = "ti,tca6416";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /*
+                * IRQ not connected
+                * Lines:
+                * 0 - VCCPSPLL_EN
+                * 1 - MGTRAVCC_EN
+                * 2 - MGTRAVTT_EN
+                * 3 - VCCPSDDRPLL_EN
+                * 4 - MIO26_PMU_INPUT_LS
+                * 5 - PL_PMBUS_ALERT
+                * 6 - PS_PMBUS_ALERT
+                * 7 - MAXIM_PMBUS_ALERT
+                * 10 - PL_DDR4_VTERM_EN
+                * 11 - PL_DDR4_VPP_2V5_EN
+                * 12 - PS_DIMM_VDDQ_TO_PSVCCO_ON
+                * 13 - PS_DIMM_SUSPEND_EN
+                * 14 - PS_DDR4_VTERM_EN
+                * 15 - PS_DDR4_VPP_2V5_EN
+                * 16 - 17 - not connected
+                */
+       };
+
+       i2cswitch@75 { /* u60 */
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2c@0 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /* PS_PMBUS */
+                       ina226@40 { /* u76 */
+                               compatible = "ti,ina226";
+                               reg = <0x40>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@41 { /* u77 */
+                               compatible = "ti,ina226";
+                               reg = <0x41>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@42 { /* u78 */
+                               compatible = "ti,ina226";
+                               reg = <0x42>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@43 { /* u87 */
+                               compatible = "ti,ina226";
+                               reg = <0x43>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@44 { /* u85 */
+                               compatible = "ti,ina226";
+                               reg = <0x44>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@45 { /* u86 */
+                               compatible = "ti,ina226";
+                               reg = <0x45>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@46 { /* u93 */
+                               compatible = "ti,ina226";
+                               reg = <0x46>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@47 { /* u88 */
+                               compatible = "ti,ina226";
+                               reg = <0x47>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@4a { /* u15 */
+                               compatible = "ti,ina226";
+                               reg = <0x4a>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@4b { /* u92 */
+                               compatible = "ti,ina226";
+                               reg = <0x4b>;
+                               shunt-resistor = <5000>;
+                       };
+               };
+               i2c@1 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /* PL_PMBUS */
+                       ina226@40 { /* u79 */
+                               compatible = "ti,ina226";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+                       ina226@41 { /* u81 */
+                               compatible = "ti,ina226";
+                               reg = <0x41>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@42 { /* u80 */
+                               compatible = "ti,ina226";
+                               reg = <0x42>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@43 { /* u84 */
+                               compatible = "ti,ina226";
+                               reg = <0x43>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@44 { /* u16 */
+                               compatible = "ti,ina226";
+                               reg = <0x44>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@45 { /* u65 */
+                               compatible = "ti,ina226";
+                               reg = <0x45>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@46 { /* u74 */
+                               compatible = "ti,ina226";
+                               reg = <0x46>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@47 { /* u75 */
+                               compatible = "ti,ina226";
+                               reg = <0x47>;
+                               shunt-resistor = <5000>;
+                       };
+               };
+               i2c@2 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /* MAXIM_PMBUS - 00 */
+                       max15301@a { /* u46 */
+                               compatible = "max15301";
+                               reg = <0xa>;
+                       };
+                       max15303@b { /* u4 */
+                               compatible = "max15303";
+                               reg = <0xb>;
+                       };
+                       max15303@10 { /* u13 */
+                               compatible = "max15303";
+                               reg = <0x10>;
+                       };
+                       max15301@13 { /* u47 */
+                               compatible = "max15301";
+                               reg = <0x13>;
+                       };
+                       max15303@14 { /* u7 */
+                               compatible = "max15303";
+                               reg = <0x14>;
+                       };
+                       max15303@15 { /* u6 */
+                               compatible = "max15303";
+                               reg = <0x15>;
+                       };
+                       max15303@16 { /* u10 */
+                               compatible = "max15303";
+                               reg = <0x16>;
+                       };
+                       max15303@17 { /* u9 */
+                               compatible = "max15303";
+                               reg = <0x17>;
+                       };
+                       max15301@18 { /* u63 */
+                               compatible = "max15301";
+                               reg = <0x18>;
+                       };
+                       max15303@1a { /* u49 */
+                               compatible = "max15303";
+                               reg = <0x1a>;
+                       };
+                       max15303@1d { /* u18 */
+                               compatible = "max15303";
+                               reg = <0x1d>;
+                       };
+                       max15303@20 { /* u8 */
+                               compatible = "max15303";
+                               status = "disabled"; /* unreachable */
+                               reg = <0x20>;
+                       };
+
+/*                     drivers/hwmon/pmbus/Kconfig:86:   be called max20751.
+drivers/hwmon/pmbus/Makefile:11:obj-$(CONFIG_SENSORS_MAX20751)  += max20751.o
+*/
+                       max20751@72 { /* u95 FIXME - not detected */
+                               compatible = "max20751";
+                               reg = <0x72>;
+                       };
+                       max20751@73 { /* u96 FIXME - not detected */
+                               compatible = "max20751";
+                               reg = <0x73>;
+                       };
+               };
+               /* Bus 3 is not connected */
+       };
+
+       /* FIXME PMOD - j160 */
+       /* FIXME MSP430F - u41 - not detected */
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+
+       /* FIXME PL i2c via PCA9306 - u45 */
+       /* FIXME MSP430 - u41 - not detected */
+       i2cswitch@74 { /* u34 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x74>;
+               i2c@0 { /* i2c mw 74 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * IIC_EEPROM 1kB memory which uses 256B blocks
+                        * where every block has different address.
+                        *    0 - 256B address 0x54
+                        * 256B - 512B address 0x55
+                        * 512B - 768B address 0x56
+                        * 768B - 1024B address 0x57
+                        */
+                       eeprom: eeprom@54 { /* u23 */
+                               compatible = "at,24c08";
+                               reg = <0x54>;
+                       };
+               };
+               i2c@1 { /* i2c mw 74 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       si5341: clock-generator1@36 { /* SI5341 - u69 */
+                               compatible = "si5341";
+                               reg = <0x36>;
+                       };
+
+               };
+               i2c@2 { /* i2c mw 74 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       si570_1: clock-generator2@5d { /* USER SI570 - u42 */
+                               #clock-cells = <0>;
+                               compatible = "silabs,si570";
+                               reg = <0x5d>;
+                               temperature-stability = <50>;
+                               factory-fout = <300000000>;
+                               clock-frequency = <300000000>;
+                       };
+               };
+               i2c@3 { /* i2c mw 74 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       si570_2: clock-generator3@5d { /* USER MGT SI570 - u56 */
+                               #clock-cells = <0>;
+                               compatible = "silabs,si570";
+                               reg = <0x5d>;
+                               temperature-stability = <50>; /* copy from zc702 */
+                               factory-fout = <156250000>;
+                               clock-frequency = <148500000>;
+                       };
+               };
+               i2c@4 { /* i2c mw 74 0 10 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+                       si5328: clock-generator4@69 {/* SI5328 - u20 */
+                               compatible = "silabs,si5328";
+                               reg = <0x69>;
+                               /*
+                                * Chip has interrupt present connected to PL
+                                * interrupt-parent = <&>;
+                                * interrupts = <>;
+                                */
+                       };
+               };
+               /* 5 - 7 unconnected */
+       };
+
+       i2cswitch@75 {
+               compatible = "nxp,pca9548"; /* u135 */
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /* HPC0_IIC */
+               };
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /* HPC1_IIC */
+               };
+               i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /* SYSMON */
+               };
+               i2c@3 { /* i2c mw 75 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       /* DDR4 SODIMM */
+                       dev@19 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x19>;
+                       };
+                       dev@30 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x30>;
+                       };
+                       dev@35 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x35>;
+                       };
+                       dev@36 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x36>;
+                       };
+                       dev@51 { /* u-boot detection - maybe SPD */
+                               compatible = "xxx";
+                               reg = <0x51>;
+                       };
+               };
+               i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+                       /* SEP 3 */
+               };
+               i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+                       /* SEP 2 */
+               };
+               i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+                       /* SEP 1 */
+               };
+               i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+                       /* SEP 0 */
+               };
+       };
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_3_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_3_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_0_cd_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio1_0_wp_grp";
+                       function = "sdio1_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio1_0_wp_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux-sw {
+                       function = "gpio0";
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+               };
+
+               conf-sw {
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-msp {
+                       function = "gpio0";
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+               };
+
+               conf-msp {
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-pull-up {
+                       pins = "MIO22", "MIO23";
+                       bias-pull-up;
+               };
+
+               conf-pull-none {
+                       pins = "MIO13", "MIO38";
+                       bias-disable;
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&qspi {
+       status = "okay";
+       is-dual = <1>;
+       flash@0 {
+               compatible = "m25p80"; /* 32MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&lane3 PHY_TYPE_SATA 1 1 125000000>;
+};
+
+/* SD1 with level shifter */
+&sdhci1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <1>;
+};
+
+&serdes {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>;
+       maximum-speed = "super-speed";
+};
+
+&watchdog0 {
+       status = "okay";
+};
+
+&xilinx_ams {
+       status = "okay";
+};
+
+&ams_ps {
+       status = "okay";
+};
+
+&ams_pl {
+       status = "okay";
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0";
+       phys = <&lane1 PHY_TYPE_DP 0 3 27000000>;
+       xlnx,max-lanes = <1>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revB.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revB.dts
new file mode 100644 (file)
index 0000000..4bf7df3
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU102 RevB
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+#include "zynqmp-zcu102-revA.dts"
+
+/ {
+       model = "ZynqMP ZCU102 RevB";
+       compatible = "xlnx,zynqmp-zcu102-revB", "xlnx,zynqmp-zcu102", "xlnx,zynqmp";
+};
+
+&gem3 {
+       phy-handle = <&phyc>;
+       phyc: phy@c {
+               reg = <0xc>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,rxctrl-strap-worka;
+       };
+       /* Cleanup from RevA */
+       /delete-node/ phy@21;
+};
+
+/* Different qspi 512Mbit version */
+
+/* Fix collision with u61 */
+&i2c0 {
+       i2cswitch@75 {
+               i2c@2 {
+                       max15303@1b { /* u8 */
+                               compatible = "max15303";
+                               reg = <0x1b>;
+                       };
+                       /delete-node/ max15303@20;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revA.dts
new file mode 100644 (file)
index 0000000..3f304e3
--- /dev/null
@@ -0,0 +1,521 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU104
+ *
+ * (C) Copyright 2017, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU104 RevA";
+       compatible = "xlnx,zynqmp-zcu104-revA", "xlnx,zynqmp-zcu104", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem3;
+               gpio0 = &gpio;
+               i2c0 = &i2c1;
+               mmc0 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+};
+
+&can1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
+};
+
+&dcc {
+       status = "okay";
+};
+
+&gem3 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy0: phy@c {
+               reg = <0xc>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,rxctrl-strap-worka;
+       };
+};
+
+&gpio {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+
+       /* Another connection to this bus via PL i2c via PCA9306 - u45 */
+       i2cswitch@74 { /* u34 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x74>;
+               i2c@0 { /* i2c mw 74 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * IIC_EEPROM 1kB memory which uses 256B blocks
+                        * where every block has different address.
+                        *    0 - 256B address 0x54
+                        * 256B - 512B address 0x55
+                        * 512B - 768B address 0x56
+                        * 768B - 1024B address 0x57
+                        */
+                       eeprom@54 { /* u23 */
+                               compatible = "at,24c08";
+                               reg = <0x54>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                       };
+               };
+
+               i2c@1 { /* i2c mw 74 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       clock_8t49n287: 8t49n287@6c { /* 8T49N287 - u182 */
+                               compatible = "idt,8t49n287";
+                               reg = <0x6c>;
+                       };
+               };
+
+               i2c@2 { /* i2c mw 74 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       irps5401_43: irps54012@43 { /* IRPS5401 - u175 */
+                               #clock-cells = <0>;
+                               compatible = "infineon,irps5401";
+                               reg = <0x43>;
+                       };
+                       irps5401_4d: irps54012@4d { /* IRPS5401 - u180 */
+                               #clock-cells = <0>;
+                               compatible = "infineon,irps5401";
+                               reg = <0x4d>;
+                       };
+               };
+
+               i2c@4 { /* i2c mw 74 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+                       /* FIXME Npt detected */
+                       tca6416_u97: gpio@21 { /* FIXME enable it by i2c mw 21 6 0 */
+                               compatible = "ti,tca6416";
+                               reg = <0x21>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               /*
+                                * IRQ not connected
+                                * Lines:
+                                * 0 - IRPS5401_ALERT_B
+                                * 1 - HDMI_8T49N241_INT_ALM
+                                * 2 - MAX6643_OT_B
+                                * 3 - MAX6643_FANFAIL_B
+                                * 5 - IIC_MUX_RESET_B
+                                * 6 - GEM3_EXP_RESET_B
+                                * 7 - FMC_LPC_PRSNT_M2C_B
+                                * 4, 10 - 17 - not connected
+                                */
+                       };
+               };
+
+               i2c@5 { /* i2c mw 74 0 10 */ /* FMC_LPC */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               i2c@7 { /* i2c mw 74 0 14 */ /* DDR4_SODIMM */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+
+               /* 3, 6 not connected */
+       };
+};
+
+&pinctrl0 {
+       status = "okay";
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               mux-cd {
+                       groups = "sdio1_0_cd_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80"; /* n25q512a 128MiB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&lane3 PHY_TYPE_SATA 1 1 125000000>;
+};
+
+/* SD1 with level shifter */
+&sdhci1 {
+       status = "okay";
+       no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <1>;
+       disable-wp;
+};
+
+&serdes {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>;
+       maximum-speed = "super-speed";
+};
+
+&watchdog0 {
+       status = "okay";
+};
+
+&xilinx_ams {
+       status = "okay";
+};
+
+&ams_ps {
+       status = "okay";
+};
+
+&ams_pl {
+       status = "okay";
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 3 27000000>, <&lane0 PHY_TYPE_DP 1 3 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts
new file mode 100644 (file)
index 0000000..9015166
--- /dev/null
@@ -0,0 +1,937 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU106
+ *
+ * (C) Copyright 2016, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU106 RevA";
+       compatible = "xlnx,zynqmp-zcu106-revA", "xlnx,zynqmp-zcu106", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem3;
+               gpio0 = &gpio;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               mmc0 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+               sw19 {
+                       label = "sw19";
+                       gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
+                       linux,code = <108>; /* down */
+                       gpio-key,wakeup;
+                       autorepeat;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               heartbeat_led {
+                       label = "heartbeat";
+                       gpios = <&gpio 23 0>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&can1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
+};
+
+&dcc {
+       status = "okay";
+};
+
+/* fpd_dma clk 667MHz, lpd_dma 500MHz */
+&fpd_dma_chan1 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+       xlnx,overfetch; /* for testing purpose */
+       xlnx,ratectrl = <0>; /* for testing purpose */
+       xlnx,src-issue = <31>;
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+       xlnx,ratectrl = <100>; /* for testing purpose */
+       xlnx,src-issue = <4>; /* for testing purpose */
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+       xlnx,include-sg; /* for testing purpose */
+};
+
+&gem3 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy0: phy@c {
+               reg = <0xc>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,rxctrl-strap-worka;
+       };
+};
+
+&gpio {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
+
+       tca6416_u97: gpio@20 {
+               /*
+                * Enable all GTs to out from U-Boot
+                * i2c mw 20 6 0  - setup IO to output
+                * i2c mw 20 2 ef - setup output values on pins 0-7
+                * i2c mw 20 3 ff - setup output values on pins 10-17
+                */
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller; /* interrupt not connected */
+               #gpio-cells = <2>;
+               /*
+                * IRQ not connected
+                * Lines:
+                * 0 - SFP_SI5328_INT_ALM
+                * 1 - HDMI_SI5328_INT_ALM
+                * 5 - IIC_MUX_RESET_B
+                * 6 - GEM3_EXP_RESET_B
+                * 10 - FMC_HPC0_PRSNT_M2C_B
+                * 11 - FMC_HPC1_PRSNT_M2C_B
+                * 2-4, 7, 12-17 - not connected
+                */
+       };
+
+       tca6416_u61: gpio@21 { /* FIXME enable it by i2c mw 21 6 0 */
+               compatible = "ti,tca6416";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /*
+                * IRQ not connected
+                * Lines:
+                * 0 - VCCPSPLL_EN
+                * 1 - MGTRAVCC_EN
+                * 2 - MGTRAVTT_EN
+                * 3 - VCCPSDDRPLL_EN
+                * 4 - MIO26_PMU_INPUT_LS
+                * 5 - PL_PMBUS_ALERT
+                * 6 - PS_PMBUS_ALERT
+                * 7 - MAXIM_PMBUS_ALERT
+                * 10 - PL_DDR4_VTERM_EN
+                * 11 - PL_DDR4_VPP_2V5_EN
+                * 12 - PS_DIMM_VDDQ_TO_PSVCCO_ON
+                * 13 - PS_DIMM_SUSPEND_EN
+                * 14 - PS_DDR4_VTERM_EN
+                * 15 - PS_DDR4_VPP_2V5_EN
+                * 16 - 17 - not connected
+                */
+       };
+
+       i2cswitch@75 { /* u60 */
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2c@0 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /* PS_PMBUS */
+                       ina226@40 { /* u76 */
+                               compatible = "ti,ina226";
+                               reg = <0x40>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@41 { /* u77 */
+                               compatible = "ti,ina226";
+                               reg = <0x41>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@42 { /* u78 */
+                               compatible = "ti,ina226";
+                               reg = <0x42>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@43 { /* u87 */
+                               compatible = "ti,ina226";
+                               reg = <0x43>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@44 { /* u85 */
+                               compatible = "ti,ina226";
+                               reg = <0x44>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@45 { /* u86 */
+                               compatible = "ti,ina226";
+                               reg = <0x45>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@46 { /* u93 */
+                               compatible = "ti,ina226";
+                               reg = <0x46>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@47 { /* u88 */
+                               compatible = "ti,ina226";
+                               reg = <0x47>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@4a { /* u15 */
+                               compatible = "ti,ina226";
+                               reg = <0x4a>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@4b { /* u92 */
+                               compatible = "ti,ina226";
+                               reg = <0x4b>;
+                               shunt-resistor = <5000>;
+                       };
+               };
+               i2c@1 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /* PL_PMBUS */
+                       ina226@40 { /* u79 */
+                               compatible = "ti,ina226";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+                       ina226@41 { /* u81 */
+                               compatible = "ti,ina226";
+                               reg = <0x41>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@42 { /* u80 */
+                               compatible = "ti,ina226";
+                               reg = <0x42>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@43 { /* u84 */
+                               compatible = "ti,ina226";
+                               reg = <0x43>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@44 { /* u16 */
+                               compatible = "ti,ina226";
+                               reg = <0x44>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@45 { /* u65 */
+                               compatible = "ti,ina226";
+                               reg = <0x45>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@46 { /* u74 */
+                               compatible = "ti,ina226";
+                               reg = <0x46>;
+                               shunt-resistor = <5000>;
+                       };
+                       ina226@47 { /* u75 */
+                               compatible = "ti,ina226";
+                               reg = <0x47>;
+                               shunt-resistor = <5000>;
+                       };
+               };
+               i2c@2 { /* i2c mw 75 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /* MAXIM_PMBUS - 00 */
+                       max15301@a { /* u46 */
+                               compatible = "max15301";
+                               reg = <0xa>;
+                       };
+                       max15303@b { /* u4 */
+                               compatible = "max15303";
+                               reg = <0xb>;
+                       };
+                       max15303@10 { /* u13 */
+                               compatible = "max15303";
+                               reg = <0x10>;
+                       };
+                       max15301@13 { /* u47 */
+                               compatible = "max15301";
+                               reg = <0x13>;
+                       };
+                       max15303@14 { /* u7 */
+                               compatible = "max15303";
+                               reg = <0x14>;
+                       };
+                       max15303@15 { /* u6 */
+                               compatible = "max15303";
+                               reg = <0x15>;
+                       };
+                       max15303@16 { /* u10 */
+                               compatible = "max15303";
+                               reg = <0x16>;
+                       };
+                       max15303@17 { /* u9 */
+                               compatible = "max15303";
+                               reg = <0x17>;
+                       };
+                       max15301@18 { /* u63 */
+                               compatible = "max15301";
+                               reg = <0x18>;
+                       };
+                       max15303@1a { /* u49 */
+                               compatible = "max15303";
+                               reg = <0x1a>;
+                       };
+                       max15303@1b { /* u8 */
+                               compatible = "max15303";
+                               reg = <0x1b>;
+                       };
+                       max15303@1d { /* u18 */
+                               compatible = "max15303";
+                               reg = <0x1d>;
+                       };
+
+                       max20751@72 { /* u95 */
+                               compatible = "max20751";
+                               reg = <0x72>;
+                       };
+                       max20751@73 { /* u96 */
+                               compatible = "max20751";
+                               reg = <0x73>;
+                       };
+               };
+               /* Bus 3 is not connected */
+       };
+
+       /* FIXME PMOD - j160 */
+       /* FIXME MSP430F - u41 - not detected */
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+
+       /* FIXME PL i2c via PCA9306 - u45 */
+       /* FIXME MSP430 - u41 - not detected */
+       i2cswitch@74 { /* u34 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x74>;
+               i2c@0 { /* i2c mw 74 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * IIC_EEPROM 1kB memory which uses 256B blocks
+                        * where every block has different address.
+                        *    0 - 256B address 0x54
+                        * 256B - 512B address 0x55
+                        * 512B - 768B address 0x56
+                        * 768B - 1024B address 0x57
+                        */
+                       eeprom@54 { /* u23 */
+                               compatible = "at,24c08";
+                               reg = <0x54>;
+                       };
+               };
+               i2c@1 { /* i2c mw 74 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       si5341: clock-generator1@36 { /* SI5341 - u69 */
+                               compatible = "si5341";
+                               reg = <0x36>;
+                       };
+
+               };
+               i2c@2 { /* i2c mw 74 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       si570_1: clock-generator2@5d { /* USER SI570 - u42 */
+                               #clock-cells = <0>;
+                               compatible = "silabs,si570";
+                               reg = <0x5d>;
+                               temperature-stability = <50>;
+                               factory-fout = <300000000>;
+                               clock-frequency = <300000000>;
+                       };
+               };
+               i2c@3 { /* i2c mw 74 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       si570_2: clock-generator3@5d { /* USER MGT SI570 - u56 */
+                               #clock-cells = <0>;
+                               compatible = "silabs,si570";
+                               reg = <0x5d>;
+                               temperature-stability = <50>; /* copy from zc702 */
+                               factory-fout = <156250000>;
+                               clock-frequency = <148500000>;
+                       };
+               };
+               i2c@4 { /* i2c mw 74 0 10 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+                       si5328: clock-generator4@69 {/* SI5328 - u20 */
+                               compatible = "silabs,si5328";
+                               reg = <0x69>;
+                       };
+               };
+               i2c@5 { /* i2c mw 74 0 11 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>; /* FAN controller */
+                       temp@4c {/* lm96163 - u128 */
+                               compatible = "national,lm96163";
+                               reg = <0x4c>; /* FIXME */
+                       };
+               };
+               /* 6 - 7 unconnected */
+       };
+
+       i2cswitch@75 {
+               compatible = "nxp,pca9548"; /* u135 */
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /* HPC0_IIC */
+               };
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /* HPC1_IIC */
+               };
+               i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       /* SYSMON */
+               };
+               i2c@3 { /* i2c mw 75 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       /* DDR4 SODIMM */
+                       dev@19 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x19>;
+                       };
+                       dev@30 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x30>;
+                       };
+                       dev@35 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x35>;
+                       };
+                       dev@36 { /* u-boot detection */
+                               compatible = "xxx";
+                               reg = <0x36>;
+                       };
+                       dev@51 { /* u-boot detection - maybe SPD */
+                               compatible = "xxx";
+                               reg = <0x51>;
+                       };
+               };
+               i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+                       /* SEP 3 */
+               };
+               i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+                       /* SEP 2 */
+               };
+               i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+                       /* SEP 1 */
+               };
+               i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+                       /* SEP 0 */
+               };
+       };
+};
+
+&qspi {
+       status = "okay";
+       is-dual = <1>;
+       flash@0 {
+               compatible = "m25p80"; /* 32MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&lane3 PHY_TYPE_SATA 1 1 125000000>;
+};
+
+/* SD1 with level shifter */
+&sdhci1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <1>;
+};
+
+&serdes {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>;
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 3 27000000>, <&lane0 PHY_TYPE_DP 1 3 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_3_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_3_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_0_cd_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio1_0_wp_grp";
+                       function = "sdio1_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio1_0_wp_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux {
+                       function = "gpio0";
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+               };
+
+               conf {
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-msp {
+                       function = "gpio0";
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+               };
+
+               conf-msp {
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-pull-up {
+                       pins = "MIO22";
+                       bias-pull-up;
+               };
+
+               conf-pull-none {
+                       pins = "MIO13", "MIO23", "MIO38";
+                       bias-disable;
+               };
+       };
+};
index 68a908334c7b12846e74c16d5c7168d9276747dd..caee2724a504d87a4528bd4520925694125c5d9b 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu0: cpu@0 {
                        compatible = "arm,cortex-a53", "arm,armv8";
                        device_type = "cpu";
                        enable-method = "psci";
+                       operating-points-v2 = <&cpu_opp_table>;
                        reg = <0x0>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        compatible = "arm,cortex-a53", "arm,armv8";
                        device_type = "cpu";
                        enable-method = "psci";
                        reg = <0x1>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                };
 
-               cpu@2 {
+               cpu2: cpu@2 {
                        compatible = "arm,cortex-a53", "arm,armv8";
                        device_type = "cpu";
                        enable-method = "psci";
                        reg = <0x2>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                };
 
-               cpu@3 {
+               cpu3: cpu@3 {
                        compatible = "arm,cortex-a53", "arm,armv8";
                        device_type = "cpu";
                        enable-method = "psci";
                        reg = <0x3>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+
+               idle-states {
+                       entry-method = "arm,psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x40000000>;
+                               local-timer-stop;
+                               entry-latency-us = <300>;
+                               exit-latency-us = <600>;
+                               min-residency-us = <10000>;
+                       };
+               };
+       };
+
+       cpu_opp_table: cpu_opp_table {
+               compatible = "operating-points-v2";
+               opp-shared;
+               opp00 {
+                       opp-hz = /bits/ 64 <1199999988>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <599999994>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <399999996>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <299999997>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+       };
+
+       dcc: dcc {
+               compatible = "arm,dcc";
+               status = "disabled";
+               u-boot,dm-pre-reloc;
+       };
+
+       power-domains {
+               compatible = "xlnx,zynqmp-genpd";
+
+               pd_usb0: pd-usb0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x16>;
+               };
+
+               pd_usb1: pd-usb1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x17>;
+               };
+
+               pd_sata: pd-sata {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x1c>;
+               };
+
+               pd_spi0: pd-spi0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x23>;
+               };
+
+               pd_spi1: pd-spi1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x24>;
+               };
+
+               pd_uart0: pd-uart0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x21>;
+               };
+
+               pd_uart1: pd-uart1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x22>;
+               };
+
+               pd_eth0: pd-eth0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x1d>;
+               };
+
+               pd_eth1: pd-eth1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x1e>;
+               };
+
+               pd_eth2: pd-eth2 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x1f>;
+               };
+
+               pd_eth3: pd-eth3 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x20>;
+               };
+
+               pd_i2c0: pd-i2c0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x25>;
+               };
+
+               pd_i2c1: pd-i2c1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x26>;
+               };
+
+               pd_dp: pd-dp {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x29>;
+               };
+
+               pd_gdma: pd-gdma {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x2a>;
+               };
+
+               pd_adma: pd-adma {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x2b>;
+               };
+
+               pd_ttc0: pd-ttc0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x18>;
+               };
+
+               pd_ttc1: pd-ttc1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x19>;
+               };
+
+               pd_ttc2: pd-ttc2 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x1a>;
+               };
+
+               pd_ttc3: pd-ttc3 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x1b>;
+               };
+
+               pd_sd0: pd-sd0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x27>;
+               };
+
+               pd_sd1: pd-sd1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x28>;
+               };
+
+               pd_nand: pd-nand {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x2c>;
+               };
+
+               pd_qspi: pd-qspi {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x2d>;
+               };
+
+               pd_gpio: pd-gpio {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x2e>;
+               };
+
+               pd_can0: pd-can0 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x2f>;
+               };
+
+               pd_can1: pd-can1 {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x30>;
+               };
+
+               pd_pcie: pd-pcie {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x3b>;
+               };
+
+               pd_gpu: pd-gpu {
+                       #power-domain-cells = <0x0>;
+                       pd-id = <0x3a 0x14 0x15>;
                };
        };
 
                method = "smc";
        };
 
+       pmufw: firmware {
+               compatible = "xlnx,zynqmp-pm";
+               method = "smc";
+               interrupt-parent = <&gic>;
+               interrupts = <0 35 4>;
+       };
+
        timer {
                compatible = "arm,armv8-timer";
                interrupt-parent = <&gic>;
                             <1 10 0xf08>;
        };
 
-       amba_apu {
+       edac {
+               compatible = "arm,cortex-a53-edac";
+       };
+
+       fpga_full: fpga-full {
+               compatible = "fpga-region";
+               fpga-mgr = <&pcap>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+       };
+
+       nvmem_firmware {
+               compatible = "xlnx,zynqmp-nvmem-fw";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               soc_revision: soc_revision@0 {
+                       reg = <0x0 0x4>;
+               };
+       };
+
+       pcap: pcap {
+               compatible = "xlnx,zynqmp-pcap-fpga";
+       };
+
+       rst: reset-controller {
+               compatible = "xlnx,zynqmp-reset";
+               #reset-cells = <1>;
+       };
+
+       xlnx_dp_snd_card: dp_snd_card {
+               compatible = "xlnx,dp-snd-card";
+               status = "disabled";
+               xlnx,dp-snd-pcm = <&xlnx_dp_snd_pcm0>, <&xlnx_dp_snd_pcm1>;
+               xlnx,dp-snd-codec = <&xlnx_dp_snd_codec0>;
+       };
+
+       xlnx_dp_snd_codec0: dp_snd_codec0 {
+               compatible = "xlnx,dp-snd-codec";
+               status = "disabled";
+               clock-names = "aud_clk";
+       };
+
+       xlnx_dp_snd_pcm0: dp_snd_pcm0 {
+               compatible = "xlnx,dp-snd-pcm";
+               status = "disabled";
+               dmas = <&xlnx_dpdma 4>;
+               dma-names = "tx";
+       };
+
+       xlnx_dp_snd_pcm1: dp_snd_pcm1 {
+               compatible = "xlnx,dp-snd-pcm";
+               status = "disabled";
+               dmas = <&xlnx_dpdma 5>;
+               dma-names = "tx";
+       };
+
+       xilinx_drm: xilinx_drm {
+               compatible = "xlnx,drm";
+               status = "disabled";
+               xlnx,encoder-slave = <&xlnx_dp>;
+               xlnx,connector-type = "DisplayPort";
+               xlnx,dp-sub = <&xlnx_dp_sub>;
+               planes {
+                       xlnx,pixel-format = "rgb565";
+                       plane0 {
+                               dmas = <&xlnx_dpdma 3>;
+                               dma-names = "dma0";
+                       };
+                       plane1 {
+                               dmas = <&xlnx_dpdma 0>,
+                                       <&xlnx_dpdma 1>,
+                                       <&xlnx_dpdma 2>;
+                               dma-names = "dma0", "dma1", "dma2";
+                       };
+               };
+       };
+
+       amba_apu: amba_apu@0 {
                compatible = "simple-bus";
                #address-cells = <2>;
                #size-cells = <1>;
 
        amba: amba {
                compatible = "simple-bus";
+               u-boot,dm-pre-reloc;
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                        interrupt-parent = <&gic>;
                        tx-fifo-depth = <0x40>;
                        rx-fifo-depth = <0x40>;
+                       power-domains = <&pd_can0>;
                };
 
                can1: can@ff070000 {
                        interrupt-parent = <&gic>;
                        tx-fifo-depth = <0x40>;
                        rx-fifo-depth = <0x40>;
+                       power-domains = <&pd_can1>;
+               };
+
+               cci: cci@fd6e0000 {
+                       compatible = "arm,cci-400";
+                       reg = <0x0 0xfd6e0000 0x0 0x9000>;
+                       ranges = <0x0 0x0 0xfd6e0000 0x10000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       pmu@9000 {
+                               compatible = "arm,cci-400-pmu,r1";
+                               reg = <0x9000 0x5000>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <0 123 4>,
+                                            <0 123 4>,
+                                            <0 123 4>,
+                                            <0 123 4>,
+                                            <0 123 4>;
+                       };
+               };
+
+               /* GDMA */
+               fpd_dma_chan1: dma@fd500000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd500000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 124 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14e8>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan2: dma@fd510000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd510000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 125 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14e9>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan3: dma@fd520000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd520000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 126 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ea>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan4: dma@fd530000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd530000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 127 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14eb>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan5: dma@fd540000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd540000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 128 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ec>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan6: dma@fd550000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd550000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 129 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ed>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan7: dma@fd560000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd560000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 130 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ee>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               fpd_dma_chan8: dma@fd570000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       reg = <0x0 0xfd570000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 131 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ef>;
+                       power-domains = <&pd_gdma>;
+               };
+
+               gpu: gpu@fd4b0000 {
+                       status = "disabled";
+                       compatible = "arm,mali-400", "arm,mali-utgard";
+                       reg = <0x0 0xfd4b0000 0x0 0x10000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>;
+                       interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1";
+                       clock-names = "gpu", "gpu_pp0", "gpu_pp1";
+                       power-domains = <&pd_gpu>;
+               };
+
+               /* LPDDMA default allows only secured access. inorder to enable
+                * These dma channels, Users should ensure that these dma
+                * Channels are allowed for non secure access.
+                */
+               lpd_dma_chan1: dma@ffa80000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffa80000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 77 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x868>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan2: dma@ffa90000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffa90000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 78 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x869>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan3: dma@ffaa0000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffaa0000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 79 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x86a>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan4: dma@ffab0000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffab0000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 80 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x86b>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan5: dma@ffac0000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffac0000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 81 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x86c>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan6: dma@ffad0000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffad0000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 82 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x86d>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan7: dma@ffae0000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffae0000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 83 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x86e>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               lpd_dma_chan8: dma@ffaf0000 {
+                       status = "disabled";
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       clock-names = "clk_main", "clk_apb";
+                       reg = <0x0 0xffaf0000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 84 4>;
+                       xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       /* iommus = <&smmu 0x86f>; */
+                       power-domains = <&pd_adma>;
+               };
+
+               mc: memory-controller@fd070000 {
+                       compatible = "xlnx,zynqmp-ddrc-2.40a";
+                       reg = <0x0 0xfd070000 0x0 0x30000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 112 4>;
+               };
+
+               nand0: nand@ff100000 {
+                       compatible = "arasan,nfc-v3p10";
+                       status = "disabled";
+                       reg = <0x0 0xff100000 0x0 0x1000>;
+                       clock-names = "clk_sys", "clk_flash";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 14 4>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x872>;
+                       power-domains = <&pd_nand>;
                };
 
                gem0: ethernet@ff0b0000 {
-                       compatible = "cdns,gem";
+                       compatible = "cdns,zynqmp-gem";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 57 4>, <0 57 4>;
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x874>;
+                       power-domains = <&pd_eth0>;
                };
 
                gem1: ethernet@ff0c0000 {
-                       compatible = "cdns,gem";
+                       compatible = "cdns,zynqmp-gem";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 59 4>, <0 59 4>;
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x875>;
+                       power-domains = <&pd_eth1>;
                };
 
                gem2: ethernet@ff0d0000 {
-                       compatible = "cdns,gem";
+                       compatible = "cdns,zynqmp-gem";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 61 4>, <0 61 4>;
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x876>;
+                       power-domains = <&pd_eth2>;
                };
 
                gem3: ethernet@ff0e0000 {
-                       compatible = "cdns,gem";
+                       compatible = "cdns,zynqmp-gem";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 63 4>, <0 63 4>;
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x877>;
+                       power-domains = <&pd_eth3>;
                };
 
                gpio: gpio@ff0a0000 {
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        reg = <0x0 0xff0a0000 0x0 0x1000>;
+                       gpio-controller;
+                       power-domains = <&pd_gpio>;
                };
 
                i2c0: i2c@ff020000 {
-                       compatible = "cdns,i2c-r1p10";
+                       compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 17 4>;
                        reg = <0x0 0xff020000 0x0 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       power-domains = <&pd_i2c0>;
                };
 
                i2c1: i2c@ff030000 {
-                       compatible = "cdns,i2c-r1p10";
+                       compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 18 4>;
                        reg = <0x0 0xff030000 0x0 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       power-domains = <&pd_i2c1>;
+               };
+
+               ocm: memory-controller@ff960000 {
+                       compatible = "xlnx,zynqmp-ocmc-1.0";
+                       reg = <0x0 0xff960000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 10 4>;
                };
 
                pcie: pcie@fd0e0000 {
                        device_type = "pci";
                        interrupt-parent = <&gic>;
                        interrupts = <0 118 4>,
-                                   <0 117 4>,
-                                   <0 116 4>,
-                                   <0 115 4>,  /* MSI_1 [63...32] */
-                                   <0 114 4>;  /* MSI_0 [31...0] */
-                       interrupt-names = "misc", "dummy", "intx",
-                                         "msi1", "msi0";
+                                    <0 117 4>,
+                                    <0 116 4>,
+                                    <0 115 4>, /* MSI_1 [63...32] */
+                                    <0 114 4>; /* MSI_0 [31...0] */
+                       interrupt-names = "misc","dummy","intx", "msi1", "msi0";
                        msi-parent = <&pcie>;
                        reg = <0x0 0xfd0e0000 0x0 0x1000>,
                              <0x0 0xfd480000 0x0 0x1000>,
                              <0x80 0x00000000 0x0 0x1000000>;
                        reg-names = "breg", "pcireg", "cfg";
-                       ranges = <0x02000000 0x00000000 0xe0000000 0x00000000
-                                 0xe0000000 0x00000000 0x10000000
-                                 /* non-prefetchable memory */
-                                 0x43000000 0x00000006 0x00000000 0x00000006
-                                 0x00000000 0x00000002 0x00000000>;
-                                 /* prefetchable memory */
+                       ranges = <0x02000000 0x00000000 0xe0000000 0x00000000 0xe0000000 0x00000000 0x10000000  /* non-prefetchable memory */
+                                 0x43000000 0x00000006 0x00000000 0x00000006 0x00000000 0x00000002 0x00000000>;/* prefetchable memory */
+                       bus-range = <0x00 0xff>;
                        interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>,
                                        <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
                                        <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
                                        <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
+                       power-domains = <&pd_pcie>;
                        pcie_intc: legacy-interrupt-controller {
                                interrupt-controller;
                                #address-cells = <0>;
                        };
                };
 
+               qspi: spi@ff0f0000 {
+                       u-boot,dm-pre-reloc;
+                       compatible = "xlnx,zynqmp-qspi-1.0";
+                       status = "disabled";
+                       clock-names = "ref_clk", "pclk";
+                       interrupts = <0 15 4>;
+                       interrupt-parent = <&gic>;
+                       num-cs = <1>;
+                       reg = <0x0 0xff0f0000 0x0 0x1000>,
+                             <0x0 0xc0000000 0x0 0x8000000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x873>;
+                       power-domains = <&pd_qspi>;
+               };
+
+               rtc: rtc@ffa60000 {
+                       compatible = "xlnx,zynqmp-rtc";
+                       status = "disabled";
+                       reg = <0x0 0xffa60000 0x0 0x100>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 26 4>, <0 27 4>;
+                       interrupt-names = "alarm", "sec";
+                       calibration = <0x8000>;
+               };
+
+               serdes: zynqmp_phy@fd400000 {
+                       compatible = "xlnx,zynqmp-psgtr";
+                       status = "disabled";
+                       reg = <0x0 0xfd400000 0x0 0x40000>,
+                             <0x0 0xfd3d0000 0x0 0x1000>,
+                             <0x0 0xff5e0000 0x0 0x1000>;
+                       reg-names = "serdes", "siou", "lpd";
+                       nvmem-cells = <&soc_revision>;
+                       nvmem-cell-names = "soc_revision";
+                       resets = <&rst 16>, <&rst 59>, <&rst 60>,
+                                <&rst 61>, <&rst 62>, <&rst 63>,
+                                <&rst 64>, <&rst 3>, <&rst 29>,
+                                <&rst 30>, <&rst 31>, <&rst 32>;
+                       reset-names = "sata_rst", "usb0_crst", "usb1_crst",
+                                     "usb0_hibrst", "usb1_hibrst", "usb0_apbrst",
+                                     "usb1_apbrst", "dp_rst", "gem0_rst",
+                                     "gem1_rst", "gem2_rst", "gem3_rst";
+                       lane0: lane0 {
+                               #phy-cells = <4>;
+                       };
+                       lane1: lane1 {
+                               #phy-cells = <4>;
+                       };
+                       lane2: lane2 {
+                               #phy-cells = <4>;
+                       };
+                       lane3: lane3 {
+                               #phy-cells = <4>;
+                       };
+               };
+
                sata: ahci@fd0c0000 {
                        compatible = "ceva,ahci-1v84";
                        status = "disabled";
                        reg = <0x0 0xfd0c0000 0x0 0x2000>;
                        interrupt-parent = <&gic>;
                        interrupts = <0 133 4>;
+                       power-domains = <&pd_sata>;
+                       #stream-id-cells = <4>;
+                       iommus = <&smmu 0x4c0>, <&smmu 0x4c1>,
+                                <&smmu 0x4c2>, <&smmu 0x4c3>;
+                       /* dma-coherent; */
                };
 
                sdhci0: sdhci@ff160000 {
-                       compatible = "arasan,sdhci-8.9a";
+                       u-boot,dm-pre-reloc;
+                       compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 48 4>;
                        reg = <0x0 0xff160000 0x0 0x1000>;
                        clock-names = "clk_xin", "clk_ahb";
+                       xlnx,device_id = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x870>;
+                       power-domains = <&pd_sd0>;
+                       nvmem-cells = <&soc_revision>;
+                       nvmem-cell-names = "soc_revision";
                };
 
                sdhci1: sdhci@ff170000 {
-                       compatible = "arasan,sdhci-8.9a";
+                       u-boot,dm-pre-reloc;
+                       compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 49 4>;
                        reg = <0x0 0xff170000 0x0 0x1000>;
                        clock-names = "clk_xin", "clk_ahb";
+                       xlnx,device_id = <1>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x871>;
+                       power-domains = <&pd_sd1>;
+                       nvmem-cells = <&soc_revision>;
+                       nvmem-cell-names = "soc_revision";
+               };
+
+               pinctrl0: pinctrl@ff180000 {
+                       compatible = "xlnx,pinctrl-zynqmp";
+                       status = "disabled";
+                       reg = <0x0 0xff180000 0x0 0x1000>;
                };
 
                smmu: smmu@fd800000 {
                        compatible = "arm,mmu-500";
                        reg = <0x0 0xfd800000 0x0 0x20000>;
+                       #iommu-cells = <1>;
+                       status = "disabled";
                        #global-interrupts = <1>;
                        interrupt-parent = <&gic>;
-                       interrupts = <0 157 4>,
-                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>,
-                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>,
-                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>,
-                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>;
+                       interrupts = <0 155 4>,
+                               <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
+                               <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
+                               <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
+                               <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>;
                };
 
                spi0: spi@ff040000 {
                        clock-names = "ref_clk", "pclk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       power-domains = <&pd_spi0>;
                };
 
                spi1: spi@ff050000 {
                        clock-names = "ref_clk", "pclk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       power-domains = <&pd_spi1>;
                };
 
                ttc0: timer@ff110000 {
                        interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
                        reg = <0x0 0xff110000 0x0 0x1000>;
                        timer-width = <32>;
+                       power-domains = <&pd_ttc0>;
                };
 
                ttc1: timer@ff120000 {
                        interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
                        reg = <0x0 0xff120000 0x0 0x1000>;
                        timer-width = <32>;
+                       power-domains = <&pd_ttc1>;
                };
 
                ttc2: timer@ff130000 {
                        interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
                        reg = <0x0 0xff130000 0x0 0x1000>;
                        timer-width = <32>;
+                       power-domains = <&pd_ttc2>;
                };
 
                ttc3: timer@ff140000 {
                        interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
                        reg = <0x0 0xff140000 0x0 0x1000>;
                        timer-width = <32>;
+                       power-domains = <&pd_ttc3>;
                };
 
                uart0: serial@ff000000 {
-                       compatible = "cdns,uart-r1p8";
+                       u-boot,dm-pre-reloc;
+                       compatible = "cdns,uart-r1p12", "xlnx,xuartps";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 21 4>;
                        reg = <0x0 0xff000000 0x0 0x1000>;
                        clock-names = "uart_clk", "pclk";
+                       power-domains = <&pd_uart0>;
                };
 
                uart1: serial@ff010000 {
-                       compatible = "cdns,uart-r1p8";
+                       u-boot,dm-pre-reloc;
+                       compatible = "cdns,uart-r1p12", "xlnx,xuartps";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 22 4>;
                        reg = <0x0 0xff010000 0x0 0x1000>;
                        clock-names = "uart_clk", "pclk";
+                       power-domains = <&pd_uart1>;
                };
 
-               usb0: usb@fe200000 {
-                       compatible = "snps,dwc3";
+               usb0: usb0@ff9d0000 {
+                       #address-cells = <2>;
+                       #size-cells = <2>;
                        status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 65 4>;
-                       reg = <0x0 0xfe200000 0x0 0x40000>;
-                       clock-names = "clk_xin", "clk_ahb";
+                       compatible = "xlnx,zynqmp-dwc3";
+                       reg = <0x0 0xff9d0000 0x0 0x100>;
+                       clock-names = "bus_clk", "ref_clk";
+                       power-domains = <&pd_usb0>;
+                       ranges;
+                       nvmem-cells = <&soc_revision>;
+                       nvmem-cell-names = "soc_revision";
+
+                       dwc3_0: dwc3@fe200000 {
+                               compatible = "snps,dwc3";
+                               status = "disabled";
+                               reg = <0x0 0xfe200000 0x0 0x40000>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <0 65 4>, <0 69 4>;
+                               #stream-id-cells = <1>;
+                               iommus = <&smmu 0x860>;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               snps,refclk_fladj;
+                               snps,enable_guctl1_resume_quirk;
+                               snps,enable_guctl1_ipd_quirk;
+                               snps,xhci-stream-quirk;
+                               /* dma-coherent; */
+                       };
                };
 
-               usb1: usb@fe300000 {
-                       compatible = "snps,dwc3";
+               usb1: usb1@ff9e0000 {
+                       #address-cells = <2>;
+                       #size-cells = <2>;
                        status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 70 4>;
-                       reg = <0x0 0xfe300000 0x0 0x40000>;
-                       clock-names = "clk_xin", "clk_ahb";
+                       compatible = "xlnx,zynqmp-dwc3";
+                       reg = <0x0 0xff9e0000 0x0 0x100>;
+                       clock-names = "bus_clk", "ref_clk";
+                       power-domains = <&pd_usb1>;
+                       ranges;
+                       nvmem-cells = <&soc_revision>;
+                       nvmem-cell-names = "soc_revision";
+
+                       dwc3_1: dwc3@fe300000 {
+                               compatible = "snps,dwc3";
+                               status = "disabled";
+                               reg = <0x0 0xfe300000 0x0 0x40000>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <0 70 4>, <0 74 4>;
+                               #stream-id-cells = <1>;
+                               iommus = <&smmu 0x861>;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               snps,refclk_fladj;
+                               snps,enable_guctl1_resume_quirk;
+                               snps,enable_guctl1_ipd_quirk;
+                               snps,xhci-stream-quirk;
+                               /* dma-coherent; */
+                       };
                };
 
                watchdog0: watchdog@fd4d0000 {
                        reg = <0x0 0xfd4d0000 0x0 0x1000>;
                        timeout-sec = <10>;
                };
+
+               xilinx_ams: ams@ffa50000 {
+                       compatible = "xlnx,zynqmp-ams";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 56 4>;
+                       interrupt-names = "ams-irq";
+                       reg = <0x0 0xffa50000 0x0 0x800>;
+                       reg-names = "ams-base";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       #io-channel-cells = <1>;
+                       ranges;
+
+                       ams_ps: ams_ps@ffa50800 {
+                               compatible = "xlnx,zynqmp-ams-ps";
+                               status = "disabled";
+                               reg = <0x0 0xffa50800 0x0 0x400>;
+                       };
+
+                       ams_pl: ams_pl@ffa50c00 {
+                               compatible = "xlnx,zynqmp-ams-pl";
+                               status = "disabled";
+                               reg = <0x0 0xffa50c00 0x0 0x400>;
+                       };
+               };
+
+               xlnx_dp: dp@fd4a0000 {
+                       compatible = "xlnx,v-dp";
+                       status = "disabled";
+                       reg = <0x0 0xfd4a0000 0x0 0x1000>;
+                       interrupts = <0 119 4>;
+                       interrupt-parent = <&gic>;
+                       clock-names = "aclk", "aud_clk";
+                       power-domains = <&pd_dp>;
+                       xlnx,dp-version = "v1.2";
+                       xlnx,max-lanes = <2>;
+                       xlnx,max-link-rate = <540000>;
+                       xlnx,max-bpc = <16>;
+                       xlnx,enable-ycrcb;
+                       xlnx,colormetry = "rgb";
+                       xlnx,bpc = <8>;
+                       xlnx,audio-chan = <2>;
+                       xlnx,dp-sub = <&xlnx_dp_sub>;
+                       xlnx,max-pclock-frequency = <300000>;
+               };
+
+               xlnx_dp_sub: dp_sub@fd4aa000 {
+                       compatible = "xlnx,dp-sub";
+                       status = "disabled";
+                       reg = <0x0 0xfd4aa000 0x0 0x1000>,
+                             <0x0 0xfd4ab000 0x0 0x1000>,
+                             <0x0 0xfd4ac000 0x0 0x1000>;
+                       reg-names = "blend", "av_buf", "aud";
+                       xlnx,output-fmt = "rgb";
+                       xlnx,vid-fmt = "yuyv";
+                       xlnx,gfx-fmt = "rgb565";
+                       power-domains = <&pd_dp>;
+               };
+
+               xlnx_dpdma: dma@fd4c0000 {
+                       compatible = "xlnx,dpdma";
+                       status = "disabled";
+                       reg = <0x0 0xfd4c0000 0x0 0x1000>;
+                       interrupts = <0 122 4>;
+                       interrupt-parent = <&gic>;
+                       clock-names = "axi_clk";
+                       power-domains = <&pd_dp>;
+                       dma-channels = <6>;
+                       #dma-cells = <1>;
+                       dma-video0channel {
+                               compatible = "xlnx,video0";
+                       };
+                       dma-video1channel {
+                               compatible = "xlnx,video1";
+                       };
+                       dma-video2channel {
+                               compatible = "xlnx,video2";
+                       };
+                       dma-graphicschannel {
+                               compatible = "xlnx,graphics";
+                       };
+                       dma-audio0channel {
+                               compatible = "xlnx,audio0";
+                       };
+                       dma-audio1channel {
+                               compatible = "xlnx,audio1";
+                       };
+               };
        };
 };