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