diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts new file mode 100644 index 00000000000000..ab57cc761542c5 --- /dev/null +++ b/arch/arm/boot/dts/zynq-parallella.dts @@ -0,0 +1,409 @@ +/dts-v1/; + +/ { + compatible = "xlnx,zynq-7000"; + #address-cells = <0x1>; + #size-cells = <0x1>; + interrupt-parent = <0x1>; + model = "Xilinx Zynq ZED"; + + cpus { + #address-cells = <0x1>; + #cpus = <0x2>; + #size-cells = <0x0>; + + cpu@0 { + compatible = "arm,cortex-a9"; + d-cache-line-size = <0x20>; + d-cache-size = <0x8000>; + device_type = "cpu"; + i-cache-line-size = <0x20>; + i-cache-size = <0x8000>; + reg = <0x0>; + }; + + cpu@1 { + compatible = "arm,cortex-a9"; + d-cache-line-size = <0x20>; + d-cache-size = <0x8000>; + device_type = "cpu"; + i-cache-line-size = <0x20>; + i-cache-size = <0x8000>; + reg = <0x1>; + }; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0x0 0x5 0x4 0x0 0x6 0x4>; + interrupt-parent = <0x1>; + }; + + aliases { + ethernet0 = "/amba@0/eth@e000b000"; + serial0 = "/amba@0/uart@e0001000"; + }; + + amba@0 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + + intc@f8f01000 { + interrupt-controller; + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <0x3>; + reg = <0xf8f01000 0x1000 0xf8f00100 0x100>; + linux,phandle = <0x1>; + phandle = <0x1>; + }; + + pl310@f8f02000 { + compatible = "arm,pl310-cache"; + cache-unified; + cache-level = <0x2>; + reg = <0xf8f02000 0x1000>; + arm,data-latency = <0x3 0x2 0x2>; + arm,tag-latency = <0x2 0x2 0x2>; + }; + + uart@e0001000 { + compatible = "xlnx,ps7-uart-1.00.a"; + reg = <0xe0001000 0x1000>; + interrupts = <0x0 0x32 0x4>; + interrupt-parent = <0x1>; + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x18 0x2 0x29>; + port-number = <0x0>; + current-speed = <0x1c200>; + device_type = "serial"; + }; + + ps7-dma@f8003000 { + #dma-cells = <0x1>; + #dma-channels = <0x8>; + #dma-requests = <0x4>; + compatible = "arm,primecell", "arm,pl330"; + interrupt-parent = <0x1>; + interrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>; + reg = <0xf8003000 0x1000>; + clocks = <0x2 0x1b>; + clock-names = "apb_pclk"; + linux,phandle = <0x8>; + phandle = <0x8>; + }; + + slcr@f8000000 { + compatible = "xlnx,ps7-slcr-1.00.a", "xlnx,zynq-slcr"; + reg = <0xf8000000 0x1000>; + + clocks { + #address-cells = <0x1>; + #size-cells = <0x0>; + + clkc { + #clock-cells = <0x1>; + clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb"; + compatible = "xlnx,ps7-clkc"; + ps-clk-frequency = <0x1fca055>; + fclk-enable = <0xf>; + linux,phandle = <0x2>; + phandle = <0x2>; + }; + }; + }; + + timer@0xf8001000 { + compatible = "xlnx,ps7-ttc-1.00.a"; + reg = <0xf8001000 0x1000>; + interrupt-names = "ttc0", "ttc1", "ttc2"; + interrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>; + interrupt-parent = <0x1>; + clocks = <0x2 0x6>; + }; + + timer@f8f00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xf8f00600 0x20>; + interrupts = <0x1 0xd 0x301>; + clocks = <0x2 0x4>; + interrupt-parent = <0x1>; + }; + + swdt@f8005000 { + device_type = "watchdog"; + compatible = "xlnx,ps7-wdt-1.00.a"; + reg = <0xf8005000 0x100>; + interrupts = <0x0 0x9 0x4>; + interrupt-parent = <0x1>; + clocks = <0x2 0x2d>; + reset = <0x0>; + timeout = <0xa>; + }; + + scuwdt@f8f00620 { + device_type = "watchdog"; + compatible = "arm,mpcore_wdt"; + reg = <0xf8f00620 0x20>; + clocks = <0x2 0x4>; + reset = <0x1>; + }; + + eth@e000b000 { + compatible = "xlnx,ps7-ethernet-1.00.a"; + reg = <0xe000b000 0x1000>; + interrupts = <0x0 0x16 0x4>; + interrupt-parent = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x0>; + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0xd 0x2 0x1e>; + xlnx,enet-clk-freq-hz = <0x17d7840>; + xlnx,enet-reset = "MIO 11"; + xlnx,enet-slcr-1000mbps-div0 = <0x8>; + xlnx,enet-slcr-1000mbps-div1 = <0x1>; + xlnx,enet-slcr-100mbps-div0 = <0x8>; + xlnx,enet-slcr-100mbps-div1 = <0x5>; + xlnx,enet-slcr-10mbps-div0 = <0x8>; + xlnx,enet-slcr-10mbps-div1 = <0x32>; + xlnx,eth-mode = <0x1>; + xlnx,has-mdio = <0x1>; + xlnx,ptp-enet-clock = <0x69f6bcb>; + phy-handle = <0x3>; + phy-mode = "rgmii-id"; + + phy@0 { + compatible = "marvell,88e1510"; + device_type = "ethernet-phy"; + reg = <0x0>; + marvell,reg-init = <0x3 0x10 0xff00 0x1e 0x3 0x11 0xfff0 0xa>; + linux,phandle = <0x3>; + phandle = <0x3>; + }; + }; + + gpio@e000a000 { + compatible = "xlnx,ps7-gpio-1.00.a"; + reg = <0xe000a000 0x1000>; + interrupts = <0x0 0x14 0x4>; + interrupt-parent = <0x1>; + clocks = <0x2 0x2a>; + gpio-controller; + #gpio-cells = <0x2>; + linux,phandle = <0x4>; + phandle = <0x4>; + }; + + sdhci@e0101000 { + compatible = "xlnx,ps7-sdhci-1.00.a"; + reg = <0xe0101000 0x1000>; + interrupts = <0x0 0x2f 0x0>; + interrupt-parent = <0x1>; + clock-names = "clk_xin", "clk_ahb"; + clocks = <0x2 0x16 0x2 0x21>; + xlnx,has-cd = <0x0>; + clock-frequency = <0x2faf080>; + }; + + usb@e0002000 { + compatible = "xlnx,ps7-usb-1.00.a"; + reg = <0xe0002000 0x1000>; + interrupts = <0x0 0x15 0x4>; + interrupt-parent = <0x1>; + clocks = <0x2 0x1c>; + dr_mode = "host"; + phy_type = "ulpi"; + xlnx,phy-reset-gpio = <0x4 0x55 0x0>; + }; + + qspi@e000d000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + bus-num = <0x0>; + compatible = "xlnx,ps7-qspi-1.00.a"; + interrupt-parent = <0x1>; + interrupts = <0x0 0x13 0x4>; + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0xa 0x2 0x2b>; + is-dual = <0x0>; + num-chip-select = <0x1>; + reg = <0xe000d000 0x1000>; + xlnx,fb-clk = <0x1>; + xlnx,qspi-clk-freq-hz = <0xbebc200>; + xlnx,qspi-mode = <0x0>; + + ps7-qspi@0 { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "st,m25p80"; + reg = <0x0>; + spi-max-frequency = <0x2faf080>; + + partition@0x00000000 { + label = "boot"; + reg = <0x0 0x500000>; + }; + + partition@0x00500000 { + label = "bootenv"; + reg = <0x500000 0x20000>; + }; + + partition@0x00520000 { + label = "config"; + reg = <0x520000 0x20000>; + }; + + partition@0x00540000 { + label = "image"; + reg = <0x540000 0xa80000>; + }; + + partition@0x00fc0000 { + label = "spare"; + reg = <0xfc0000 0x0>; + }; + }; + }; + + devcfg@f8007000 { + compatible = "xlnx,ps7-dev-cfg-1.00.a"; + reg = <0xf8007000 0x100>; + interrupts = <0x0 0x8 0x4>; + interrupt-parent = <0x1>; + clocks = <0x2 0xc 0x2 0xf 0x2 0x10 0x2 0x11 0x2 0x12>; + clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; + }; + + xadc@f8007100 { + compatible = "xlnx,ps7-xadc-1.00.a"; + reg = <0xf8007100 0x20>; + interrupts = <0x0 0x7 0x4>; + interrupt-parent = <0x1>; + clocks = <0x2 0xc>; + }; + + ps7-ddrc@f8006000 { + compatible = "xlnx,ps7-ddrc-1.00.a", "xlnx,ps7-ddrc"; + reg = <0xf8006000 0x1000>; + xlnx,has-ecc = <0x0>; + }; + + ps7-ocm@0xfffc0000 { + compatible = "xlnx,ps7-ocm"; + reg = <0xfffc0000 0x40000>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; + + chosen { + bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0"; + linux,stdout-path = "/amba@0/uart@E0001000"; + }; + + i2c@e0004000 { + compatible = "xlnx,ps7-i2c-1.00.a"; + reg = <0xe0004000 0x1000>; + interrupts = <0x0 0x19 0x4>; + interrupt-parent = <0x1>; + bus-id = <0x0>; + clocks = <0x2 0x26>; + i2c-clk = <0x186a0>; + #address-cells = <0x1>; + #size-cells = <0x0>; + + adv7511@39 { + compatible = "adi,adv7511"; + reg = <0x39>; + adi,input-style = <0x2>; + adi,input-id = <0x1>; + adi,input-color-depth = <0x0>; + adi,sync-pulse = <0x3>; + adi,bit-justification = <0x0>; + adi,up-conversion = <0x0>; + adi,timing-generation-sequence = <0x0>; + adi,vsync-polarity = <0x2>; + adi,hsync-polarity = <0x2>; + adi,tdms-clock-inversion; + adi,clock-delay = <0x3>; + linux,phandle = <0x5>; + phandle = <0x5>; + }; + }; + + fpga-axi@0 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + + axivdma@43000000 { + compatible = "xlnx,axi-vdma"; + #address-cells = <0x1>; + #size-cells = <0x1>; + #dma-cells = <0x1>; + #dma-channels = <0x1>; + reg = <0x43000000 0x1000>; + xlnx,include-sg = <0x0>; + xlnx,num-fstores = <0x3>; + linux,phandle = <0x6>; + phandle = <0x6>; + + dma-channel@43000000 { + compatible = "xlnx,axi-vdma-mm2s-channel"; + interrupts = <0x0 0x3b 0x4>; + xlnx,datawidth = <0x40>; + xlnx,genlock-mode = <0x0>; + xlnx,include-dre = <0x0>; + }; + }; + + axi-clkgen@66000000 { + compatible = "adi,axi-clkgen-1.00.a"; + reg = <0x66000000 0x10000>; + #clock-cells = <0x0>; + clocks = <0x2 0x11>; + linux,phandle = <0x7>; + phandle = <0x7>; + }; + + axi_hdmi@6C000000 { + compatible = "adi,axi-hdmi-1.00.a"; + reg = <0x6c000000 0x10000>; + encoder-slave = <0x5>; + dmas = <0x6 0x0>; + dma-names = "video"; + clocks = <0x7>; + }; + + audio_clock { + compatible = "fixed-clock"; + #clock-cells = <0x0>; + clock-frequency = <0xbb8000>; + linux,phandle = <0x9>; + phandle = <0x9>; + }; + + axi-spdif-tx@0x75c00000 { + compatible = "adi,axi-spdif-tx-1.00.a"; + reg = <0x75c00000 0x1000>; + dmas = <0x8 0x0>; + dma-names = "tx"; + clocks = <0x2 0xf 0x9>; + clock-names = "axi", "spdif"; + linux,phandle = <0xa>; + phandle = <0xa>; + }; + + adv7511_hdmi_snd { + compatible = "adv7511-hdmi-snd"; + audio-codec = <0x5>; + cpu-dai = <0xa>; + }; + }; +};