1/*
2 * Copyright (c) 2019 Lexmark International, Inc.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#include <mem.h>
8#include <arm/armv7-r.dtsi>
9#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h>
10#include <zephyr/dt-bindings/ethernet/xlnx_gem.h>
11
12/ {
13	soc {
14		flash0: flash@c0000000 {
15			compatible = "soc-nv-flash";
16			reg = <0xc0000000 DT_SIZE_M(32)>;
17		};
18
19		sram0: memory@0 {
20			compatible = "mmio-sram";
21			reg = <0 DT_SIZE_M(64)>;
22		};
23
24		ocm: memory@fffc0000 {
25			compatible = "zephyr,memory-region", "xlnx,zynq-ocm";
26			reg = <0xfffc0000 DT_SIZE_K(256)>;
27			zephyr,memory-region = "OCM";
28		};
29
30		uart0: uart@ff000000 {
31			compatible = "xlnx,xuartps";
32			reg = <0xff000000 0x4c>;
33			status = "disabled";
34			interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL
35					IRQ_DEFAULT_PRIORITY>;
36			interrupt-names = "irq_0";
37		};
38
39		uart1: uart@ff010000 {
40			compatible = "xlnx,xuartps";
41			reg = <0xff010000 0x4c>;
42			status = "disabled";
43			interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL
44					IRQ_DEFAULT_PRIORITY>;
45			interrupt-names = "irq_0";
46		};
47
48		ttc0: timer@ff110000 {
49			compatible = "xlnx,ttcps";
50			status = "disabled";
51			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL
52					IRQ_DEFAULT_PRIORITY>,
53				     <GIC_SPI 37 IRQ_TYPE_LEVEL
54					IRQ_DEFAULT_PRIORITY>,
55				     <GIC_SPI 38 IRQ_TYPE_LEVEL
56					IRQ_DEFAULT_PRIORITY>;
57			interrupt-names = "irq_0", "irq_1", "irq_2";
58			reg = <0xff110000 0x1000>;
59		};
60
61		ttc1: timer@ff120000 {
62			compatible = "xlnx,ttcps";
63			status = "disabled";
64			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL
65					IRQ_DEFAULT_PRIORITY>,
66				     <GIC_SPI 40 IRQ_TYPE_LEVEL
67					IRQ_DEFAULT_PRIORITY>,
68				     <GIC_SPI 41 IRQ_TYPE_LEVEL
69					IRQ_DEFAULT_PRIORITY>;
70			interrupt-names = "irq_0", "irq_1", "irq_2";
71			reg = <0xff120000 0x1000>;
72		};
73
74		ttc2: timer@ff130000 {
75			compatible = "xlnx,ttcps";
76			status = "disabled";
77			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL
78					IRQ_DEFAULT_PRIORITY>,
79				     <GIC_SPI 43 IRQ_TYPE_LEVEL
80					IRQ_DEFAULT_PRIORITY>,
81				     <GIC_SPI 44 IRQ_TYPE_LEVEL
82					IRQ_DEFAULT_PRIORITY>;
83			interrupt-names = "irq_0", "irq_1", "irq_2";
84			reg = <0xff130000 0x1000>;
85		};
86
87		ttc3: timer@ff140000 {
88			compatible = "xlnx,ttcps";
89			status = "disabled";
90			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL
91					IRQ_DEFAULT_PRIORITY>,
92				     <GIC_SPI 46 IRQ_TYPE_LEVEL
93					IRQ_DEFAULT_PRIORITY>,
94				     <GIC_SPI 47 IRQ_TYPE_LEVEL
95					IRQ_DEFAULT_PRIORITY>;
96			interrupt-names = "irq_0", "irq_1", "irq_2";
97			reg = <0xff140000 0x1000>;
98		};
99
100		gem0: ethernet@ff0b0000 {
101			compatible = "xlnx,gem";
102			reg = <0xff0b0000 0x1000>,
103				<0xff5e0050 0x4>;
104			status = "disabled";
105			interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL
106					IRQ_DEFAULT_PRIORITY>,
107				     <GIC_SPI 58 IRQ_TYPE_LEVEL
108					IRQ_DEFAULT_PRIORITY>;
109			interrupt-names = "irq_0", "irq_1";
110			mdio-phy-address = <XLNX_GEM_PHY_AUTO_DETECT>;
111			phy-poll-interval = <1000>;
112			link-speed = <XLNX_GEM_LINK_SPEED_100MBIT>;
113			amba-ahb-dbus-width = <XLNX_GEM_AMBA_AHB_DBUS_WIDTH_32BIT>;
114			amba-ahb-burst-length = <XLNX_GEM_AMBA_AHB_BURST_SINGLE>;
115			hw-rx-buffer-size = <XLNX_GEM_HW_RX_BUFFER_SIZE_8KB>;
116			hw-rx-buffer-offset = <0>;
117			hw-tx-buffer-size-full;
118			rx-buffer-descriptors = <32>;
119			tx-buffer-descriptors = <32>;
120			rx-buffer-size = <512>;
121			tx-buffer-size = <512>;
122			discard-rx-fcs;
123			unicast-hash;
124			full-duplex;
125		};
126
127		gem1: ethernet@ff0c0000 {
128			compatible = "xlnx,gem";
129			reg = <0xff0c0000 0x1000>,
130				<0xff5e0054 0x4>;
131			status = "disabled";
132			interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL
133					IRQ_DEFAULT_PRIORITY>,
134				     <GIC_SPI 60 IRQ_TYPE_LEVEL
135					IRQ_DEFAULT_PRIORITY>;
136			interrupt-names = "irq_0", "irq_1";
137			mdio-phy-address = <XLNX_GEM_PHY_AUTO_DETECT>;
138			phy-poll-interval = <1000>;
139			link-speed = <XLNX_GEM_LINK_SPEED_100MBIT>;
140			amba-ahb-dbus-width = <XLNX_GEM_AMBA_AHB_DBUS_WIDTH_32BIT>;
141			amba-ahb-burst-length = <XLNX_GEM_AMBA_AHB_BURST_SINGLE>;
142			hw-rx-buffer-size = <XLNX_GEM_HW_RX_BUFFER_SIZE_8KB>;
143			hw-rx-buffer-offset = <0>;
144			hw-tx-buffer-size-full;
145			rx-buffer-descriptors = <32>;
146			tx-buffer-descriptors = <32>;
147			rx-buffer-size = <512>;
148			tx-buffer-size = <512>;
149			discard-rx-fcs;
150			unicast-hash;
151			full-duplex;
152		};
153
154		gem2: ethernet@ff0d0000 {
155			compatible = "xlnx,gem";
156			reg = <0xff0d0000 0x1000>,
157				<0xff5e0058 0x4>;
158			status = "disabled";
159			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL
160					IRQ_DEFAULT_PRIORITY>,
161				     <GIC_SPI 62 IRQ_TYPE_LEVEL
162					IRQ_DEFAULT_PRIORITY>;
163			interrupt-names = "irq_0", "irq_1";
164			mdio-phy-address = <XLNX_GEM_PHY_AUTO_DETECT>;
165			phy-poll-interval = <1000>;
166			link-speed = <XLNX_GEM_LINK_SPEED_100MBIT>;
167			amba-ahb-dbus-width = <XLNX_GEM_AMBA_AHB_DBUS_WIDTH_32BIT>;
168			amba-ahb-burst-length = <XLNX_GEM_AMBA_AHB_BURST_SINGLE>;
169			hw-rx-buffer-size = <XLNX_GEM_HW_RX_BUFFER_SIZE_8KB>;
170			hw-rx-buffer-offset = <0>;
171			hw-tx-buffer-size-full;
172			rx-buffer-descriptors = <32>;
173			tx-buffer-descriptors = <32>;
174			rx-buffer-size = <512>;
175			tx-buffer-size = <512>;
176			discard-rx-fcs;
177			unicast-hash;
178			full-duplex;
179		};
180
181		gem3: ethernet@ff0e0000 {
182			compatible = "xlnx,gem";
183			reg = <0xff0e0000 0x1000>,
184				<0xff5e005c 0x4>;
185			status = "disabled";
186			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL
187					IRQ_DEFAULT_PRIORITY>,
188				     <GIC_SPI 64 IRQ_TYPE_LEVEL
189					IRQ_DEFAULT_PRIORITY>;
190			interrupt-names = "irq_0", "irq_1";
191			mdio-phy-address = <XLNX_GEM_PHY_AUTO_DETECT>;
192			phy-poll-interval = <1000>;
193			link-speed = <XLNX_GEM_LINK_SPEED_100MBIT>;
194			amba-ahb-dbus-width = <XLNX_GEM_AMBA_AHB_DBUS_WIDTH_32BIT>;
195			amba-ahb-burst-length = <XLNX_GEM_AMBA_AHB_BURST_SINGLE>;
196			hw-rx-buffer-size = <XLNX_GEM_HW_RX_BUFFER_SIZE_8KB>;
197			hw-rx-buffer-offset = <0>;
198			hw-tx-buffer-size-full;
199			rx-buffer-descriptors = <32>;
200			tx-buffer-descriptors = <32>;
201			rx-buffer-size = <512>;
202			tx-buffer-size = <512>;
203			discard-rx-fcs;
204			unicast-hash;
205			full-duplex;
206		};
207
208		psgpio: gpio@ff0a0000 {
209			compatible = "xlnx,ps-gpio";
210			status = "disabled";
211			reg = <0xff0a0000 0x1000>;
212			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL
213					IRQ_DEFAULT_PRIORITY>;
214			interrupt-names = "irq_0";
215
216			#address-cells = <1>;
217			#size-cells = <0>;
218
219			psgpio_bank0: psgpio_bank@0 {
220				compatible = "xlnx,ps-gpio-bank";
221				reg = <0x0>;
222				gpio-controller;
223				#gpio-cells = <2>;
224				ngpios = <26>;
225				status = "okay";
226			};
227
228			psgpio_bank1: psgpio_bank@1 {
229				compatible = "xlnx,ps-gpio-bank";
230				reg = <0x1>;
231				gpio-controller;
232				#gpio-cells = <2>;
233				ngpios = <26>;
234				status = "okay";
235			};
236
237			psgpio_bank2: psgpio_bank@2 {
238				compatible = "xlnx,ps-gpio-bank";
239				reg = <0x2>;
240				gpio-controller;
241				#gpio-cells = <2>;
242				ngpios = <26>;
243				status = "okay";
244			};
245
246			psgpio_bank3: psgpio_bank@3 {
247				compatible = "xlnx,ps-gpio-bank";
248				reg = <0x3>;
249				gpio-controller;
250				#gpio-cells = <2>;
251				ngpios = <32>;
252				status = "okay";
253			};
254
255			psgpio_bank4: psgpio_bank@4 {
256				compatible = "xlnx,ps-gpio-bank";
257				reg = <0x4>;
258				gpio-controller;
259				#gpio-cells = <2>;
260				ngpios = <32>;
261				status = "okay";
262			};
263
264			psgpio_bank5: psgpio_bank@5 {
265				compatible = "xlnx,ps-gpio-bank";
266				reg = <0x5>;
267				gpio-controller;
268				#gpio-cells = <2>;
269				ngpios = <32>;
270				status = "okay";
271			};
272		};
273	};
274};
275