12e36db14SWarner Losh/*- 22e36db14SWarner Losh * Copyright (c) 2016 The FreeBSD Foundation 32e36db14SWarner Losh * All rights reserved. 42e36db14SWarner Losh * 52e36db14SWarner Losh * Redistribution and use in source and binary forms, with or without 62e36db14SWarner Losh * modification, are permitted provided that the following conditions 72e36db14SWarner Losh * are met: 82e36db14SWarner Losh * 1. Redistributions of source code must retain the above copyright 92e36db14SWarner Losh * notice, this list of conditions and the following disclaimer. 102e36db14SWarner Losh * 2. Redistributions in binary form must reproduce the above copyright 112e36db14SWarner Losh * notice, this list of conditions and the following disclaimer in the 122e36db14SWarner Losh * documentation and/or other materials provided with the distribution. 132e36db14SWarner Losh * 142e36db14SWarner Losh * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 152e36db14SWarner Losh * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 162e36db14SWarner Losh * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 172e36db14SWarner Losh * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 182e36db14SWarner Losh * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 192e36db14SWarner Losh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 202e36db14SWarner Losh * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 212e36db14SWarner Losh * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 222e36db14SWarner Losh * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 232e36db14SWarner Losh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 242e36db14SWarner Losh * SUCH DAMAGE. 252e36db14SWarner Losh * 262e36db14SWarner Losh */ 272e36db14SWarner Losh 282e36db14SWarner Losh/ { 292e36db14SWarner Losh compatible = "xlnx,zynq-7000"; 302e36db14SWarner Losh #address-cells = <1>; 312e36db14SWarner Losh #size-cells = <1>; 322e36db14SWarner Losh interrupt-parent = <&GIC>; 332e36db14SWarner Losh 342e36db14SWarner Losh // Reserve first half megabyte because it is not accessible to all 352e36db14SWarner Losh // bus masters. 362e36db14SWarner Losh memreserve = <0x00000000 0x00080000>; 372e36db14SWarner Losh 382e36db14SWarner Losh // Zynq PS System registers. 392e36db14SWarner Losh // 402e36db14SWarner Losh ps7sys@f8000000 { 412e36db14SWarner Losh device_type = "soc"; 422e36db14SWarner Losh compatible = "simple-bus"; 432e36db14SWarner Losh #address-cells = <1>; 442e36db14SWarner Losh #size-cells = <1>; 452e36db14SWarner Losh ranges = <0x0 0xf8000000 0xf10000>; 462e36db14SWarner Losh 472e36db14SWarner Losh // SLCR block 482e36db14SWarner Losh slcr: slcr@7000 { 492e36db14SWarner Losh compatible = "xlnx,zy7_slcr"; 502e36db14SWarner Losh reg = <0x0 0x1000>; 512e36db14SWarner Losh }; 522e36db14SWarner Losh 532e36db14SWarner Losh // Interrupt controller 542e36db14SWarner Losh GIC: gic { 552e36db14SWarner Losh compatible = "arm,gic"; 562e36db14SWarner Losh interrupt-controller; 572e36db14SWarner Losh #address-cells = <0>; 582e36db14SWarner Losh #interrupt-cells = <3>; 592e36db14SWarner Losh reg = <0xf01000 0x1000>, // distributer registers 602e36db14SWarner Losh <0xf00100 0x0100>; // CPU if registers 612e36db14SWarner Losh }; 622e36db14SWarner Losh 632e36db14SWarner Losh // L2 cache controller 642e36db14SWarner Losh pl310@f02000 { 652e36db14SWarner Losh compatible = "arm,pl310"; 662e36db14SWarner Losh reg = <0xf02000 0x1000>; 672e36db14SWarner Losh interrupts = <0 2 4>; 682e36db14SWarner Losh interrupt-parent = <&GIC>; 692e36db14SWarner Losh }; 702e36db14SWarner Losh 712e36db14SWarner Losh // Device Config 722e36db14SWarner Losh devcfg: devcfg@7000 { 732e36db14SWarner Losh compatible = "xlnx,zy7_devcfg"; 742e36db14SWarner Losh reg = <0x7000 0x1000>; 752e36db14SWarner Losh interrupts = <0 8 4>; 762e36db14SWarner Losh interrupt-parent = <&GIC>; 772e36db14SWarner Losh }; 782e36db14SWarner Losh 792e36db14SWarner Losh // triple timer counters0,1 802e36db14SWarner Losh ttc0: ttc@1000 { 812e36db14SWarner Losh compatible = "xlnx,ttc"; 822e36db14SWarner Losh reg = <0x1000 0x1000>; 832e36db14SWarner Losh }; 842e36db14SWarner Losh 852e36db14SWarner Losh ttc1: ttc@2000 { 862e36db14SWarner Losh compatible = "xlnx,ttc"; 872e36db14SWarner Losh reg = <0x2000 0x1000>; 882e36db14SWarner Losh }; 892e36db14SWarner Losh 902e36db14SWarner Losh // ARM Cortex A9 TWD Timer 912e36db14SWarner Losh global_timer: timer@f00600 { 922e36db14SWarner Losh compatible = "arm,mpcore-timers"; 932e36db14SWarner Losh #address-cells = <1>; 942e36db14SWarner Losh #size-cells = <0>; 952e36db14SWarner Losh reg = <0xf00200 0x100>, // Global Timer Regs 962e36db14SWarner Losh <0xf00600 0x20>; // Private Timer Regs 972e36db14SWarner Losh interrupts = <1 11 1>, <1 13 1>; 982e36db14SWarner Losh interrupt-parent = <&GIC>; 992e36db14SWarner Losh }; 1002e36db14SWarner Losh 1012e36db14SWarner Losh // system watch-dog timer 1022e36db14SWarner Losh swdt@5000 { 1032e36db14SWarner Losh device_type = "watchdog"; 1042e36db14SWarner Losh compatible = "xlnx,zy7_wdt"; 1052e36db14SWarner Losh reg = <0x5000 0x1000>; 1062e36db14SWarner Losh interrupts = <0 9 1>; 1072e36db14SWarner Losh interrupt-parent = <&GIC>; 1082e36db14SWarner Losh }; 1092e36db14SWarner Losh 1102e36db14SWarner Losh scuwdt@f00620 { 1112e36db14SWarner Losh device_type = "watchdog"; 1122e36db14SWarner Losh compatible = "arm,mpcore_wdt"; 1132e36db14SWarner Losh reg = <0xf00620 0x20>; 1142e36db14SWarner Losh interrupts = <1 14 1>; 1152e36db14SWarner Losh interrupt-parent = <&GIC>; 1162e36db14SWarner Losh reset = <1>; 1172e36db14SWarner Losh }; 1182e36db14SWarner Losh 1192e36db14SWarner Losh }; // pssys@f8000000 1202e36db14SWarner Losh 1212e36db14SWarner Losh // Zynq PS I/O Peripheral registers. 1222e36db14SWarner Losh // 1232e36db14SWarner Losh ps7io@e0000000 { 1242e36db14SWarner Losh device_type = "soc"; 1252e36db14SWarner Losh compatible = "simple-bus"; 1262e36db14SWarner Losh #address-cells = <1>; 1272e36db14SWarner Losh #size-cells = <1>; 1282e36db14SWarner Losh ranges = <0x0 0xe0000000 0x300000>; 1292e36db14SWarner Losh 1302e36db14SWarner Losh // UART controllers 1312e36db14SWarner Losh uart0: uart@0000 { 1322e36db14SWarner Losh device_type = "serial"; 1332e36db14SWarner Losh compatible = "cadence,uart"; 1342e36db14SWarner Losh status = "disabled"; 1352e36db14SWarner Losh reg = <0x0000 0x1000>; 1362e36db14SWarner Losh interrupts = <0 27 4>; 1372e36db14SWarner Losh interrupt-parent = <&GIC>; 1382e36db14SWarner Losh clock-frequency = <50000000>; 1392e36db14SWarner Losh }; 1402e36db14SWarner Losh 1412e36db14SWarner Losh uart1: uart@1000 { 1422e36db14SWarner Losh device_type = "serial"; 1432e36db14SWarner Losh compatible = "cadence,uart"; 1442e36db14SWarner Losh status = "disabled"; 1452e36db14SWarner Losh reg = <0x1000 0x1000>; 1462e36db14SWarner Losh interrupts = <0 50 4>; 1472e36db14SWarner Losh interrupt-parent = <&GIC>; 1482e36db14SWarner Losh clock-frequency = <50000000>; 1492e36db14SWarner Losh }; 1502e36db14SWarner Losh 1512e36db14SWarner Losh // USB controllers 1522e36db14SWarner Losh ehci0: ehci@2000 { 1532e36db14SWarner Losh compatible = "xlnx,zy7_ehci"; 1542e36db14SWarner Losh status = "disabled"; 1552e36db14SWarner Losh reg = <0x2000 0x1000>; 1562e36db14SWarner Losh interrupts = <0 21 4>; 1572e36db14SWarner Losh interrupt-parent = <&GIC>; 1582e36db14SWarner Losh }; 1592e36db14SWarner Losh 1602e36db14SWarner Losh ehci1: ehci@3000 { 1612e36db14SWarner Losh compatible = "xlnx,zy7_ehci"; 1622e36db14SWarner Losh status = "disabled"; 1632e36db14SWarner Losh reg = <0x3000 0x1000>; 1642e36db14SWarner Losh interrupts = <0 44 4>; 1652e36db14SWarner Losh interrupt-parent = <&GIC>; 1662e36db14SWarner Losh }; 1672e36db14SWarner Losh 1682e36db14SWarner Losh // GPIO controller 1692e36db14SWarner Losh gpio: gpio@a000 { 1702e36db14SWarner Losh compatible = "xlnx,zy7_gpio"; 1712e36db14SWarner Losh reg = <0xa000 0x1000>; 1722e36db14SWarner Losh interrupts = <0 20 4>; 1732e36db14SWarner Losh interrupt-parent = <&GIC>; 1742e36db14SWarner Losh }; 1752e36db14SWarner Losh 1762e36db14SWarner Losh // Gigabit Ethernet controllers 1772e36db14SWarner Losh eth0: eth@b000 { 1782e36db14SWarner Losh device_type = "network"; 179*facdd1cdSThomas Skibo compatible = "cdns,zynq-gem", "cadence,gem"; 1802e36db14SWarner Losh status = "disabled"; 1812e36db14SWarner Losh reg = <0xb000 0x1000>; 1822e36db14SWarner Losh interrupts = <0 22 4>; 1832e36db14SWarner Losh interrupt-parent = <&GIC>; 1842e36db14SWarner Losh ref-clock-num = <0>; 1852e36db14SWarner Losh }; 1862e36db14SWarner Losh 1872e36db14SWarner Losh eth1: eth@c000 { 1882e36db14SWarner Losh device_type = "network"; 189*facdd1cdSThomas Skibo compatible = "cdns,zynq-gem", "cadence,gem"; 1902e36db14SWarner Losh status = "disabled"; 1912e36db14SWarner Losh reg = <0xc000 0x1000>; 1922e36db14SWarner Losh interrupts = <0 45 4>; 1932e36db14SWarner Losh interrupt-parent = <&GIC>; 1942e36db14SWarner Losh ref-clock-num = <1>; 1952e36db14SWarner Losh }; 1962e36db14SWarner Losh 1972e36db14SWarner Losh // Quad-SPI controller 1982e36db14SWarner Losh qspi0: qspi@d000 { 1992e36db14SWarner Losh compatible = "xlnx,zy7_qspi"; 2002e36db14SWarner Losh status = "disabled"; 2012e36db14SWarner Losh reg = <0xd000 0x1000>; 2022e36db14SWarner Losh interrupts = <0 19 4>; 2032e36db14SWarner Losh interrupt-parent = <&GIC>; 2042de9b4d3SEmmanuel Vadot ref-clock = <200000000>; // 200 Mhz 2052de9b4d3SEmmanuel Vadot spi-clock = <50000000>; // 50 Mhz 2062e36db14SWarner Losh }; 2072e36db14SWarner Losh 2083f9309e5SEmmanuel Vadot // SPI controllers 2093f9309e5SEmmanuel Vadot spi0: spi0@6000 { 2103f9309e5SEmmanuel Vadot compatible = "xlnx,zy7_spi"; 2113f9309e5SEmmanuel Vadot status = "disabled"; 2123f9309e5SEmmanuel Vadot reg = <0x6000 0x100>; 2133f9309e5SEmmanuel Vadot interrupts = <0 26 4>; 2143f9309e5SEmmanuel Vadot interrupt-parent = <&GIC>; 2153f9309e5SEmmanuel Vadot }; 2163f9309e5SEmmanuel Vadot 2173f9309e5SEmmanuel Vadot spi1: spi0@7000 { 2183f9309e5SEmmanuel Vadot compatible = "xlnx,zy7_spi"; 2193f9309e5SEmmanuel Vadot status = "disabled"; 2203f9309e5SEmmanuel Vadot reg = <0x7000 0x100>; 2213f9309e5SEmmanuel Vadot interrupts = <0 49 4>; 2223f9309e5SEmmanuel Vadot interrupt-parent = <&GIC>; 2233f9309e5SEmmanuel Vadot }; 2243f9309e5SEmmanuel Vadot 2252e36db14SWarner Losh // SDIO controllers 2262e36db14SWarner Losh sdhci0: sdhci@100000 { 2272e36db14SWarner Losh compatible = "xlnx,zy7_sdhci"; 2282e36db14SWarner Losh status = "disabled"; 2292e36db14SWarner Losh reg = <0x100000 0x1000>; 2302e36db14SWarner Losh interrupts = <0 24 4>; 2312e36db14SWarner Losh interrupt-parent = <&GIC>; 2322e36db14SWarner Losh max-frequency = <50000000>; 2332e36db14SWarner Losh }; 2342e36db14SWarner Losh 2352e36db14SWarner Losh sdhci1: sdhci@101000 { 2362e36db14SWarner Losh compatible = "xlnx,zy7_sdhci"; 2372e36db14SWarner Losh status = "disabled"; 2382e36db14SWarner Losh reg = <0x101000 0x1000>; 2392e36db14SWarner Losh interrupts = <0 47 4>; 2402e36db14SWarner Losh interrupt-parent = <&GIC>; 2412e36db14SWarner Losh max-frequency = <50000000>; 2422e36db14SWarner Losh }; 2432e36db14SWarner Losh 2442e36db14SWarner Losh }; // ps7io@e0000000 2452e36db14SWarner Losh}; 2462e36db14SWarner Losh 247