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
19/ {
20	model = "ZynqMP ZCU100 RevC";
21	compatible = "xlnx,zynqmp-zcu100-revC", "xlnx,zynqmp-zcu100", "xlnx,zynqmp";
22
23	aliases {
24		i2c0 = &i2c1;
25		rtc0 = &rtc;
26		serial0 = &uart1;
27		serial1 = &uart0;
28		serial2 = &dcc;
29		spi0 = &spi0;
30		spi1 = &spi1;
31		mmc0 = &sdhci0;
32		mmc1 = &sdhci1;
33	};
34
35	chosen {
36		bootargs = "earlycon";
37		stdout-path = "serial0:115200n8";
38	};
39
40	memory@0 {
41		device_type = "memory";
42		reg = <0x0 0x0 0x0 0x80000000>;
43	};
44
45	gpio-keys {
46		compatible = "gpio-keys";
47		autorepeat;
48		sw4 {
49			label = "sw4";
50			gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
51			linux,code = <KEY_POWER>;
52			wakeup-source;
53			autorepeat;
54		};
55	};
56
57	leds {
58		compatible = "gpio-leds";
59		ds2 {
60			label = "ds2";
61			gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
62			linux,default-trigger = "heartbeat";
63		};
64
65		ds3 {
66			label = "ds3";
67			gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
68			linux,default-trigger = "phy0tx"; /* WLAN tx */
69			default-state = "off";
70		};
71
72		ds4 {
73			label = "ds4";
74			gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
75			linux,default-trigger = "phy0rx"; /* WLAN rx */
76			default-state = "off";
77		};
78
79		ds5 {
80			label = "ds5";
81			gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
82			linux,default-trigger = "bluetooth-power";
83		};
84
85		vbus-det { /* U5 USB5744 VBUS detection via MIO25 */
86			label = "vbus_det";
87			gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
88			default-state = "on";
89		};
90	};
91
92	wmmcsdio_fixed: fixedregulator-mmcsdio {
93		compatible = "regulator-fixed";
94		regulator-name = "wmmcsdio_fixed";
95		regulator-min-microvolt = <3300000>;
96		regulator-max-microvolt = <3300000>;
97		regulator-always-on;
98		regulator-boot-on;
99	};
100
101	sdio_pwrseq: sdio-pwrseq {
102		compatible = "mmc-pwrseq-simple";
103		reset-gpios = <&gpio 7 GPIO_ACTIVE_LOW>; /* WIFI_EN */
104		post-power-on-delay-ms = <10>;
105	};
106};
107
108&dcc {
109	status = "okay";
110};
111
112&gpio {
113	status = "okay";
114	gpio-line-names = "UART1_TX", "UART1_RX", "UART0_RX", "UART0_TX", "I2C1_SCL",
115			  "I2C1_SDA", "SPI1_SCLK", "WLAN_EN", "BT_EN", "SPI1_CS",
116			  "SPI1_MISO", "SPI1_MOSI", "I2C_MUX_RESET", "SD0_DAT0", "SD0_DAT1",
117			  "SD0_DAT2", "SD0_DAT3", "PS_LED3", "PS_LED2", "PS_LED1",
118			  "PS_LED0", "SD0_CMD", "SD0_CLK", "GPIO_PB", "SD0_DETECT",
119			  "VBUS_DET", "POWER_INT", "DP_AUX", "DP_HPD", "DP_OE",
120			  "DP_AUX_IN", "INA226_ALERT", "PS_FP_PWR_EN", "PL_PWR_EN", "POWER_KILL",
121			  "", "GPIO-A", "GPIO-B", "SPI0_SCLK", "GPIO-C",
122			  "GPIO-D", "SPI0_CS", "SPI0_MISO", "SPI_MOSI", "GPIO-E",
123			  "GPIO-F", "SD1_D0", "SD1_D1", "SD1_D2", "SD1_D3",
124			  "SD1_CMD", "SD1_CLK", "USB0_CLK", "USB0_DIR", "USB0_DATA2",
125			  "USB0_NXT", "USB0_DATA0", "USB0_DATA1", "USB0_STP", "USB0_DATA3",
126			  "USB0_DATA4", "USB0_DATA5", "USB0_DATA6", "USB0_DATA7", "USB1_CLK",
127			  "USB1_DIR", "USB1_DATA2", "USB1_NXT", "USB1_DATA0", "USB1_DATA1",
128			  "USB1_STP", "USB1_DATA3", "USB1_DATA4", "USB1_DATA5", "USB1_DATA6",
129			  "USB_DATA7", "WLAN_IRQ", "PMIC_IRQ", /* MIO end and EMIO start */
130			  "", "",
131			  "", "", "", "", "", "", "", "", "", "",
132			  "", "", "", "", "", "", "", "", "", "",
133			  "", "", "", "", "", "", "", "", "", "",
134			  "", "", "", "", "", "", "", "", "", "",
135			  "", "", "", "", "", "", "", "", "", "",
136			  "", "", "", "", "", "", "", "", "", "",
137			  "", "", "", "", "", "", "", "", "", "",
138			  "", "", "", "", "", "", "", "", "", "",
139			  "", "", "", "", "", "", "", "", "", "",
140			  "", "", "", "";
141};
142
143&i2c1 {
144	status = "okay";
145	clock-frequency = <100000>;
146	i2c-mux@75 { /* u11 */
147		compatible = "nxp,pca9548";
148		#address-cells = <1>;
149		#size-cells = <0>;
150		reg = <0x75>;
151		i2csw_0: i2c@0 {
152			#address-cells = <1>;
153			#size-cells = <0>;
154			reg = <0>;
155			label = "LS-I2C0";
156		};
157		i2csw_1: i2c@1 {
158			#address-cells = <1>;
159			#size-cells = <0>;
160			reg = <1>;
161			label = "LS-I2C1";
162		};
163		i2csw_2: i2c@2 {
164			#address-cells = <1>;
165			#size-cells = <0>;
166			reg = <2>;
167			label = "HS-I2C2";
168		};
169		i2csw_3: i2c@3 {
170			#address-cells = <1>;
171			#size-cells = <0>;
172			reg = <3>;
173			label = "HS-I2C3";
174		};
175		i2csw_4: i2c@4 {
176			#address-cells = <1>;
177			#size-cells = <0>;
178			reg = <0x4>;
179
180			pmic: pmic@5e { /* Custom TI PMIC u33 */
181				compatible = "ti,tps65086";
182				reg = <0x5e>;
183				interrupt-parent = <&gpio>;
184				interrupts = <77 GPIO_ACTIVE_LOW>;
185				#gpio-cells = <2>;
186				gpio-controller;
187			};
188		};
189		i2csw_5: i2c@5 {
190			#address-cells = <1>;
191			#size-cells = <0>;
192			reg = <5>;
193			/* PS_PMBUS */
194			ina226@40 { /* u35 */
195				compatible = "ti,ina226";
196				reg = <0x40>;
197				shunt-resistor = <10000>;
198				/* MIO31 is alert which should be routed to PMUFW */
199			};
200		};
201		i2csw_6: i2c@6 {
202			#address-cells = <1>;
203			#size-cells = <0>;
204			reg = <6>;
205			/*
206			 * Not Connected
207			 */
208		};
209		i2csw_7: i2c@7 {
210			#address-cells = <1>;
211			#size-cells = <0>;
212			reg = <7>;
213			/*
214			 * usb5744 (DNP) - U5
215			 * 100kHz - this is default freq for us
216			 */
217		};
218	};
219};
220
221&rtc {
222	status = "okay";
223};
224
225/* SD0 only supports 3.3V, no level shifter */
226&sdhci0 {
227	status = "okay";
228	no-1-8-v;
229	broken-cd; /* CD has to be enabled by default */
230	disable-wp;
231};
232
233&sdhci1 {
234	status = "okay";
235	bus-width = <0x4>;
236	non-removable;
237	disable-wp;
238	cap-power-off-card;
239	mmc-pwrseq = <&sdio_pwrseq>;
240	vqmmc-supply = <&wmmcsdio_fixed>;
241	#address-cells = <1>;
242	#size-cells = <0>;
243	wlcore: wifi@2 {
244		compatible = "ti,wl1831";
245		reg = <2>;
246		interrupt-parent = <&gpio>;
247		interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
248	};
249};
250
251&spi0 { /* Low Speed connector */
252	status = "okay";
253	label = "LS-SPI0";
254};
255
256&spi1 { /* High Speed connector */
257	status = "okay";
258	label = "HS-SPI1";
259};
260
261&uart0 {
262	status = "okay";
263	bluetooth {
264		compatible = "ti,wl1831-st";
265		enable-gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
266	};
267};
268
269&uart1 {
270	status = "okay";
271
272};
273
274/* ULPI SMSC USB3320 */
275&usb0 {
276	status = "okay";
277};
278
279/* ULPI SMSC USB3320 */
280&usb1 {
281	status = "okay";
282};
283
284&watchdog0 {
285	status = "okay";
286};
287