1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * dts file for Xilinx ZynqMP ZCU100 revC
4 *
5 * (C) Copyright 2016 - 2020, Xilinx, Inc.
6 *
7 * Michal Simek <michal.simek@xilinx.com>
8 * Nathalie Chan King Choy
9 */
10
11/dts-v1/;
12
13#include "zynqmp.dtsi"
14#include "zynqmp-clk-ccf.dtsi"
15#include <dt-bindings/input/input.h>
16#include <dt-bindings/interrupt-controller/irq.h>
17#include <dt-bindings/gpio/gpio.h>
18#include <dt-bindings/phy/phy.h>
19
20/ {
21	model = "ZynqMP ZCU100 RevC";
22	compatible = "xlnx,zynqmp-zcu100-revC", "xlnx,zynqmp-zcu100", "xlnx,zynqmp";
23
24	aliases {
25		gpio0 = &gpio;
26		i2c0 = &i2c1;
27		rtc0 = &rtc;
28		serial0 = &uart1;
29		serial1 = &uart0;
30		serial2 = &dcc;
31		spi0 = &spi0;
32		spi1 = &spi1;
33		usb0 = &usb0;
34		usb1 = &usb1;
35		mmc0 = &sdhci0;
36		mmc1 = &sdhci1;
37	};
38
39	chosen {
40		bootargs = "earlycon";
41		stdout-path = "serial0:115200n8";
42	};
43
44	memory@0 {
45		device_type = "memory";
46		reg = <0x0 0x0 0x0 0x80000000>;
47	};
48
49	gpio-keys {
50		compatible = "gpio-keys";
51		autorepeat;
52		sw4 {
53			label = "sw4";
54			gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
55			linux,code = <KEY_POWER>;
56			wakeup-source;
57			autorepeat;
58		};
59	};
60
61	iio-hwmon {
62		compatible = "iio-hwmon";
63		io-channels = <&xilinx_ams 0>, <&xilinx_ams 1>, <&xilinx_ams 2>,
64			      <&xilinx_ams 3>, <&xilinx_ams 4>, <&xilinx_ams 5>,
65			      <&xilinx_ams 6>, <&xilinx_ams 7>, <&xilinx_ams 8>,
66			      <&xilinx_ams 9>, <&xilinx_ams 10>,
67			      <&xilinx_ams 11>, <&xilinx_ams 12>;
68	};
69
70	leds {
71		compatible = "gpio-leds";
72		ds2 {
73			label = "ds2";
74			gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
75			linux,default-trigger = "heartbeat";
76		};
77
78		ds3 {
79			label = "ds3";
80			gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
81			linux,default-trigger = "phy0tx"; /* WLAN tx */
82			default-state = "off";
83		};
84
85		ds4 {
86			label = "ds4";
87			gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
88			linux,default-trigger = "phy0rx"; /* WLAN rx */
89			default-state = "off";
90		};
91
92		ds5 {
93			label = "ds5";
94			gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
95			linux,default-trigger = "bluetooth-power";
96		};
97
98		vbus-det { /* U5 USB5744 VBUS detection via MIO25 */
99			label = "vbus_det";
100			gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
101			default-state = "on";
102		};
103	};
104
105	ltc2954: ltc2954 { /* U7 */
106		compatible = "lltc,ltc2954", "lltc,ltc2952";
107		status = "disabled";
108		trigger-gpios = <&gpio 26 GPIO_ACTIVE_LOW>; /* INT line - input */
109		/* If there is HW watchdog on mezzanine this signal should be connected there */
110		watchdog-gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; /* MIO on PAD */
111		kill-gpios = <&gpio 34 GPIO_ACTIVE_LOW>; /* KILL signal - output */
112	};
113
114	wmmcsdio_fixed: fixedregulator-mmcsdio {
115		compatible = "regulator-fixed";
116		regulator-name = "wmmcsdio_fixed";
117		regulator-min-microvolt = <3300000>;
118		regulator-max-microvolt = <3300000>;
119		regulator-always-on;
120		regulator-boot-on;
121	};
122
123	sdio_pwrseq: sdio-pwrseq {
124		compatible = "mmc-pwrseq-simple";
125		reset-gpios = <&gpio 7 GPIO_ACTIVE_LOW>; /* WIFI_EN */
126		post-power-on-delay-ms = <10>;
127	};
128
129	ina226 {
130		compatible = "iio-hwmon";
131		io-channels = <&u35 0>, <&u35 1>, <&u35 2>, <&u35 3>;
132	};
133};
134
135&dcc {
136	status = "okay";
137};
138
139&gpio {
140	status = "okay";
141	gpio-line-names = "UART1_TX", "UART1_RX", "UART0_RX", "UART0_TX", "I2C1_SCL",
142			  "I2C1_SDA", "SPI1_SCLK", "WLAN_EN", "BT_EN", "SPI1_CS",
143			  "SPI1_MISO", "SPI1_MOSI", "I2C_MUX_RESET", "SD0_DAT0", "SD0_DAT1",
144			  "SD0_DAT2", "SD0_DAT3", "PS_LED3", "PS_LED2", "PS_LED1",
145			  "PS_LED0", "SD0_CMD", "SD0_CLK", "GPIO_PB", "SD0_DETECT",
146			  "VBUS_DET", "POWER_INT", "DP_AUX", "DP_HPD", "DP_OE",
147			  "DP_AUX_IN", "INA226_ALERT", "PS_FP_PWR_EN", "PL_PWR_EN", "POWER_KILL",
148			  "", "GPIO-A", "GPIO-B", "SPI0_SCLK", "GPIO-C",
149			  "GPIO-D", "SPI0_CS", "SPI0_MISO", "SPI_MOSI", "GPIO-E",
150			  "GPIO-F", "SD1_D0", "SD1_D1", "SD1_D2", "SD1_D3",
151			  "SD1_CMD", "SD1_CLK", "USB0_CLK", "USB0_DIR", "USB0_DATA2",
152			  "USB0_NXT", "USB0_DATA0", "USB0_DATA1", "USB0_STP", "USB0_DATA3",
153			  "USB0_DATA4", "USB0_DATA5", "USB0_DATA6", "USB0_DATA7", "USB1_CLK",
154			  "USB1_DIR", "USB1_DATA2", "USB1_NXT", "USB1_DATA0", "USB1_DATA1",
155			  "USB1_STP", "USB1_DATA3", "USB1_DATA4", "USB1_DATA5", "USB1_DATA6",
156			  "USB_DATA7", "WLAN_IRQ", "PMIC_IRQ", /* MIO end and EMIO start */
157			  "", "",
158			  "", "", "", "", "", "", "", "", "", "",
159			  "", "", "", "", "", "", "", "", "", "",
160			  "", "", "", "", "", "", "", "", "", "",
161			  "", "", "", "", "", "", "", "", "", "",
162			  "", "", "", "", "", "", "", "", "", "",
163			  "", "", "", "", "", "", "", "", "", "",
164			  "", "", "", "", "", "", "", "", "", "",
165			  "", "", "", "", "", "", "", "", "", "",
166			  "", "", "", "", "", "", "", "", "", "",
167			  "", "", "", "";
168};
169
170&gpu {
171	status = "okay";
172};
173
174&i2c1 {
175	status = "okay";
176	clock-frequency = <100000>;
177	i2c-mux@75 { /* u11 */
178		compatible = "nxp,pca9548";
179		#address-cells = <1>;
180		#size-cells = <0>;
181		reg = <0x75>;
182		i2csw_0: i2c@0 {
183			#address-cells = <1>;
184			#size-cells = <0>;
185			reg = <0>;
186			label = "LS-I2C0";
187		};
188		i2csw_1: i2c@1 {
189			#address-cells = <1>;
190			#size-cells = <0>;
191			reg = <1>;
192			label = "LS-I2C1";
193		};
194		i2csw_2: i2c@2 {
195			#address-cells = <1>;
196			#size-cells = <0>;
197			reg = <2>;
198			label = "HS-I2C2";
199		};
200		i2csw_3: i2c@3 {
201			#address-cells = <1>;
202			#size-cells = <0>;
203			reg = <3>;
204			label = "HS-I2C3";
205		};
206		i2csw_4: i2c@4 {
207			#address-cells = <1>;
208			#size-cells = <0>;
209			reg = <0x4>;
210
211			pmic: pmic@5e { /* Custom TI PMIC u33 */
212				compatible = "ti,tps65086";
213				reg = <0x5e>;
214				interrupt-parent = <&gpio>;
215				interrupts = <77 GPIO_ACTIVE_LOW>;
216				#gpio-cells = <2>;
217				gpio-controller;
218			};
219		};
220		i2csw_5: i2c@5 {
221			#address-cells = <1>;
222			#size-cells = <0>;
223			reg = <5>;
224			/* PS_PMBUS */
225			u35: ina226@40 { /* u35 */
226				compatible = "ti,ina226";
227				#io-channel-cells = <1>;
228				reg = <0x40>;
229				shunt-resistor = <10000>;
230				/* MIO31 is alert which should be routed to PMUFW */
231			};
232		};
233		i2csw_6: i2c@6 {
234			#address-cells = <1>;
235			#size-cells = <0>;
236			reg = <6>;
237			/*
238			 * Not Connected
239			 */
240		};
241		i2csw_7: i2c@7 {
242			#address-cells = <1>;
243			#size-cells = <0>;
244			reg = <7>;
245			/*
246			 * usb5744 (DNP) - U5
247			 * 100kHz - this is default freq for us
248			 */
249		};
250	};
251};
252
253&rtc {
254	status = "okay";
255};
256
257/* SD0 only supports 3.3V, no level shifter */
258&sdhci0 {
259	status = "okay";
260	no-1-8-v;
261	disable-wp;
262	xlnx,mio-bank = <0>;
263};
264
265&sdhci1 {
266	status = "okay";
267	bus-width = <0x4>;
268	xlnx,mio-bank = <0>;
269	non-removable;
270	disable-wp;
271	cap-power-off-card;
272	mmc-pwrseq = <&sdio_pwrseq>;
273	vqmmc-supply = <&wmmcsdio_fixed>;
274	#address-cells = <1>;
275	#size-cells = <0>;
276	wlcore: wifi@2 {
277		compatible = "ti,wl1831";
278		reg = <2>;
279		interrupt-parent = <&gpio>;
280		interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
281	};
282};
283
284&serdes {
285	status = "okay";
286};
287
288&spi0 { /* Low Speed connector */
289	status = "okay";
290	label = "LS-SPI0";
291	num-cs = <1>;
292};
293
294&spi1 { /* High Speed connector */
295	status = "okay";
296	label = "HS-SPI1";
297	num-cs = <1>;
298};
299
300&uart0 {
301	status = "okay";
302	bluetooth {
303		compatible = "ti,wl1831-st";
304		enable-gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
305	};
306};
307
308&uart1 {
309	status = "okay";
310
311};
312
313/* ULPI SMSC USB3320 */
314&usb0 {
315	status = "okay";
316};
317
318&dwc3_0 {
319	status = "okay";
320	dr_mode = "peripheral";
321	phy-names = "usb3-phy";
322	phys = <&lane2 PHY_TYPE_USB3 0 0 26000000>;
323	maximum-speed = "super-speed";
324};
325
326/* ULPI SMSC USB3320 */
327&usb1 {
328	status = "okay";
329};
330
331&dwc3_1 {
332	status = "okay";
333	dr_mode = "host";
334	phy-names = "usb3-phy";
335	phys = <&lane3 PHY_TYPE_USB3 1 0 26000000>;
336	maximum-speed = "super-speed";
337};
338
339&watchdog0 {
340	status = "okay";
341};
342
343&xilinx_ams {
344	status = "okay";
345};
346
347&ams_ps {
348	status = "okay";
349};
350