blob: 8f30a2883e27f553c9593f745e0fe6c9cc9673e3 [file] [log] [blame]
Michal Simeke116c542018-03-28 15:36:36 +02001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * dts file for Xilinx ZynqMP ZCU104
4 *
Michal Simek4f1b7f62020-02-18 08:38:06 +01005 * (C) Copyright 2017 - 2020, Xilinx, Inc.
Michal Simeke116c542018-03-28 15:36:36 +02006 *
7 * Michal Simek <michal.simek@xilinx.com>
8 */
9
10/dts-v1/;
11
12#include "zynqmp.dtsi"
13#include "zynqmp-clk-ccf.dtsi"
14#include <dt-bindings/gpio/gpio.h>
15#include <dt-bindings/phy/phy.h>
16
17/ {
18 model = "ZynqMP ZCU104 RevC";
19 compatible = "xlnx,zynqmp-zcu104-revC", "xlnx,zynqmp-zcu104", "xlnx,zynqmp";
20
21 aliases {
22 ethernet0 = &gem3;
23 gpio0 = &gpio;
24 i2c0 = &i2c1;
25 mmc0 = &sdhci1;
26 rtc0 = &rtc;
27 serial0 = &uart0;
28 serial1 = &uart1;
29 serial2 = &dcc;
30 spi0 = &qspi;
31 usb0 = &usb0;
32 };
33
34 chosen {
35 bootargs = "earlycon";
36 stdout-path = "serial0:115200n8";
Michal Simek53b97e62019-01-18 09:10:39 +010037 xlnx,eeprom = &eeprom;
Michal Simeke116c542018-03-28 15:36:36 +020038 };
39
40 memory@0 {
41 device_type = "memory";
42 reg = <0x0 0x0 0x0 0x80000000>;
43 };
Michal Simek9d66a4c2019-08-26 09:40:23 +020044
45 ina226 {
46 compatible = "iio-hwmon";
47 io-channels = <&u183 0>, <&u183 1>, <&u183 2>, <&u183 3>;
48 };
Michal Simek958c0e92020-11-26 14:25:02 +010049
50 clock_8t49n287_5: clk125 {
51 compatible = "fixed-clock";
52 #clock-cells = <0>;
53 clock-frequency = <125000000>;
54 };
55
56 clock_8t49n287_2: clk26 {
57 compatible = "fixed-clock";
58 #clock-cells = <0>;
59 clock-frequency = <26000000>;
60 };
61
62 clock_8t49n287_3: clk27 {
63 compatible = "fixed-clock";
64 #clock-cells = <0>;
65 clock-frequency = <27000000>;
66 };
Michal Simeke116c542018-03-28 15:36:36 +020067};
68
69&can1 {
70 status = "okay";
71};
72
73&dcc {
74 status = "okay";
75};
76
Michal Simekf390a212019-03-07 08:15:52 +010077&fpd_dma_chan1 {
78 status = "okay";
79};
80
81&fpd_dma_chan2 {
82 status = "okay";
83};
84
85&fpd_dma_chan3 {
86 status = "okay";
87};
88
89&fpd_dma_chan4 {
90 status = "okay";
91};
92
93&fpd_dma_chan5 {
94 status = "okay";
95};
96
97&fpd_dma_chan6 {
98 status = "okay";
99};
100
101&fpd_dma_chan7 {
102 status = "okay";
103};
104
105&fpd_dma_chan8 {
106 status = "okay";
107};
108
Michal Simeke116c542018-03-28 15:36:36 +0200109&gem3 {
110 status = "okay";
111 phy-handle = <&phy0>;
112 phy-mode = "rgmii-id";
Michal Simek393decf2019-08-08 12:44:22 +0200113 phy0: ethernet-phy@c {
Michal Simeke116c542018-03-28 15:36:36 +0200114 reg = <0xc>;
115 ti,rx-internal-delay = <0x8>;
116 ti,tx-internal-delay = <0xa>;
117 ti,fifo-depth = <0x1>;
Harini Katakam991a1612019-02-13 17:02:21 +0530118 ti,dp83867-rxctrl-strap-quirk;
Michal Simeke116c542018-03-28 15:36:36 +0200119 };
120};
121
122&gpio {
123 status = "okay";
124};
125
126&gpu {
127 status = "okay";
128};
129
130&i2c1 {
131 status = "okay";
132 clock-frequency = <400000>;
133
Michal Simekbea57132018-05-29 15:28:43 +0200134 tca6416_u97: gpio@20 {
Michal Simeke116c542018-03-28 15:36:36 +0200135 compatible = "ti,tca6416";
Michal Simekbea57132018-05-29 15:28:43 +0200136 reg = <0x20>;
Michal Simeke116c542018-03-28 15:36:36 +0200137 gpio-controller;
138 #gpio-cells = <2>;
139 /*
140 * IRQ not connected
141 * Lines:
142 * 0 - IRPS5401_ALERT_B
143 * 1 - HDMI_8T49N241_INT_ALM
144 * 2 - MAX6643_OT_B
145 * 3 - MAX6643_FANFAIL_B
146 * 5 - IIC_MUX_RESET_B
147 * 6 - GEM3_EXP_RESET_B
148 * 7 - FMC_LPC_PRSNT_M2C_B
149 * 4, 10 - 17 - not connected
150 */
151 };
152
153 /* Another connection to this bus via PL i2c via PCA9306 - u45 */
154 i2c-mux@74 { /* u34 */
155 compatible = "nxp,pca9548";
156 #address-cells = <1>;
157 #size-cells = <0>;
158 reg = <0x74>;
159 i2c@0 {
160 #address-cells = <1>;
161 #size-cells = <0>;
162 reg = <0>;
163 /*
164 * IIC_EEPROM 1kB memory which uses 256B blocks
165 * where every block has different address.
166 * 0 - 256B address 0x54
167 * 256B - 512B address 0x55
168 * 512B - 768B address 0x56
169 * 768B - 1024B address 0x57
170 */
171 eeprom: eeprom@54 { /* u23 */
172 compatible = "atmel,24c08";
173 reg = <0x54>;
174 #address-cells = <1>;
175 #size-cells = <1>;
176 };
177 };
178
179 i2c@1 {
180 #address-cells = <1>;
181 #size-cells = <0>;
182 reg = <1>;
183 clock_8t49n287: clock-generator@6c { /* 8T49N287 - u182 */
184 compatible = "idt,8t49n287";
185 reg = <0x6c>;
186 };
187 };
188
189 i2c@2 {
190 #address-cells = <1>;
191 #size-cells = <0>;
192 reg = <2>;
Michal Simek3514e4e2020-03-30 11:35:38 +0200193 irps5401_43: irps5401@43 { /* IRPS5401 - u175 */
Michal Simeke116c542018-03-28 15:36:36 +0200194 compatible = "infineon,irps5401";
Michal Simek3514e4e2020-03-30 11:35:38 +0200195 reg = <0x43>; /* pmbus / i2c 0x13 */
Michal Simeke116c542018-03-28 15:36:36 +0200196 };
Michal Simek3514e4e2020-03-30 11:35:38 +0200197 irps5401_44: irps5401@44 { /* IRPS5401 - u180 */
Michal Simeke116c542018-03-28 15:36:36 +0200198 compatible = "infineon,irps5401";
Michal Simek3514e4e2020-03-30 11:35:38 +0200199 reg = <0x44>; /* pmbus / i2c 0x14 */
Michal Simeke116c542018-03-28 15:36:36 +0200200 };
201 };
202
Michal Simekee29db12018-05-29 14:45:13 +0200203 i2c@3 {
Michal Simeke116c542018-03-28 15:36:36 +0200204 #address-cells = <1>;
205 #size-cells = <0>;
Michal Simekee29db12018-05-29 14:45:13 +0200206 reg = <3>;
Michal Simek9d66a4c2019-08-26 09:40:23 +0200207 u183: ina226@40 { /* u183 */
Michal Simekee29db12018-05-29 14:45:13 +0200208 compatible = "ti,ina226";
Michal Simek9d66a4c2019-08-26 09:40:23 +0200209 #io-channel-cells = <1>;
Michal Simekee29db12018-05-29 14:45:13 +0200210 reg = <0x40>;
211 shunt-resistor = <5000>;
212 };
Michal Simeke116c542018-03-28 15:36:36 +0200213 };
214
215 i2c@5 {
216 #address-cells = <1>;
217 #size-cells = <0>;
218 reg = <5>;
219 };
220
221 i2c@7 {
222 #address-cells = <1>;
223 #size-cells = <0>;
224 reg = <7>;
225 };
226
Michal Simekee29db12018-05-29 14:45:13 +0200227 /* 4, 6 not connected */
Michal Simeke116c542018-03-28 15:36:36 +0200228 };
229};
230
231&qspi {
232 status = "okay";
233 flash@0 {
Neil Armstronga009fa72019-02-10 10:16:20 +0000234 compatible = "m25p80", "jedec,spi-nor"; /* n25q512a 128MiB */
Michal Simeke116c542018-03-28 15:36:36 +0200235 #address-cells = <1>;
236 #size-cells = <1>;
237 reg = <0x0>;
238 spi-tx-bus-width = <1>;
239 spi-rx-bus-width = <4>;
240 spi-max-frequency = <108000000>; /* Based on DC1 spec */
Michal Simek70fafdf2020-02-14 14:19:56 +0100241 partition@0 { /* for testing purpose */
Michal Simeke116c542018-03-28 15:36:36 +0200242 label = "qspi-fsbl-uboot";
243 reg = <0x0 0x100000>;
244 };
Michal Simek70fafdf2020-02-14 14:19:56 +0100245 partition@100000 { /* for testing purpose */
Michal Simeke116c542018-03-28 15:36:36 +0200246 label = "qspi-linux";
247 reg = <0x100000 0x500000>;
248 };
Michal Simek70fafdf2020-02-14 14:19:56 +0100249 partition@600000 { /* for testing purpose */
Michal Simeke116c542018-03-28 15:36:36 +0200250 label = "qspi-device-tree";
251 reg = <0x600000 0x20000>;
252 };
Michal Simek70fafdf2020-02-14 14:19:56 +0100253 partition@620000 { /* for testing purpose */
Michal Simeke116c542018-03-28 15:36:36 +0200254 label = "qspi-rootfs";
255 reg = <0x620000 0x5E0000>;
256 };
257 };
258};
259
260&rtc {
261 status = "okay";
Michal Simek958c0e92020-11-26 14:25:02 +0100262};
263
264&psgtr {
265 status = "okay";
266 /* nc, sata, usb3, dp */
267 clocks = <&clock_8t49n287_5>, <&clock_8t49n287_2>, <&clock_8t49n287_3>;
268 clock-names = "ref1", "ref2", "ref3";
Michal Simeke116c542018-03-28 15:36:36 +0200269};
270
271&sata {
272 status = "okay";
273 /* SATA OOB timing settings */
274 ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
275 ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
276 ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
277 ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
278 ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
279 ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
280 ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
281 ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
282 phy-names = "sata-phy";
Michal Simek958c0e92020-11-26 14:25:02 +0100283 phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
Michal Simeke116c542018-03-28 15:36:36 +0200284};
285
286/* SD1 with level shifter */
287&sdhci1 {
288 status = "okay";
289 no-1-8-v;
Michal Simek3b662642020-07-22 17:42:43 +0200290 xlnx,mio-bank = <1>;
Michal Simeke116c542018-03-28 15:36:36 +0200291 disable-wp;
292};
293
Michal Simeke116c542018-03-28 15:36:36 +0200294&uart0 {
295 status = "okay";
296};
297
298&uart1 {
299 status = "okay";
300};
301
302/* ULPI SMSC USB3320 */
303&usb0 {
304 status = "okay";
305};
306
307&dwc3_0 {
308 status = "okay";
309 dr_mode = "host";
310 snps,usb3_lpm_capable;
Michal Simeke116c542018-03-28 15:36:36 +0200311 maximum-speed = "super-speed";
312};
313
314&watchdog0 {
315 status = "okay";
316};
317
318&xilinx_ams {
319 status = "okay";
320};
321
322&ams_ps {
323 status = "okay";
324};
325
326&ams_pl {
327 status = "okay";
Michal Simek958c0e92020-11-26 14:25:02 +0100328};
329
330&zynqmp_dpdma {
331 status = "okay";
332};
333
334&zynqmp_dpsub {
335 status = "okay";
336 phy-names = "dp-phy0", "dp-phy1";
337 phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
338 <&psgtr 0 PHY_TYPE_DP 1 3>;
Michal Simeke116c542018-03-28 15:36:36 +0200339};