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