blob: a95bd4922a62c0a2f3326d19194eb1ae73961375 [file] [log] [blame]
Michal Simekf7c8e492018-03-28 15:36:36 +02001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * dts file for Xilinx ZynqMP ZCU104
4 *
Michal Simekd31f1c92020-02-18 08:38:06 +01005 * (C) Copyright 2017 - 2020, Xilinx, Inc.
Michal Simekf7c8e492018-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 RevA";
19 compatible = "xlnx,zynqmp-zcu104-revA", "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";
37 };
38
39 memory@0 {
40 device_type = "memory";
41 reg = <0x0 0x0 0x0 0x80000000>;
42 };
Michal Simekce906542020-11-26 14:25:02 +010043
44 clock_8t49n287_5: clk125 {
45 compatible = "fixed-clock";
46 #clock-cells = <0>;
47 clock-frequency = <125000000>;
48 };
49
50 clock_8t49n287_2: clk26 {
51 compatible = "fixed-clock";
52 #clock-cells = <0>;
53 clock-frequency = <26000000>;
54 };
55
56 clock_8t49n287_3: clk27 {
57 compatible = "fixed-clock";
58 #clock-cells = <0>;
59 clock-frequency = <27000000>;
60 };
Michal Simekf7c8e492018-03-28 15:36:36 +020061};
62
63&can1 {
64 status = "okay";
65};
66
67&dcc {
68 status = "okay";
69};
70
Michal Simek0ae57b32019-03-07 08:15:52 +010071&fpd_dma_chan1 {
72 status = "okay";
73};
74
75&fpd_dma_chan2 {
76 status = "okay";
77};
78
79&fpd_dma_chan3 {
80 status = "okay";
81};
82
83&fpd_dma_chan4 {
84 status = "okay";
85};
86
87&fpd_dma_chan5 {
88 status = "okay";
89};
90
91&fpd_dma_chan6 {
92 status = "okay";
93};
94
95&fpd_dma_chan7 {
96 status = "okay";
97};
98
99&fpd_dma_chan8 {
100 status = "okay";
101};
102
Michal Simekf7c8e492018-03-28 15:36:36 +0200103&gem3 {
104 status = "okay";
105 phy-handle = <&phy0>;
106 phy-mode = "rgmii-id";
Michal Simek2975a422019-08-08 12:44:22 +0200107 phy0: ethernet-phy@c {
Michal Simekf7c8e492018-03-28 15:36:36 +0200108 reg = <0xc>;
109 ti,rx-internal-delay = <0x8>;
110 ti,tx-internal-delay = <0xa>;
111 ti,fifo-depth = <0x1>;
Harini Katakam631d9a92019-02-13 17:02:21 +0530112 ti,dp83867-rxctrl-strap-quirk;
Michal Simekf7c8e492018-03-28 15:36:36 +0200113 };
114};
115
116&gpio {
117 status = "okay";
118};
119
120&gpu {
121 status = "okay";
122};
123
124&i2c1 {
125 status = "okay";
126 clock-frequency = <400000>;
127
128 /* Another connection to this bus via PL i2c via PCA9306 - u45 */
129 i2c-mux@74 { /* u34 */
130 compatible = "nxp,pca9548";
131 #address-cells = <1>;
132 #size-cells = <0>;
133 reg = <0x74>;
134 i2c@0 {
135 #address-cells = <1>;
136 #size-cells = <0>;
137 reg = <0>;
138 /*
139 * IIC_EEPROM 1kB memory which uses 256B blocks
140 * where every block has different address.
141 * 0 - 256B address 0x54
142 * 256B - 512B address 0x55
143 * 512B - 768B address 0x56
144 * 768B - 1024B address 0x57
145 */
146 eeprom: eeprom@54 { /* u23 */
147 compatible = "atmel,24c08";
148 reg = <0x54>;
149 #address-cells = <1>;
150 #size-cells = <1>;
151 };
152 };
153
154 i2c@1 {
155 #address-cells = <1>;
156 #size-cells = <0>;
157 reg = <1>;
158 clock_8t49n287: clock-generator@6c { /* 8T49N287 - u182 */
159 compatible = "idt,8t49n287";
160 reg = <0x6c>;
161 };
162 };
163
164 i2c@2 {
165 #address-cells = <1>;
166 #size-cells = <0>;
167 reg = <2>;
Michal Simek14c0fbb2020-03-30 11:35:38 +0200168 irps5401_43: irps5401@43 { /* IRPS5401 - u175 */
Michal Simekf7c8e492018-03-28 15:36:36 +0200169 compatible = "infineon,irps5401";
Michal Simek14c0fbb2020-03-30 11:35:38 +0200170 reg = <0x43>; /* pmbus / i2c 0x13 */
Michal Simekf7c8e492018-03-28 15:36:36 +0200171 };
Michal Simek14c0fbb2020-03-30 11:35:38 +0200172 irps5401_44: irps5401@44 { /* IRPS5401 - u180 */
Michal Simekf7c8e492018-03-28 15:36:36 +0200173 compatible = "infineon,irps5401";
Michal Simek14c0fbb2020-03-30 11:35:38 +0200174 reg = <0x44>; /* pmbus / i2c 0x14 */
Michal Simekf7c8e492018-03-28 15:36:36 +0200175 };
176 };
177
178 i2c@4 {
179 #address-cells = <1>;
180 #size-cells = <0>;
181 reg = <4>;
Michal Simekce236dc2018-05-29 15:28:43 +0200182 tca6416_u97: gpio@20 {
Michal Simekf7c8e492018-03-28 15:36:36 +0200183 compatible = "ti,tca6416";
Michal Simekce236dc2018-05-29 15:28:43 +0200184 reg = <0x20>;
Michal Simekf7c8e492018-03-28 15:36:36 +0200185 gpio-controller;
186 #gpio-cells = <2>;
187 /*
188 * IRQ not connected
189 * Lines:
190 * 0 - IRPS5401_ALERT_B
191 * 1 - HDMI_8T49N241_INT_ALM
192 * 2 - MAX6643_OT_B
193 * 3 - MAX6643_FANFAIL_B
194 * 5 - IIC_MUX_RESET_B
195 * 6 - GEM3_EXP_RESET_B
196 * 7 - FMC_LPC_PRSNT_M2C_B
197 * 4, 10 - 17 - not connected
198 */
199 };
200 };
201
202 i2c@5 {
203 #address-cells = <1>;
204 #size-cells = <0>;
205 reg = <5>;
206 };
207
208 i2c@7 {
209 #address-cells = <1>;
210 #size-cells = <0>;
211 reg = <7>;
212 };
213
214 /* 3, 6 not connected */
215 };
216};
217
218&qspi {
219 status = "okay";
220 flash@0 {
Neil Armstrongffd4c7c2019-02-10 10:16:20 +0000221 compatible = "m25p80", "jedec,spi-nor"; /* n25q512a 128MiB */
Michal Simekf7c8e492018-03-28 15:36:36 +0200222 #address-cells = <1>;
223 #size-cells = <1>;
224 reg = <0x0>;
225 spi-tx-bus-width = <1>;
226 spi-rx-bus-width = <4>;
227 spi-max-frequency = <108000000>; /* Based on DC1 spec */
Michal Simek5df63a62020-02-14 14:19:56 +0100228 partition@0 { /* for testing purpose */
Michal Simekf7c8e492018-03-28 15:36:36 +0200229 label = "qspi-fsbl-uboot";
230 reg = <0x0 0x100000>;
231 };
Michal Simek5df63a62020-02-14 14:19:56 +0100232 partition@100000 { /* for testing purpose */
Michal Simekf7c8e492018-03-28 15:36:36 +0200233 label = "qspi-linux";
234 reg = <0x100000 0x500000>;
235 };
Michal Simek5df63a62020-02-14 14:19:56 +0100236 partition@600000 { /* for testing purpose */
Michal Simekf7c8e492018-03-28 15:36:36 +0200237 label = "qspi-device-tree";
238 reg = <0x600000 0x20000>;
239 };
Michal Simek5df63a62020-02-14 14:19:56 +0100240 partition@620000 { /* for testing purpose */
Michal Simekf7c8e492018-03-28 15:36:36 +0200241 label = "qspi-rootfs";
242 reg = <0x620000 0x5E0000>;
243 };
244 };
245};
246
Michal Simekce906542020-11-26 14:25:02 +0100247&psgtr {
248 status = "okay";
249 /* nc, sata, usb3, dp */
250 clocks = <&clock_8t49n287_5>, <&clock_8t49n287_2>, <&clock_8t49n287_3>;
251 clock-names = "ref1", "ref2", "ref3";
252};
253
Michal Simekf7c8e492018-03-28 15:36:36 +0200254&rtc {
255 status = "okay";
256};
257
258&sata {
259 status = "okay";
260 /* SATA OOB timing settings */
261 ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
262 ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
263 ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
264 ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
265 ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
266 ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
267 ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
268 ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
269 phy-names = "sata-phy";
Michal Simekce906542020-11-26 14:25:02 +0100270 phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
Michal Simekf7c8e492018-03-28 15:36:36 +0200271};
272
273/* SD1 with level shifter */
274&sdhci1 {
275 status = "okay";
276 no-1-8-v;
Michal Simek01a6da12020-07-22 17:42:43 +0200277 xlnx,mio-bank = <1>;
Michal Simekf7c8e492018-03-28 15:36:36 +0200278 disable-wp;
279};
280
Michal Simekf7c8e492018-03-28 15:36:36 +0200281&uart0 {
282 status = "okay";
283};
284
285&uart1 {
286 status = "okay";
287};
288
289/* ULPI SMSC USB3320 */
290&usb0 {
291 status = "okay";
292};
293
294&dwc3_0 {
295 status = "okay";
296 dr_mode = "host";
297 snps,usb3_lpm_capable;
Michal Simekf7c8e492018-03-28 15:36:36 +0200298 maximum-speed = "super-speed";
299};
300
301&watchdog0 {
302 status = "okay";
303};
304
305&xilinx_ams {
306 status = "okay";
307};
308
309&ams_ps {
310 status = "okay";
311};
312
313&ams_pl {
314 status = "okay";
315};
Michal Simekce906542020-11-26 14:25:02 +0100316
317&zynqmp_dpdma {
318 status = "okay";
319};
320
321&zynqmp_dpsub {
322 status = "okay";
323 phy-names = "dp-phy0", "dp-phy1";
324 phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
325 <&psgtr 0 PHY_TYPE_DP 1 3>;
326};