xref: /freebsd/sys/dts/arm/zynq-7000.dtsi (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
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