1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * dts file for Xilinx ZynqMP ZCU100 revC
4 *
5 * (C) Copyright 2016 - 2018, 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.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			gpio-key,wakeup;
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		trigger-gpios = <&gpio 26 GPIO_ACTIVE_LOW>; /* INT line - input */
108		/* If there is HW watchdog on mezzanine this signal should be connected there */
109		watchdog-gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; /* MIO on PAD */
110		kill-gpios = <&gpio 34 GPIO_ACTIVE_LOW>; /* KILL signal - output */
111	};
112
113	wmmcsdio_fixed: fixedregulator-mmcsdio {
114		compatible = "regulator-fixed";
115		regulator-name = "wmmcsdio_fixed";
116		regulator-min-microvolt = <3300000>;
117		regulator-max-microvolt = <3300000>;
118		regulator-always-on;
119		regulator-boot-on;
120	};
121
122	sdio_pwrseq: sdio_pwrseq {
123		compatible = "mmc-pwrseq-simple";
124		reset-gpios = <&gpio 7 GPIO_ACTIVE_LOW>; /* WIFI_EN */
125	};
126};
127
128&dcc {
129	status = "okay";
130};
131
132&gpio {
133	status = "okay";
134	gpio-line-names = "UART1_TX", "UART1_RX", "UART0_RX", "UART0_TX", "I2C1_SCL",
135			  "I2C1_SDA", "SPI1_SCLK", "WLAN_EN", "BT_EN", "SPI1_CS",
136			  "SPI1_MISO", "SPI1_MOSI", "I2C_MUX_RESET", "SD0_DAT0", "SD0_DAT1",
137			  "SD0_DAT2", "SD0_DAT3", "PS_LED3", "PS_LED2", "PS_LED1",
138			  "PS_LED0", "SD0_CMD", "SD0_CLK", "GPIO_PB", "SD0_DETECT",
139			  "VBUS_DET", "POWER_INT", "DP_AUX", "DP_HPD", "DP_OE",
140			  "DP_AUX_IN", "INA226_ALERT", "PS_FP_PWR_EN", "PL_PWR_EN", "POWER_KILL",
141			  "", "GPIO-A", "GPIO-B", "SPI0_SCLK", "GPIO-C",
142			  "GPIO-D", "SPI0_CS", "SPI0_MISO", "SPI_MOSI", "GPIO-E",
143			  "GPIO-F", "SD1_D0", "SD1_D1", "SD1_D2", "SD1_D3",
144			  "SD1_CMD", "SD1_CLK", "USB0_CLK", "USB0_DIR", "USB0_DATA2",
145			  "USB0_NXT", "USB0_DATA0", "USB0_DATA1", "USB0_STP", "USB0_DATA3",
146			  "USB0_DATA4", "USB0_DATA5", "USB0_DATA6", "USB0_DATA7", "USB1_CLK",
147			  "USB1_DIR", "USB1_DATA2", "USB1_NXT", "USB1_DATA0", "USB1_DATA1",
148			  "USB1_STP", "USB1_DATA3", "USB1_DATA4", "USB1_DATA5", "USB1_DATA6",
149			  "USB_DATA7", "WLAN_IRQ", "PMIC_IRQ", /* MIO end and EMIO start */
150			  "", "",
151			  "", "", "", "", "", "", "", "", "", "",
152			  "", "", "", "", "", "", "", "", "", "",
153			  "", "", "", "", "", "", "", "", "", "",
154			  "", "", "", "", "", "", "", "", "", "",
155			  "", "", "", "", "", "", "", "", "", "",
156			  "", "", "", "", "", "", "", "", "", "",
157			  "", "", "", "", "", "", "", "", "", "",
158			  "", "", "", "", "", "", "", "", "", "",
159			  "", "", "", "", "", "", "", "", "", "",
160			  "", "", "", "";
161};
162
163&gpu {
164	status = "okay";
165};
166
167&i2c1 {
168	status = "okay";
169	clock-frequency = <100000>;
170	i2c-mux@75 { /* u11 */
171		compatible = "nxp,pca9548";
172		#address-cells = <1>;
173		#size-cells = <0>;
174		reg = <0x75>;
175		i2csw_0: i2c@0 {
176			#address-cells = <1>;
177			#size-cells = <0>;
178			reg = <0>;
179			label = "LS-I2C0";
180		};
181		i2csw_1: i2c@1 {
182			#address-cells = <1>;
183			#size-cells = <0>;
184			reg = <1>;
185			label = "LS-I2C1";
186		};
187		i2csw_2: i2c@2 {
188			#address-cells = <1>;
189			#size-cells = <0>;
190			reg = <2>;
191			label = "HS-I2C2";
192		};
193		i2csw_3: i2c@3 {
194			#address-cells = <1>;
195			#size-cells = <0>;
196			reg = <3>;
197			label = "HS-I2C3";
198		};
199		i2csw_4: i2c@4 {
200			#address-cells = <1>;
201			#size-cells = <0>;
202			reg = <0x4>;
203
204			pmic: pmic@5e { /* Custom TI PMIC u33 */
205				compatible = "ti,tps65086";
206				reg = <0x5e>;
207				interrupt-parent = <&gpio>;
208				interrupts = <77 GPIO_ACTIVE_LOW>;
209				#gpio-cells = <2>;
210				gpio-controller;
211			};
212		};
213		i2csw_5: i2c@5 {
214			#address-cells = <1>;
215			#size-cells = <0>;
216			reg = <5>;
217			/* PS_PMBUS */
218			ina226@40 { /* u35 */
219				compatible = "ti,ina226";
220				reg = <0x40>;
221				shunt-resistor = <10000>;
222				/* MIO31 is alert which should be routed to PMUFW */
223			};
224		};
225		i2csw_6: i2c@6 {
226			#address-cells = <1>;
227			#size-cells = <0>;
228			reg = <6>;
229			/*
230			 * Not Connected
231			 */
232		};
233		i2csw_7: i2c@7 {
234			#address-cells = <1>;
235			#size-cells = <0>;
236			reg = <7>;
237			/*
238			 * usb5744 (DNP) - U5
239			 * 100kHz - this is default freq for us
240			 */
241		};
242	};
243};
244
245&rtc {
246	status = "okay";
247};
248
249/* SD0 only supports 3.3V, no level shifter */
250&sdhci0 {
251	status = "okay";
252	no-1-8-v;
253	disable-wp;
254	xlnx,mio_bank = <0>;
255};
256
257&sdhci1 {
258	status = "okay";
259	bus-width = <0x4>;
260	xlnx,mio_bank = <0>;
261	non-removable;
262	disable-wp;
263	cap-power-off-card;
264	mmc-pwrseq = <&sdio_pwrseq>;
265	vqmmc-supply = <&wmmcsdio_fixed>;
266	#address-cells = <1>;
267	#size-cells = <0>;
268	wlcore: wifi@2 {
269		compatible = "ti,wl1831";
270		reg = <2>;
271		interrupt-parent = <&gpio>;
272		interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
273	};
274};
275
276&serdes {
277	status = "okay";
278};
279
280&spi0 { /* Low Speed connector */
281	status = "okay";
282	label = "LS-SPI0";
283	num-cs = <1>;
284};
285
286&spi1 { /* High Speed connector */
287	status = "okay";
288	label = "HS-SPI1";
289	num-cs = <1>;
290};
291
292&uart0 {
293	status = "okay";
294	bluetooth {
295		compatible = "ti,wl1831-st";
296		enable-gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
297	};
298
299};
300
301&uart1 {
302	status = "okay";
303
304};
305
306/* ULPI SMSC USB3320 */
307&usb0 {
308	status = "okay";
309};
310
311&dwc3_0 {
312	status = "okay";
313	dr_mode = "peripheral";
314	phy-names = "usb3-phy";
315	phys = <&lane2 PHY_TYPE_USB3 0 0 26000000>;
316	maximum-speed = "super-speed";
317};
318
319/* ULPI SMSC USB3320 */
320&usb1 {
321	status = "okay";
322};
323
324&dwc3_1 {
325	status = "okay";
326	dr_mode = "host";
327	phy-names = "usb3-phy";
328	phys = <&lane3 PHY_TYPE_USB3 1 0 26000000>;
329	maximum-speed = "super-speed";
330};
331
332&watchdog0 {
333	status = "okay";
334	reset-on-timeout;
335};
336
337&xilinx_ams {
338	status = "okay";
339};
340
341&ams_ps {
342	status = "okay";
343};
344