GNU Linux-libre 5.4.274-gnu1
[releases.git] / arch / arm64 / boot / dts / xilinx / zynqmp-zcu106-revA.dts
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * dts file for Xilinx ZynqMP ZCU106
4  *
5  * (C) Copyright 2016, Xilinx, Inc.
6  *
7  * Michal Simek <michal.simek@xilinx.com>
8  */
9
10 /dts-v1/;
11
12 #include "zynqmp.dtsi"
13 #include "zynqmp-clk.dtsi"
14 #include <dt-bindings/input/input.h>
15 #include <dt-bindings/gpio/gpio.h>
16
17 / {
18         model = "ZynqMP ZCU106 RevA";
19         compatible = "xlnx,zynqmp-zcu106-revA", "xlnx,zynqmp-zcu106", "xlnx,zynqmp";
20
21         aliases {
22                 ethernet0 = &gem3;
23                 i2c0 = &i2c0;
24                 i2c1 = &i2c1;
25                 mmc0 = &sdhci1;
26                 rtc0 = &rtc;
27                 serial0 = &uart0;
28                 serial1 = &uart1;
29                 serial2 = &dcc;
30         };
31
32         chosen {
33                 bootargs = "earlycon";
34                 stdout-path = "serial0:115200n8";
35         };
36
37         memory@0 {
38                 device_type = "memory";
39                 reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
40         };
41
42         gpio-keys {
43                 compatible = "gpio-keys";
44                 autorepeat;
45                 sw19 {
46                         label = "sw19";
47                         gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
48                         linux,code = <KEY_DOWN>;
49                         wakeup-source;
50                         autorepeat;
51                 };
52         };
53
54         leds {
55                 compatible = "gpio-leds";
56                 heartbeat-led {
57                         label = "heartbeat";
58                         gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
59                         linux,default-trigger = "heartbeat";
60                 };
61         };
62 };
63
64 &can1 {
65         status = "okay";
66 };
67
68 &dcc {
69         status = "okay";
70 };
71
72 /* fpd_dma clk 667MHz, lpd_dma 500MHz */
73 &fpd_dma_chan1 {
74         status = "okay";
75 };
76
77 &fpd_dma_chan2 {
78         status = "okay";
79 };
80
81 &fpd_dma_chan3 {
82         status = "okay";
83 };
84
85 &fpd_dma_chan4 {
86         status = "okay";
87 };
88
89 &fpd_dma_chan5 {
90         status = "okay";
91 };
92
93 &fpd_dma_chan6 {
94         status = "okay";
95 };
96
97 &fpd_dma_chan7 {
98         status = "okay";
99 };
100
101 &fpd_dma_chan8 {
102         status = "okay";
103 };
104
105 &gem3 {
106         status = "okay";
107         phy-handle = <&phy0>;
108         phy-mode = "rgmii-id";
109         phy0: phy@c {
110                 reg = <0xc>;
111                 ti,rx-internal-delay = <0x8>;
112                 ti,tx-internal-delay = <0xa>;
113                 ti,fifo-depth = <0x1>;
114                 ti,dp83867-rxctrl-strap-quirk;
115         };
116 };
117
118 &gpio {
119         status = "okay";
120 };
121
122 &i2c0 {
123         status = "okay";
124         clock-frequency = <400000>;
125
126         tca6416_u97: gpio@20 {
127                 compatible = "ti,tca6416";
128                 reg = <0x20>;
129                 gpio-controller; /* interrupt not connected */
130                 #gpio-cells = <2>;
131                 /*
132                  * IRQ not connected
133                  * Lines:
134                  * 0 - SFP_SI5328_INT_ALM
135                  * 1 - HDMI_SI5328_INT_ALM
136                  * 5 - IIC_MUX_RESET_B
137                  * 6 - GEM3_EXP_RESET_B
138                  * 10 - FMC_HPC0_PRSNT_M2C_B
139                  * 11 - FMC_HPC1_PRSNT_M2C_B
140                  * 2-4, 7, 12-17 - not connected
141                  */
142         };
143
144         tca6416_u61: gpio@21 {
145                 compatible = "ti,tca6416";
146                 reg = <0x21>;
147                 gpio-controller;
148                 #gpio-cells = <2>;
149                 /*
150                  * IRQ not connected
151                  * Lines:
152                  * 0 - VCCPSPLL_EN
153                  * 1 - MGTRAVCC_EN
154                  * 2 - MGTRAVTT_EN
155                  * 3 - VCCPSDDRPLL_EN
156                  * 4 - MIO26_PMU_INPUT_LS
157                  * 5 - PL_PMBUS_ALERT
158                  * 6 - PS_PMBUS_ALERT
159                  * 7 - MAXIM_PMBUS_ALERT
160                  * 10 - PL_DDR4_VTERM_EN
161                  * 11 - PL_DDR4_VPP_2V5_EN
162                  * 12 - PS_DIMM_VDDQ_TO_PSVCCO_ON
163                  * 13 - PS_DIMM_SUSPEND_EN
164                  * 14 - PS_DDR4_VTERM_EN
165                  * 15 - PS_DDR4_VPP_2V5_EN
166                  * 16 - 17 - not connected
167                  */
168         };
169
170         i2c-mux@75 { /* u60 */
171                 compatible = "nxp,pca9544";
172                 #address-cells = <1>;
173                 #size-cells = <0>;
174                 reg = <0x75>;
175                 i2c@0 {
176                         #address-cells = <1>;
177                         #size-cells = <0>;
178                         reg = <0>;
179                         /* PS_PMBUS */
180                         ina226@40 { /* u76 */
181                                 compatible = "ti,ina226";
182                                 reg = <0x40>;
183                                 shunt-resistor = <5000>;
184                         };
185                         ina226@41 { /* u77 */
186                                 compatible = "ti,ina226";
187                                 reg = <0x41>;
188                                 shunt-resistor = <5000>;
189                         };
190                         ina226@42 { /* u78 */
191                                 compatible = "ti,ina226";
192                                 reg = <0x42>;
193                                 shunt-resistor = <5000>;
194                         };
195                         ina226@43 { /* u87 */
196                                 compatible = "ti,ina226";
197                                 reg = <0x43>;
198                                 shunt-resistor = <5000>;
199                         };
200                         ina226@44 { /* u85 */
201                                 compatible = "ti,ina226";
202                                 reg = <0x44>;
203                                 shunt-resistor = <5000>;
204                         };
205                         ina226@45 { /* u86 */
206                                 compatible = "ti,ina226";
207                                 reg = <0x45>;
208                                 shunt-resistor = <5000>;
209                         };
210                         ina226@46 { /* u93 */
211                                 compatible = "ti,ina226";
212                                 reg = <0x46>;
213                                 shunt-resistor = <5000>;
214                         };
215                         ina226@47 { /* u88 */
216                                 compatible = "ti,ina226";
217                                 reg = <0x47>;
218                                 shunt-resistor = <5000>;
219                         };
220                         ina226@4a { /* u15 */
221                                 compatible = "ti,ina226";
222                                 reg = <0x4a>;
223                                 shunt-resistor = <5000>;
224                         };
225                         ina226@4b { /* u92 */
226                                 compatible = "ti,ina226";
227                                 reg = <0x4b>;
228                                 shunt-resistor = <5000>;
229                         };
230                 };
231                 i2c@1 {
232                         #address-cells = <1>;
233                         #size-cells = <0>;
234                         reg = <1>;
235                         /* PL_PMBUS */
236                         ina226@40 { /* u79 */
237                                 compatible = "ti,ina226";
238                                 reg = <0x40>;
239                                 shunt-resistor = <2000>;
240                         };
241                         ina226@41 { /* u81 */
242                                 compatible = "ti,ina226";
243                                 reg = <0x41>;
244                                 shunt-resistor = <5000>;
245                         };
246                         ina226@42 { /* u80 */
247                                 compatible = "ti,ina226";
248                                 reg = <0x42>;
249                                 shunt-resistor = <5000>;
250                         };
251                         ina226@43 { /* u84 */
252                                 compatible = "ti,ina226";
253                                 reg = <0x43>;
254                                 shunt-resistor = <5000>;
255                         };
256                         ina226@44 { /* u16 */
257                                 compatible = "ti,ina226";
258                                 reg = <0x44>;
259                                 shunt-resistor = <5000>;
260                         };
261                         ina226@45 { /* u65 */
262                                 compatible = "ti,ina226";
263                                 reg = <0x45>;
264                                 shunt-resistor = <5000>;
265                         };
266                         ina226@46 { /* u74 */
267                                 compatible = "ti,ina226";
268                                 reg = <0x46>;
269                                 shunt-resistor = <5000>;
270                         };
271                         ina226@47 { /* u75 */
272                                 compatible = "ti,ina226";
273                                 reg = <0x47>;
274                                 shunt-resistor = <5000>;
275                         };
276                 };
277                 i2c@2 {
278                         #address-cells = <1>;
279                         #size-cells = <0>;
280                         reg = <2>;
281                         /* MAXIM_PMBUS - 00 */
282                         max15301@a { /* u46 */
283                                 compatible = "maxim,max15301";
284                                 reg = <0xa>;
285                         };
286                         max15303@b { /* u4 */
287                                 compatible = "maxim,max15303";
288                                 reg = <0xb>;
289                         };
290                         max15303@10 { /* u13 */
291                                 compatible = "maxim,max15303";
292                                 reg = <0x10>;
293                         };
294                         max15301@13 { /* u47 */
295                                 compatible = "maxim,max15301";
296                                 reg = <0x13>;
297                         };
298                         max15303@14 { /* u7 */
299                                 compatible = "maxim,max15303";
300                                 reg = <0x14>;
301                         };
302                         max15303@15 { /* u6 */
303                                 compatible = "maxim,max15303";
304                                 reg = <0x15>;
305                         };
306                         max15303@16 { /* u10 */
307                                 compatible = "maxim,max15303";
308                                 reg = <0x16>;
309                         };
310                         max15303@17 { /* u9 */
311                                 compatible = "maxim,max15303";
312                                 reg = <0x17>;
313                         };
314                         max15301@18 { /* u63 */
315                                 compatible = "maxim,max15301";
316                                 reg = <0x18>;
317                         };
318                         max15303@1a { /* u49 */
319                                 compatible = "maxim,max15303";
320                                 reg = <0x1a>;
321                         };
322                         max15303@1b { /* u8 */
323                                 compatible = "maxim,max15303";
324                                 reg = <0x1b>;
325                         };
326                         max15303@1d { /* u18 */
327                                 compatible = "maxim,max15303";
328                                 reg = <0x1d>;
329                         };
330
331                         max20751@72 { /* u95 */
332                                 compatible = "maxim,max20751";
333                                 reg = <0x72>;
334                         };
335                         max20751@73 { /* u96 */
336                                 compatible = "maxim,max20751";
337                                 reg = <0x73>;
338                         };
339                 };
340                 /* Bus 3 is not connected */
341         };
342 };
343
344 &i2c1 {
345         status = "okay";
346         clock-frequency = <400000>;
347
348         /* PL i2c via PCA9306 - u45 */
349         i2c-mux@74 { /* u34 */
350                 compatible = "nxp,pca9548";
351                 #address-cells = <1>;
352                 #size-cells = <0>;
353                 reg = <0x74>;
354                 i2c@0 {
355                         #address-cells = <1>;
356                         #size-cells = <0>;
357                         reg = <0>;
358                         /*
359                          * IIC_EEPROM 1kB memory which uses 256B blocks
360                          * where every block has different address.
361                          *    0 - 256B address 0x54
362                          * 256B - 512B address 0x55
363                          * 512B - 768B address 0x56
364                          * 768B - 1024B address 0x57
365                          */
366                         eeprom: eeprom@54 { /* u23 */
367                                 compatible = "atmel,24c08";
368                                 reg = <0x54>;
369                         };
370                 };
371                 i2c@1 {
372                         #address-cells = <1>;
373                         #size-cells = <0>;
374                         reg = <1>;
375                         si5341: clock-generator@36 { /* SI5341 - u69 */
376                                 reg = <0x36>;
377                         };
378
379                 };
380                 i2c@2 {
381                         #address-cells = <1>;
382                         #size-cells = <0>;
383                         reg = <2>;
384                         si570_1: clock-generator@5d { /* USER SI570 - u42 */
385                                 #clock-cells = <0>;
386                                 compatible = "silabs,si570";
387                                 reg = <0x5d>;
388                                 temperature-stability = <50>;
389                                 factory-fout = <300000000>;
390                                 clock-frequency = <300000000>;
391                         };
392                 };
393                 i2c@3 {
394                         #address-cells = <1>;
395                         #size-cells = <0>;
396                         reg = <3>;
397                         si570_2: clock-generator@5d { /* USER MGT SI570 - u56 */
398                                 #clock-cells = <0>;
399                                 compatible = "silabs,si570";
400                                 reg = <0x5d>;
401                                 temperature-stability = <50>; /* copy from zc702 */
402                                 factory-fout = <156250000>;
403                                 clock-frequency = <148500000>;
404                         };
405                 };
406                 i2c@4 {
407                         #address-cells = <1>;
408                         #size-cells = <0>;
409                         reg = <4>;
410                         si5328: clock-generator@69 {/* SI5328 - u20 */
411                                 reg = <0x69>;
412                         };
413                 };
414                 i2c@5 {
415                         #address-cells = <1>;
416                         #size-cells = <0>;
417                         reg = <5>; /* FAN controller */
418                         temp@4c {/* lm96163 - u128 */
419                                 compatible = "national,lm96163";
420                                 reg = <0x4c>;
421                         };
422                 };
423                 /* 6 - 7 unconnected */
424         };
425
426         i2c-mux@75 {
427                 compatible = "nxp,pca9548"; /* u135 */
428                 #address-cells = <1>;
429                 #size-cells = <0>;
430                 reg = <0x75>;
431
432                 i2c@0 {
433                         #address-cells = <1>;
434                         #size-cells = <0>;
435                         reg = <0>;
436                         /* HPC0_IIC */
437                 };
438                 i2c@1 {
439                         #address-cells = <1>;
440                         #size-cells = <0>;
441                         reg = <1>;
442                         /* HPC1_IIC */
443                 };
444                 i2c@2 {
445                         #address-cells = <1>;
446                         #size-cells = <0>;
447                         reg = <2>;
448                         /* SYSMON */
449                 };
450                 i2c@3 {
451                         #address-cells = <1>;
452                         #size-cells = <0>;
453                         reg = <3>;
454                         /* DDR4 SODIMM */
455                 };
456                 i2c@4 {
457                         #address-cells = <1>;
458                         #size-cells = <0>;
459                         reg = <4>;
460                         /* SEP 3 */
461                 };
462                 i2c@5 {
463                         #address-cells = <1>;
464                         #size-cells = <0>;
465                         reg = <5>;
466                         /* SEP 2 */
467                 };
468                 i2c@6 {
469                         #address-cells = <1>;
470                         #size-cells = <0>;
471                         reg = <6>;
472                         /* SEP 1 */
473                 };
474                 i2c@7 {
475                         #address-cells = <1>;
476                         #size-cells = <0>;
477                         reg = <7>;
478                         /* SEP 0 */
479                 };
480         };
481 };
482
483 &rtc {
484         status = "okay";
485 };
486
487 &sata {
488         status = "okay";
489         /* SATA OOB timing settings */
490         ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
491         ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
492         ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
493         ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
494         ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
495         ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
496         ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
497         ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
498 };
499
500 /* SD1 with level shifter */
501 &sdhci1 {
502         status = "okay";
503         no-1-8-v;
504 };
505
506 &uart0 {
507         status = "okay";
508 };
509
510 &uart1 {
511         status = "okay";
512 };
513
514 /* ULPI SMSC USB3320 */
515 &usb0 {
516         status = "okay";
517 };
518
519 &watchdog0 {
520         status = "okay";
521 };