1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * dts file for Xilinx ZynqMP ZCU100 revC
4 *
5 * (C) Copyright 2016 - 2021, 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/pinctrl/pinctrl-zynqmp.h>
19#include <dt-bindings/phy/phy.h>
20
21/ {
22	model = "ZynqMP ZCU100 RevC";
23	compatible = "xlnx,zynqmp-zcu100-revC", "xlnx,zynqmp-zcu100", "xlnx,zynqmp";
24
25	aliases {
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		led-ds2 {
73			label = "ds2";
74			gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
75			linux,default-trigger = "heartbeat";
76		};
77
78		led-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		led-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		led-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	si5335_0: si5335_0 { /* clk0_usb - u23 */
135		compatible = "fixed-clock";
136		#clock-cells = <0>;
137		clock-frequency = <26000000>;
138	};
139
140	si5335_1: si5335_1 { /* clk1_dp - u23 */
141		compatible = "fixed-clock";
142		#clock-cells = <0>;
143		clock-frequency = <27000000>;
144	};
145};
146
147&dcc {
148	status = "okay";
149};
150
151&gpio {
152	status = "okay";
153	gpio-line-names = "UART1_TX", "UART1_RX", "UART0_RX", "UART0_TX", "I2C1_SCL",
154			  "I2C1_SDA", "SPI1_SCLK", "WLAN_EN", "BT_EN", "SPI1_CS",
155			  "SPI1_MISO", "SPI1_MOSI", "I2C_MUX_RESET", "SD0_DAT0", "SD0_DAT1",
156			  "SD0_DAT2", "SD0_DAT3", "PS_LED3", "PS_LED2", "PS_LED1",
157			  "PS_LED0", "SD0_CMD", "SD0_CLK", "GPIO_PB", "SD0_DETECT",
158			  "VBUS_DET", "POWER_INT", "DP_AUX", "DP_HPD", "DP_OE",
159			  "DP_AUX_IN", "INA226_ALERT", "PS_FP_PWR_EN", "PL_PWR_EN", "POWER_KILL",
160			  "", "GPIO-A", "GPIO-B", "SPI0_SCLK", "GPIO-C",
161			  "GPIO-D", "SPI0_CS", "SPI0_MISO", "SPI_MOSI", "GPIO-E",
162			  "GPIO-F", "SD1_D0", "SD1_D1", "SD1_D2", "SD1_D3",
163			  "SD1_CMD", "SD1_CLK", "USB0_CLK", "USB0_DIR", "USB0_DATA2",
164			  "USB0_NXT", "USB0_DATA0", "USB0_DATA1", "USB0_STP", "USB0_DATA3",
165			  "USB0_DATA4", "USB0_DATA5", "USB0_DATA6", "USB0_DATA7", "USB1_CLK",
166			  "USB1_DIR", "USB1_DATA2", "USB1_NXT", "USB1_DATA0", "USB1_DATA1",
167			  "USB1_STP", "USB1_DATA3", "USB1_DATA4", "USB1_DATA5", "USB1_DATA6",
168			  "USB_DATA7", "WLAN_IRQ", "PMIC_IRQ", /* MIO end and EMIO start */
169			  "", "",
170			  "", "", "", "", "", "", "", "", "", "",
171			  "", "", "", "", "", "", "", "", "", "",
172			  "", "", "", "", "", "", "", "", "", "",
173			  "", "", "", "", "", "", "", "", "", "",
174			  "", "", "", "", "", "", "", "", "", "",
175			  "", "", "", "", "", "", "", "", "", "",
176			  "", "", "", "", "", "", "", "", "", "",
177			  "", "", "", "", "", "", "", "", "", "",
178			  "", "", "", "", "", "", "", "", "", "",
179			  "", "", "", "";
180};
181
182&gpu {
183	status = "okay";
184};
185
186&i2c1 {
187	status = "okay";
188	pinctrl-names = "default", "gpio";
189	pinctrl-0 = <&pinctrl_i2c1_default>;
190	pinctrl-1 = <&pinctrl_i2c1_gpio>;
191	scl-gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
192	sda-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
193	clock-frequency = <100000>;
194	i2c-mux@75 { /* u11 */
195		compatible = "nxp,pca9548";
196		#address-cells = <1>;
197		#size-cells = <0>;
198		reg = <0x75>;
199		i2csw_0: i2c@0 {
200			#address-cells = <1>;
201			#size-cells = <0>;
202			reg = <0>;
203			label = "LS-I2C0";
204		};
205		i2csw_1: i2c@1 {
206			#address-cells = <1>;
207			#size-cells = <0>;
208			reg = <1>;
209			label = "LS-I2C1";
210		};
211		i2csw_2: i2c@2 {
212			#address-cells = <1>;
213			#size-cells = <0>;
214			reg = <2>;
215			label = "HS-I2C2";
216		};
217		i2csw_3: i2c@3 {
218			#address-cells = <1>;
219			#size-cells = <0>;
220			reg = <3>;
221			label = "HS-I2C3";
222		};
223		i2csw_4: i2c@4 {
224			#address-cells = <1>;
225			#size-cells = <0>;
226			reg = <0x4>;
227
228			pmic: pmic@5e { /* Custom TI PMIC u33 */
229				compatible = "ti,tps65086";
230				reg = <0x5e>;
231				interrupt-parent = <&gpio>;
232				interrupts = <77 IRQ_TYPE_LEVEL_LOW>;
233				#gpio-cells = <2>;
234				gpio-controller;
235			};
236		};
237		i2csw_5: i2c@5 {
238			#address-cells = <1>;
239			#size-cells = <0>;
240			reg = <5>;
241			/* PS_PMBUS */
242			u35: ina226@40 { /* u35 */
243				compatible = "ti,ina226";
244				#io-channel-cells = <1>;
245				reg = <0x40>;
246				shunt-resistor = <10000>;
247				/* MIO31 is alert which should be routed to PMUFW */
248			};
249		};
250		i2csw_6: i2c@6 {
251			#address-cells = <1>;
252			#size-cells = <0>;
253			reg = <6>;
254			/*
255			 * Not Connected
256			 */
257		};
258		i2csw_7: i2c@7 {
259			#address-cells = <1>;
260			#size-cells = <0>;
261			reg = <7>;
262			/*
263			 * usb5744 (DNP) - U5
264			 * 100kHz - this is default freq for us
265			 */
266		};
267	};
268};
269
270&pinctrl0 {
271	status = "okay";
272	pinctrl_i2c1_default: i2c1-default {
273		mux {
274			groups = "i2c1_1_grp";
275			function = "i2c1";
276		};
277
278		conf {
279			groups = "i2c1_1_grp";
280			bias-pull-up;
281			slew-rate = <SLEW_RATE_SLOW>;
282			power-source = <IO_STANDARD_LVCMOS18>;
283		};
284	};
285
286	pinctrl_i2c1_gpio: i2c1-gpio {
287		mux {
288			groups = "gpio0_4_grp", "gpio0_5_grp";
289			function = "gpio0";
290		};
291
292		conf {
293			groups = "gpio0_4_grp", "gpio0_5_grp";
294			slew-rate = <SLEW_RATE_SLOW>;
295			power-source = <IO_STANDARD_LVCMOS18>;
296		};
297	};
298
299	pinctrl_sdhci0_default: sdhci0-default {
300		mux {
301			groups = "sdio0_3_grp";
302			function = "sdio0";
303		};
304
305		conf {
306			groups = "sdio0_3_grp";
307			slew-rate = <SLEW_RATE_SLOW>;
308			power-source = <IO_STANDARD_LVCMOS18>;
309			bias-disable;
310		};
311
312		mux-cd {
313			groups = "sdio0_cd_0_grp";
314			function = "sdio0_cd";
315		};
316
317		conf-cd {
318			groups = "sdio0_cd_0_grp";
319			bias-high-impedance;
320			bias-pull-up;
321			slew-rate = <SLEW_RATE_SLOW>;
322			power-source = <IO_STANDARD_LVCMOS18>;
323		};
324	};
325
326	pinctrl_sdhci1_default: sdhci1-default {
327		mux {
328			groups = "sdio1_2_grp";
329			function = "sdio1";
330		};
331
332		conf {
333			groups = "sdio1_2_grp";
334			slew-rate = <SLEW_RATE_SLOW>;
335			power-source = <IO_STANDARD_LVCMOS18>;
336			bias-disable;
337		};
338	};
339
340	pinctrl_spi0_default: spi0-default {
341		mux {
342			groups = "spi0_3_grp";
343			function = "spi0";
344		};
345
346		conf {
347			groups = "spi0_3_grp";
348			bias-disable;
349			slew-rate = <SLEW_RATE_SLOW>;
350			power-source = <IO_STANDARD_LVCMOS18>;
351		};
352
353		mux-cs {
354			groups = "spi0_ss_9_grp";
355			function = "spi0_ss";
356		};
357
358		conf-cs {
359			groups = "spi0_ss_9_grp";
360			bias-disable;
361		};
362
363	};
364
365	pinctrl_spi1_default: spi1-default {
366		mux {
367			groups = "spi1_0_grp";
368			function = "spi1";
369		};
370
371		conf {
372			groups = "spi1_0_grp";
373			bias-disable;
374			slew-rate = <SLEW_RATE_SLOW>;
375			power-source = <IO_STANDARD_LVCMOS18>;
376		};
377
378		mux-cs {
379			groups = "spi1_ss_0_grp";
380			function = "spi1_ss";
381		};
382
383		conf-cs {
384			groups = "spi1_ss_0_grp";
385			bias-disable;
386		};
387
388	};
389
390	pinctrl_uart0_default: uart0-default {
391		mux {
392			groups = "uart0_0_grp";
393			function = "uart0";
394		};
395
396		conf {
397			groups = "uart0_0_grp";
398			slew-rate = <SLEW_RATE_SLOW>;
399			power-source = <IO_STANDARD_LVCMOS18>;
400		};
401
402		conf-rx {
403			pins = "MIO3";
404			bias-high-impedance;
405		};
406
407		conf-tx {
408			pins = "MIO2";
409			bias-disable;
410		};
411	};
412
413	pinctrl_uart1_default: uart1-default {
414		mux {
415			groups = "uart1_0_grp";
416			function = "uart1";
417		};
418
419		conf {
420			groups = "uart1_0_grp";
421			slew-rate = <SLEW_RATE_SLOW>;
422			power-source = <IO_STANDARD_LVCMOS18>;
423		};
424
425		conf-rx {
426			pins = "MIO1";
427			bias-high-impedance;
428		};
429
430		conf-tx {
431			pins = "MIO0";
432			bias-disable;
433		};
434	};
435
436	pinctrl_usb0_default: usb0-default {
437		mux {
438			groups = "usb0_0_grp";
439			function = "usb0";
440		};
441
442		conf {
443			groups = "usb0_0_grp";
444			slew-rate = <SLEW_RATE_SLOW>;
445			power-source = <IO_STANDARD_LVCMOS18>;
446		};
447
448		conf-rx {
449			pins = "MIO52", "MIO53", "MIO55";
450			bias-high-impedance;
451		};
452
453		conf-tx {
454			pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
455			       "MIO60", "MIO61", "MIO62", "MIO63";
456			bias-disable;
457		};
458	};
459
460	pinctrl_usb1_default: usb1-default {
461		mux {
462			groups = "usb1_0_grp";
463			function = "usb1";
464		};
465
466		conf {
467			groups = "usb1_0_grp";
468			slew-rate = <SLEW_RATE_SLOW>;
469			power-source = <IO_STANDARD_LVCMOS18>;
470		};
471
472		conf-rx {
473			pins = "MIO64", "MIO65", "MIO67";
474			bias-high-impedance;
475		};
476
477		conf-tx {
478			pins = "MIO66", "MIO68", "MIO69", "MIO70", "MIO71",
479			       "MIO72", "MIO73", "MIO74", "MIO75";
480			bias-disable;
481		};
482	};
483};
484
485&psgtr {
486	status = "okay";
487	/* usb3, dp */
488	clocks = <&si5335_0>, <&si5335_1>;
489	clock-names = "ref0", "ref1";
490};
491
492&rtc {
493	status = "okay";
494};
495
496/* SD0 only supports 3.3V, no level shifter */
497&sdhci0 {
498	status = "okay";
499	no-1-8-v;
500	disable-wp;
501	pinctrl-names = "default";
502	pinctrl-0 = <&pinctrl_sdhci0_default>;
503	xlnx,mio-bank = <0>;
504};
505
506&sdhci1 {
507	status = "okay";
508	bus-width = <0x4>;
509	pinctrl-names = "default";
510	pinctrl-0 = <&pinctrl_sdhci1_default>;
511	xlnx,mio-bank = <0>;
512	non-removable;
513	disable-wp;
514	cap-power-off-card;
515	mmc-pwrseq = <&sdio_pwrseq>;
516	vqmmc-supply = <&wmmcsdio_fixed>;
517	#address-cells = <1>;
518	#size-cells = <0>;
519	wlcore: wifi@2 {
520		compatible = "ti,wl1831";
521		reg = <2>;
522		interrupt-parent = <&gpio>;
523		interrupts = <76 IRQ_TYPE_EDGE_RISING>; /* MIO76 WLAN_IRQ 1V8 */
524	};
525};
526
527&spi0 { /* Low Speed connector */
528	status = "okay";
529	label = "LS-SPI0";
530	num-cs = <1>;
531	pinctrl-names = "default";
532	pinctrl-0 = <&pinctrl_spi0_default>;
533};
534
535&spi1 { /* High Speed connector */
536	status = "okay";
537	label = "HS-SPI1";
538	num-cs = <1>;
539	pinctrl-names = "default";
540	pinctrl-0 = <&pinctrl_spi1_default>;
541};
542
543&uart0 {
544	status = "okay";
545	pinctrl-names = "default";
546	pinctrl-0 = <&pinctrl_uart0_default>;
547	bluetooth {
548		compatible = "ti,wl1831-st";
549		enable-gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
550	};
551};
552
553&uart1 {
554	status = "okay";
555	pinctrl-names = "default";
556	pinctrl-0 = <&pinctrl_uart1_default>;
557};
558
559/* ULPI SMSC USB3320 */
560&usb0 {
561	status = "okay";
562	pinctrl-names = "default";
563	pinctrl-0 = <&pinctrl_usb0_default>;
564	phy-names = "usb3-phy";
565	phys = <&psgtr 2 PHY_TYPE_USB3 0 0>;
566};
567
568&dwc3_0 {
569	status = "okay";
570	dr_mode = "peripheral";
571	maximum-speed = "super-speed";
572};
573
574/* ULPI SMSC USB3320 */
575&usb1 {
576	status = "okay";
577	pinctrl-names = "default";
578	pinctrl-0 = <&pinctrl_usb1_default>;
579	phy-names = "usb3-phy";
580	phys = <&psgtr 3 PHY_TYPE_USB3 1 0>;
581};
582
583&dwc3_1 {
584	status = "okay";
585	dr_mode = "host";
586	maximum-speed = "super-speed";
587};
588
589&watchdog0 {
590	status = "okay";
591};
592
593&xilinx_ams {
594	status = "okay";
595};
596
597&ams_ps {
598	status = "okay";
599};
600
601&zynqmp_dpdma {
602	status = "okay";
603};
604
605&zynqmp_dpsub {
606	status = "okay";
607	phy-names = "dp-phy0", "dp-phy1";
608	phys = <&psgtr 1 PHY_TYPE_DP 0 1>,
609	       <&psgtr 0 PHY_TYPE_DP 1 1>;
610};
611