blob: e11d282462bd3d65f577ca0ab4a31afc50e27a7c [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * dts file for Xilinx ZynqMP
4 *
5 * (C) Copyright 2014 - 2021, Xilinx, Inc.
6 *
7 * Michal Simek <michal.simek@amd.com>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (at your option) any later version.
13 */
14
15#include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
16#include <dt-bindings/gpio/gpio.h>
17#include <dt-bindings/interrupt-controller/arm-gic.h>
18#include <dt-bindings/interrupt-controller/irq.h>
19#include <dt-bindings/power/xlnx-zynqmp-power.h>
20#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
Tom Rini844493d2025-01-26 16:17:47 -060021#include <dt-bindings/thermal/thermal.h>
Tom Rini53633a82024-02-29 12:33:36 -050022
23/ {
24 compatible = "xlnx,zynqmp";
25 #address-cells = <2>;
26 #size-cells = <2>;
27
Tom Rini6bb92fc2024-05-20 09:54:58 -060028 options {
29 u-boot {
30 compatible = "u-boot,config";
31 bootscr-address = /bits/ 64 <0x20000000>;
32 };
33 };
34
Tom Rini53633a82024-02-29 12:33:36 -050035 cpus {
36 #address-cells = <1>;
37 #size-cells = <0>;
38
39 cpu0: cpu@0 {
Tom Rini844493d2025-01-26 16:17:47 -060040 #cooling-cells = <2>;
Tom Rini53633a82024-02-29 12:33:36 -050041 compatible = "arm,cortex-a53";
42 device_type = "cpu";
43 enable-method = "psci";
44 operating-points-v2 = <&cpu_opp_table>;
45 reg = <0x0>;
46 cpu-idle-states = <&CPU_SLEEP_0>;
47 next-level-cache = <&L2>;
48 };
49
50 cpu1: cpu@1 {
Tom Rini844493d2025-01-26 16:17:47 -060051 #cooling-cells = <2>;
Tom Rini53633a82024-02-29 12:33:36 -050052 compatible = "arm,cortex-a53";
53 device_type = "cpu";
54 enable-method = "psci";
55 reg = <0x1>;
56 operating-points-v2 = <&cpu_opp_table>;
57 cpu-idle-states = <&CPU_SLEEP_0>;
58 next-level-cache = <&L2>;
59 };
60
61 cpu2: cpu@2 {
Tom Rini844493d2025-01-26 16:17:47 -060062 #cooling-cells = <2>;
Tom Rini53633a82024-02-29 12:33:36 -050063 compatible = "arm,cortex-a53";
64 device_type = "cpu";
65 enable-method = "psci";
66 reg = <0x2>;
67 operating-points-v2 = <&cpu_opp_table>;
68 cpu-idle-states = <&CPU_SLEEP_0>;
69 next-level-cache = <&L2>;
70 };
71
72 cpu3: cpu@3 {
Tom Rini844493d2025-01-26 16:17:47 -060073 #cooling-cells = <2>;
Tom Rini53633a82024-02-29 12:33:36 -050074 compatible = "arm,cortex-a53";
75 device_type = "cpu";
76 enable-method = "psci";
77 reg = <0x3>;
78 operating-points-v2 = <&cpu_opp_table>;
79 cpu-idle-states = <&CPU_SLEEP_0>;
80 next-level-cache = <&L2>;
81 };
82
83 L2: l2-cache {
84 compatible = "cache";
85 cache-level = <2>;
86 cache-unified;
87 };
88
89 idle-states {
90 entry-method = "psci";
91
92 CPU_SLEEP_0: cpu-sleep-0 {
93 compatible = "arm,idle-state";
94 arm,psci-suspend-param = <0x40000000>;
95 local-timer-stop;
96 entry-latency-us = <300>;
97 exit-latency-us = <600>;
98 min-residency-us = <10000>;
99 };
100 };
101 };
102
103 cpu_opp_table: opp-table-cpu {
104 compatible = "operating-points-v2";
105 opp-shared;
106 opp00 {
107 opp-hz = /bits/ 64 <1199999988>;
108 opp-microvolt = <1000000>;
109 clock-latency-ns = <500000>;
110 };
111 opp01 {
112 opp-hz = /bits/ 64 <599999994>;
113 opp-microvolt = <1000000>;
114 clock-latency-ns = <500000>;
115 };
116 opp02 {
117 opp-hz = /bits/ 64 <399999996>;
118 opp-microvolt = <1000000>;
119 clock-latency-ns = <500000>;
120 };
121 opp03 {
122 opp-hz = /bits/ 64 <299999997>;
123 opp-microvolt = <1000000>;
124 clock-latency-ns = <500000>;
125 };
126 };
127
128 reserved-memory {
129 #address-cells = <2>;
130 #size-cells = <2>;
131 ranges;
132
133 rproc_0_fw_image: memory@3ed00000 {
134 no-map;
135 reg = <0x0 0x3ed00000 0x0 0x40000>;
136 };
137
138 rproc_1_fw_image: memory@3ef00000 {
139 no-map;
140 reg = <0x0 0x3ef00000 0x0 0x40000>;
141 };
142 };
143
Tom Rini93743d22024-04-01 09:08:13 -0400144 zynqmp_ipi: zynqmp-ipi {
Tom Rini53633a82024-02-29 12:33:36 -0500145 bootph-all;
146 compatible = "xlnx,zynqmp-ipi-mailbox";
147 interrupt-parent = <&gic>;
148 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
149 xlnx,ipi-id = <0>;
150 #address-cells = <2>;
151 #size-cells = <2>;
152 ranges;
153
154 ipi_mailbox_pmu1: mailbox@ff9905c0 {
155 bootph-all;
Tom Rini93743d22024-04-01 09:08:13 -0400156 compatible = "xlnx,zynqmp-ipi-dest-mailbox";
Tom Rini53633a82024-02-29 12:33:36 -0500157 reg = <0x0 0xff9905c0 0x0 0x20>,
158 <0x0 0xff9905e0 0x0 0x20>,
159 <0x0 0xff990e80 0x0 0x20>,
160 <0x0 0xff990ea0 0x0 0x20>;
161 reg-names = "local_request_region",
162 "local_response_region",
163 "remote_request_region",
164 "remote_response_region";
165 #mbox-cells = <1>;
166 xlnx,ipi-id = <4>;
167 };
168 };
169
170 dcc: dcc {
171 compatible = "arm,dcc";
172 status = "disabled";
173 bootph-all;
174 };
175
176 pmu {
Tom Rini762f85b2024-07-20 11:15:10 -0600177 compatible = "arm,cortex-a53-pmu";
Tom Rini53633a82024-02-29 12:33:36 -0500178 interrupt-parent = <&gic>;
179 interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
180 <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
181 <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
182 <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
183 interrupt-affinity = <&cpu0>,
184 <&cpu1>,
185 <&cpu2>,
186 <&cpu3>;
187 };
188
189 psci {
190 compatible = "arm,psci-0.2";
191 method = "smc";
192 };
193
194 firmware {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600195 optee: optee {
196 compatible = "linaro,optee-tz";
197 method = "smc";
198 };
199
Tom Rini53633a82024-02-29 12:33:36 -0500200 zynqmp_firmware: zynqmp-firmware {
201 compatible = "xlnx,zynqmp-firmware";
202 #power-domain-cells = <1>;
203 method = "smc";
204 bootph-all;
205
Tom Rini6bb92fc2024-05-20 09:54:58 -0600206 zynqmp_power: power-management {
Tom Rini53633a82024-02-29 12:33:36 -0500207 bootph-all;
208 compatible = "xlnx,zynqmp-power";
209 interrupt-parent = <&gic>;
210 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
211 mboxes = <&ipi_mailbox_pmu1 0>, <&ipi_mailbox_pmu1 1>;
212 mbox-names = "tx", "rx";
213 };
214
Tom Rini6b642ac2024-10-01 12:20:28 -0600215 soc-nvmem {
Tom Rini53633a82024-02-29 12:33:36 -0500216 compatible = "xlnx,zynqmp-nvmem-fw";
Tom Rini6b642ac2024-10-01 12:20:28 -0600217 nvmem-layout {
218 compatible = "fixed-layout";
219 #address-cells = <1>;
220 #size-cells = <1>;
Tom Rini53633a82024-02-29 12:33:36 -0500221
Tom Rini6b642ac2024-10-01 12:20:28 -0600222 soc_revision: soc-revision@0 {
223 reg = <0x0 0x4>;
224 };
225 /* efuse access */
226 efuse_dna: efuse-dna@c {
227 reg = <0xc 0xc>;
228 };
229 efuse_usr0: efuse-usr0@20 {
230 reg = <0x20 0x4>;
231 };
232 efuse_usr1: efuse-usr1@24 {
233 reg = <0x24 0x4>;
234 };
235 efuse_usr2: efuse-usr2@28 {
236 reg = <0x28 0x4>;
237 };
238 efuse_usr3: efuse-usr3@2c {
239 reg = <0x2c 0x4>;
240 };
241 efuse_usr4: efuse-usr4@30 {
242 reg = <0x30 0x4>;
243 };
244 efuse_usr5: efuse-usr5@34 {
245 reg = <0x34 0x4>;
246 };
247 efuse_usr6: efuse-usr6@38 {
248 reg = <0x38 0x4>;
249 };
250 efuse_usr7: efuse-usr7@3c {
251 reg = <0x3c 0x4>;
252 };
253 efuse_miscusr: efuse-miscusr@40 {
254 reg = <0x40 0x4>;
255 };
256 efuse_chash: efuse-chash@50 {
257 reg = <0x50 0x4>;
258 };
259 efuse_pufmisc: efuse-pufmisc@54 {
260 reg = <0x54 0x4>;
261 };
262 efuse_sec: efuse-sec@58 {
263 reg = <0x58 0x4>;
264 };
265 efuse_spkid: efuse-spkid@5c {
266 reg = <0x5c 0x4>;
267 };
268 efuse_aeskey: efuse-aeskey@60 {
269 reg = <0x60 0x20>;
270 };
271 efuse_ppk0hash: efuse-ppk0hash@a0 {
272 reg = <0xa0 0x30>;
273 };
274 efuse_ppk1hash: efuse-ppk1hash@d0 {
275 reg = <0xd0 0x30>;
276 };
277 efuse_pufuser: efuse-pufuser@100 {
278 reg = <0x100 0x7F>;
279 };
Tom Rini53633a82024-02-29 12:33:36 -0500280 };
281 };
282
283 zynqmp_pcap: pcap {
284 compatible = "xlnx,zynqmp-pcap-fpga";
285 };
286
287 xlnx_aes: zynqmp-aes {
288 compatible = "xlnx,zynqmp-aes";
289 };
290
291 zynqmp_reset: reset-controller {
292 compatible = "xlnx,zynqmp-reset";
293 #reset-cells = <1>;
294 };
295
296 pinctrl0: pinctrl {
297 compatible = "xlnx,zynqmp-pinctrl";
298 status = "disabled";
299 };
300
301 modepin_gpio: gpio {
302 compatible = "xlnx,zynqmp-gpio-modepin";
303 gpio-controller;
304 #gpio-cells = <2>;
305 };
306 };
307 };
308
309 timer {
310 compatible = "arm,armv8-timer";
311 interrupt-parent = <&gic>;
312 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
313 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
314 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
315 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
316 };
317
Tom Rini6b642ac2024-10-01 12:20:28 -0600318 fpga_full: fpga-region {
Tom Rini53633a82024-02-29 12:33:36 -0500319 compatible = "fpga-region";
320 fpga-mgr = <&zynqmp_pcap>;
321 #address-cells = <2>;
322 #size-cells = <2>;
323 ranges;
324 };
325
Tom Rini6b642ac2024-10-01 12:20:28 -0600326 rproc_lockstep: remoteproc@ffe00000 {
Tom Rini53633a82024-02-29 12:33:36 -0500327 compatible = "xlnx,zynqmp-r5fss";
328 xlnx,cluster-mode = <1>;
Tom Rini6b642ac2024-10-01 12:20:28 -0600329 xlnx,tcm-mode = <1>;
Tom Rini53633a82024-02-29 12:33:36 -0500330
Tom Rini6b642ac2024-10-01 12:20:28 -0600331 #address-cells = <2>;
332 #size-cells = <2>;
333
334 ranges = <0x0 0x0 0x0 0xffe00000 0x0 0x10000>,
335 <0x0 0x20000 0x0 0xffe20000 0x0 0x10000>,
336 <0x0 0x10000 0x0 0xffe10000 0x0 0x10000>,
337 <0x0 0x30000 0x0 0xffe30000 0x0 0x10000>;
338
339 r5f@0 {
340 compatible = "xlnx,zynqmp-r5f";
341 reg = <0x0 0x0 0x0 0x10000>,
342 <0x0 0x20000 0x0 0x10000>,
343 <0x0 0x10000 0x0 0x10000>,
344 <0x0 0x30000 0x0 0x10000>;
345 reg-names = "atcm0", "btcm0", "atcm1", "btcm1";
346 power-domains = <&zynqmp_firmware PD_RPU_0>,
347 <&zynqmp_firmware PD_R5_0_ATCM>,
348 <&zynqmp_firmware PD_R5_0_BTCM>,
349 <&zynqmp_firmware PD_R5_1_ATCM>,
350 <&zynqmp_firmware PD_R5_1_BTCM>;
351 memory-region = <&rproc_0_fw_image>;
352 };
353
354 r5f@1 {
355 compatible = "xlnx,zynqmp-r5f";
356 reg = <0x1 0x0 0x0 0x10000>, <0x1 0x20000 0x0 0x10000>;
357 reg-names = "atcm0", "btcm0";
358 power-domains = <&zynqmp_firmware PD_RPU_1>,
359 <&zynqmp_firmware PD_R5_1_ATCM>,
360 <&zynqmp_firmware PD_R5_1_BTCM>;
361 memory-region = <&rproc_1_fw_image>;
362 };
363 };
364
365 rproc_split: remoteproc-split@ffe00000 {
366 status = "disabled";
367 compatible = "xlnx,zynqmp-r5fss";
368 xlnx,cluster-mode = <0>;
369 xlnx,tcm-mode = <0>;
370
371 #address-cells = <2>;
372 #size-cells = <2>;
373
374 ranges = <0x0 0x0 0x0 0xffe00000 0x0 0x10000>,
375 <0x0 0x20000 0x0 0xffe20000 0x0 0x10000>,
376 <0x1 0x0 0x0 0xffe90000 0x0 0x10000>,
377 <0x1 0x20000 0x0 0xffeb0000 0x0 0x10000>;
378
379 r5f@0 {
Tom Rini53633a82024-02-29 12:33:36 -0500380 compatible = "xlnx,zynqmp-r5f";
Tom Rini6b642ac2024-10-01 12:20:28 -0600381 reg = <0x0 0x0 0x0 0x10000>, <0x0 0x20000 0x0 0x10000>;
382 reg-names = "atcm0", "btcm0";
383 power-domains = <&zynqmp_firmware PD_RPU_0>,
384 <&zynqmp_firmware PD_R5_0_ATCM>,
385 <&zynqmp_firmware PD_R5_0_BTCM>;
Tom Rini53633a82024-02-29 12:33:36 -0500386 memory-region = <&rproc_0_fw_image>;
387 };
388
Tom Rini6b642ac2024-10-01 12:20:28 -0600389 r5f@1 {
Tom Rini53633a82024-02-29 12:33:36 -0500390 compatible = "xlnx,zynqmp-r5f";
Tom Rini6b642ac2024-10-01 12:20:28 -0600391 reg = <0x1 0x0 0x0 0x10000>, <0x1 0x20000 0x0 0x10000>;
392 reg-names = "atcm0", "btcm0";
393 power-domains = <&zynqmp_firmware PD_RPU_1>,
394 <&zynqmp_firmware PD_R5_1_ATCM>,
395 <&zynqmp_firmware PD_R5_1_BTCM>;
Tom Rini53633a82024-02-29 12:33:36 -0500396 memory-region = <&rproc_1_fw_image>;
397 };
398 };
399
Tom Rini844493d2025-01-26 16:17:47 -0600400 ams {
401 compatible = "iio-hwmon";
402 io-channels = <&xilinx_ams 0>, <&xilinx_ams 1>, <&xilinx_ams 2>,
403 <&xilinx_ams 3>, <&xilinx_ams 4>, <&xilinx_ams 5>,
404 <&xilinx_ams 6>, <&xilinx_ams 7>, <&xilinx_ams 8>,
405 <&xilinx_ams 9>, <&xilinx_ams 10>, <&xilinx_ams 11>,
406 <&xilinx_ams 12>, <&xilinx_ams 13>, <&xilinx_ams 14>,
407 <&xilinx_ams 15>, <&xilinx_ams 16>, <&xilinx_ams 17>,
408 <&xilinx_ams 18>, <&xilinx_ams 19>, <&xilinx_ams 20>,
409 <&xilinx_ams 21>, <&xilinx_ams 22>, <&xilinx_ams 23>,
410 <&xilinx_ams 24>, <&xilinx_ams 25>, <&xilinx_ams 26>,
411 <&xilinx_ams 27>, <&xilinx_ams 28>, <&xilinx_ams 29>;
412 };
413
414
415 tsens_apu: thermal-sensor-apu {
416 compatible = "generic-adc-thermal";
417 #thermal-sensor-cells = <0>;
418 io-channels = <&xilinx_ams 7>;
419 io-channel-names = "sensor-channel";
420 };
421
422 tsens_rpu: thermal-sensor-rpu {
423 compatible = "generic-adc-thermal";
424 #thermal-sensor-cells = <0>;
425 io-channels = <&xilinx_ams 8>;
426 io-channel-names = "sensor-channel";
427 };
428
429 tsens_pl: thermal-sensor-pl {
430 compatible = "generic-adc-thermal";
431 #thermal-sensor-cells = <0>;
432 io-channels = <&xilinx_ams 20>;
433 io-channel-names = "sensor-channel";
434 };
435
436 thermal-zones {
437 apu-thermal {
438 polling-delay-passive = <1000>;
439 polling-delay = <5000>;
440 thermal-sensors = <&tsens_apu>;
441
442 trips {
443 apu_passive: passive {
444 temperature = <93000>;
445 hysteresis = <3500>;
446 type = "passive";
447 };
448
449 apu_critical: critical {
450 temperature = <96500>;
451 hysteresis = <3500>;
452 type = "critical";
453 };
454 };
455
456 cooling-maps {
457 map {
458 trip = <&apu_passive>;
459 cooling-device =
460 <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
461 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
462 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
463 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
464 };
465 };
466 };
467
468 rpu-thermal {
469 polling-delay = <10000>;
470 thermal-sensors = <&tsens_rpu>;
471
472 trips {
473 critical {
474 temperature = <96500>;
475 hysteresis = <3500>;
476 type = "critical";
477 };
478 };
479 };
480
481 pl-thermal {
482 polling-delay = <10000>;
483 thermal-sensors = <&tsens_pl>;
484
485 trips {
486 critical {
487 temperature = <96500>;
488 hysteresis = <3500>;
489 type = "critical";
490 };
491 };
492 };
493 };
494
Tom Rini53633a82024-02-29 12:33:36 -0500495 amba: axi {
496 compatible = "simple-bus";
497 bootph-all;
498 #address-cells = <2>;
499 #size-cells = <2>;
500 ranges;
501
502 can0: can@ff060000 {
503 compatible = "xlnx,zynq-can-1.0";
504 status = "disabled";
505 clock-names = "can_clk", "pclk";
506 reg = <0x0 0xff060000 0x0 0x1000>;
507 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
508 interrupt-parent = <&gic>;
509 tx-fifo-depth = <0x40>;
510 rx-fifo-depth = <0x40>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600511 resets = <&zynqmp_reset ZYNQMP_RESET_CAN0>;
Tom Rini53633a82024-02-29 12:33:36 -0500512 power-domains = <&zynqmp_firmware PD_CAN_0>;
513 };
514
515 can1: can@ff070000 {
516 compatible = "xlnx,zynq-can-1.0";
517 status = "disabled";
518 clock-names = "can_clk", "pclk";
519 reg = <0x0 0xff070000 0x0 0x1000>;
520 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
521 interrupt-parent = <&gic>;
522 tx-fifo-depth = <0x40>;
523 rx-fifo-depth = <0x40>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600524 resets = <&zynqmp_reset ZYNQMP_RESET_CAN1>;
Tom Rini53633a82024-02-29 12:33:36 -0500525 power-domains = <&zynqmp_firmware PD_CAN_1>;
526 };
527
528 cci: cci@fd6e0000 {
529 compatible = "arm,cci-400";
530 status = "disabled";
531 reg = <0x0 0xfd6e0000 0x0 0x9000>;
532 ranges = <0x0 0x0 0xfd6e0000 0x10000>;
533 #address-cells = <1>;
534 #size-cells = <1>;
535
536 pmu@9000 {
537 compatible = "arm,cci-400-pmu,r1";
538 reg = <0x9000 0x5000>;
539 interrupt-parent = <&gic>;
540 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
541 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
542 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
543 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
544 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
545 };
546 };
547
Tom Rini6b642ac2024-10-01 12:20:28 -0600548 cpu0_debug: debug@fec10000 {
549 compatible = "arm,coresight-cpu-debug", "arm,primecell";
550 reg = <0x0 0xfec10000 0x0 0x1000>;
551 clock-names = "apb_pclk";
552 cpu = <&cpu0>;
553 };
554
555 cpu1_debug: debug@fed10000 {
556 compatible = "arm,coresight-cpu-debug", "arm,primecell";
557 reg = <0x0 0xfed10000 0x0 0x1000>;
558 clock-names = "apb_pclk";
559 cpu = <&cpu1>;
560 };
561
562 cpu2_debug: debug@fee10000 {
563 compatible = "arm,coresight-cpu-debug", "arm,primecell";
564 reg = <0x0 0xfee10000 0x0 0x1000>;
565 clock-names = "apb_pclk";
566 cpu = <&cpu2>;
567 };
568
569 cpu3_debug: debug@fef10000 {
570 compatible = "arm,coresight-cpu-debug", "arm,primecell";
571 reg = <0x0 0xfef10000 0x0 0x1000>;
572 clock-names = "apb_pclk";
573 cpu = <&cpu3>;
574 };
575
Tom Rini53633a82024-02-29 12:33:36 -0500576 /* GDMA */
577 fpd_dma_chan1: dma-controller@fd500000 {
578 status = "disabled";
579 compatible = "xlnx,zynqmp-dma-1.0";
580 reg = <0x0 0xfd500000 0x0 0x1000>;
581 interrupt-parent = <&gic>;
582 interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
583 clock-names = "clk_main", "clk_apb";
584 #dma-cells = <1>;
585 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600586 /* iommus = <&smmu 0x14e8>; */
Tom Rini53633a82024-02-29 12:33:36 -0500587 power-domains = <&zynqmp_firmware PD_GDMA>;
588 };
589
590 fpd_dma_chan2: dma-controller@fd510000 {
591 status = "disabled";
592 compatible = "xlnx,zynqmp-dma-1.0";
593 reg = <0x0 0xfd510000 0x0 0x1000>;
594 interrupt-parent = <&gic>;
595 interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
596 clock-names = "clk_main", "clk_apb";
597 #dma-cells = <1>;
598 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600599 /* iommus = <&smmu 0x14e9>; */
Tom Rini53633a82024-02-29 12:33:36 -0500600 power-domains = <&zynqmp_firmware PD_GDMA>;
601 };
602
603 fpd_dma_chan3: dma-controller@fd520000 {
604 status = "disabled";
605 compatible = "xlnx,zynqmp-dma-1.0";
606 reg = <0x0 0xfd520000 0x0 0x1000>;
607 interrupt-parent = <&gic>;
608 interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
609 clock-names = "clk_main", "clk_apb";
610 #dma-cells = <1>;
611 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600612 /* iommus = <&smmu 0x14ea>; */
Tom Rini53633a82024-02-29 12:33:36 -0500613 power-domains = <&zynqmp_firmware PD_GDMA>;
614 };
615
616 fpd_dma_chan4: dma-controller@fd530000 {
617 status = "disabled";
618 compatible = "xlnx,zynqmp-dma-1.0";
619 reg = <0x0 0xfd530000 0x0 0x1000>;
620 interrupt-parent = <&gic>;
621 interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
622 clock-names = "clk_main", "clk_apb";
623 #dma-cells = <1>;
624 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600625 /* iommus = <&smmu 0x14eb>; */
Tom Rini53633a82024-02-29 12:33:36 -0500626 power-domains = <&zynqmp_firmware PD_GDMA>;
627 };
628
629 fpd_dma_chan5: dma-controller@fd540000 {
630 status = "disabled";
631 compatible = "xlnx,zynqmp-dma-1.0";
632 reg = <0x0 0xfd540000 0x0 0x1000>;
633 interrupt-parent = <&gic>;
634 interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
635 clock-names = "clk_main", "clk_apb";
636 #dma-cells = <1>;
637 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600638 /* iommus = <&smmu 0x14ec>; */
Tom Rini53633a82024-02-29 12:33:36 -0500639 power-domains = <&zynqmp_firmware PD_GDMA>;
640 };
641
642 fpd_dma_chan6: dma-controller@fd550000 {
643 status = "disabled";
644 compatible = "xlnx,zynqmp-dma-1.0";
645 reg = <0x0 0xfd550000 0x0 0x1000>;
646 interrupt-parent = <&gic>;
647 interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>;
648 clock-names = "clk_main", "clk_apb";
649 #dma-cells = <1>;
650 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600651 /* iommus = <&smmu 0x14ed>; */
Tom Rini53633a82024-02-29 12:33:36 -0500652 power-domains = <&zynqmp_firmware PD_GDMA>;
653 };
654
655 fpd_dma_chan7: dma-controller@fd560000 {
656 status = "disabled";
657 compatible = "xlnx,zynqmp-dma-1.0";
658 reg = <0x0 0xfd560000 0x0 0x1000>;
659 interrupt-parent = <&gic>;
660 interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
661 clock-names = "clk_main", "clk_apb";
662 #dma-cells = <1>;
663 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600664 /* iommus = <&smmu 0x14ee>; */
Tom Rini53633a82024-02-29 12:33:36 -0500665 power-domains = <&zynqmp_firmware PD_GDMA>;
666 };
667
668 fpd_dma_chan8: dma-controller@fd570000 {
669 status = "disabled";
670 compatible = "xlnx,zynqmp-dma-1.0";
671 reg = <0x0 0xfd570000 0x0 0x1000>;
672 interrupt-parent = <&gic>;
673 interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
674 clock-names = "clk_main", "clk_apb";
675 #dma-cells = <1>;
676 xlnx,bus-width = <128>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600677 /* iommus = <&smmu 0x14ef>; */
Tom Rini53633a82024-02-29 12:33:36 -0500678 power-domains = <&zynqmp_firmware PD_GDMA>;
679 };
680
681 gic: interrupt-controller@f9010000 {
682 compatible = "arm,gic-400";
683 #interrupt-cells = <3>;
684 reg = <0x0 0xf9010000 0x0 0x10000>,
685 <0x0 0xf9020000 0x0 0x20000>,
686 <0x0 0xf9040000 0x0 0x20000>,
687 <0x0 0xf9060000 0x0 0x20000>;
688 interrupt-controller;
689 interrupt-parent = <&gic>;
690 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
691 };
692
693 gpu: gpu@fd4b0000 {
694 status = "disabled";
695 compatible = "xlnx,zynqmp-mali", "arm,mali-400";
696 reg = <0x0 0xfd4b0000 0x0 0x10000>;
697 interrupt-parent = <&gic>;
698 interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
699 <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
700 <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
701 <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
702 <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
703 <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
704 interrupt-names = "gp", "gpmmu", "pp0", "ppmmu0", "pp1", "ppmmu1";
705 clock-names = "bus", "core";
706 power-domains = <&zynqmp_firmware PD_GPU>;
707 };
708
709 /* LPDDMA default allows only secured access. inorder to enable
710 * These dma channels, Users should ensure that these dma
711 * Channels are allowed for non secure access.
712 */
713 lpd_dma_chan1: dma-controller@ffa80000 {
714 status = "disabled";
715 compatible = "xlnx,zynqmp-dma-1.0";
716 reg = <0x0 0xffa80000 0x0 0x1000>;
717 interrupt-parent = <&gic>;
718 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
719 clock-names = "clk_main", "clk_apb";
720 #dma-cells = <1>;
721 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600722 /* iommus = <&smmu 0x868>; */
Tom Rini53633a82024-02-29 12:33:36 -0500723 power-domains = <&zynqmp_firmware PD_ADMA>;
724 };
725
726 lpd_dma_chan2: dma-controller@ffa90000 {
727 status = "disabled";
728 compatible = "xlnx,zynqmp-dma-1.0";
729 reg = <0x0 0xffa90000 0x0 0x1000>;
730 interrupt-parent = <&gic>;
731 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
732 clock-names = "clk_main", "clk_apb";
733 #dma-cells = <1>;
734 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600735 /* iommus = <&smmu 0x869>; */
Tom Rini53633a82024-02-29 12:33:36 -0500736 power-domains = <&zynqmp_firmware PD_ADMA>;
737 };
738
739 lpd_dma_chan3: dma-controller@ffaa0000 {
740 status = "disabled";
741 compatible = "xlnx,zynqmp-dma-1.0";
742 reg = <0x0 0xffaa0000 0x0 0x1000>;
743 interrupt-parent = <&gic>;
744 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
745 clock-names = "clk_main", "clk_apb";
746 #dma-cells = <1>;
747 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600748 /* iommus = <&smmu 0x86a>; */
Tom Rini53633a82024-02-29 12:33:36 -0500749 power-domains = <&zynqmp_firmware PD_ADMA>;
750 };
751
752 lpd_dma_chan4: dma-controller@ffab0000 {
753 status = "disabled";
754 compatible = "xlnx,zynqmp-dma-1.0";
755 reg = <0x0 0xffab0000 0x0 0x1000>;
756 interrupt-parent = <&gic>;
757 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
758 clock-names = "clk_main", "clk_apb";
759 #dma-cells = <1>;
760 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600761 /* iommus = <&smmu 0x86b>; */
Tom Rini53633a82024-02-29 12:33:36 -0500762 power-domains = <&zynqmp_firmware PD_ADMA>;
763 };
764
765 lpd_dma_chan5: dma-controller@ffac0000 {
766 status = "disabled";
767 compatible = "xlnx,zynqmp-dma-1.0";
768 reg = <0x0 0xffac0000 0x0 0x1000>;
769 interrupt-parent = <&gic>;
770 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
771 clock-names = "clk_main", "clk_apb";
772 #dma-cells = <1>;
773 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600774 /* iommus = <&smmu 0x86c>; */
Tom Rini53633a82024-02-29 12:33:36 -0500775 power-domains = <&zynqmp_firmware PD_ADMA>;
776 };
777
778 lpd_dma_chan6: dma-controller@ffad0000 {
779 status = "disabled";
780 compatible = "xlnx,zynqmp-dma-1.0";
781 reg = <0x0 0xffad0000 0x0 0x1000>;
782 interrupt-parent = <&gic>;
783 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
784 clock-names = "clk_main", "clk_apb";
785 #dma-cells = <1>;
786 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600787 /* iommus = <&smmu 0x86d>; */
Tom Rini53633a82024-02-29 12:33:36 -0500788 power-domains = <&zynqmp_firmware PD_ADMA>;
789 };
790
791 lpd_dma_chan7: dma-controller@ffae0000 {
792 status = "disabled";
793 compatible = "xlnx,zynqmp-dma-1.0";
794 reg = <0x0 0xffae0000 0x0 0x1000>;
795 interrupt-parent = <&gic>;
796 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
797 clock-names = "clk_main", "clk_apb";
798 #dma-cells = <1>;
799 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600800 /* iommus = <&smmu 0x86e>; */
Tom Rini53633a82024-02-29 12:33:36 -0500801 power-domains = <&zynqmp_firmware PD_ADMA>;
802 };
803
804 lpd_dma_chan8: dma-controller@ffaf0000 {
805 status = "disabled";
806 compatible = "xlnx,zynqmp-dma-1.0";
807 reg = <0x0 0xffaf0000 0x0 0x1000>;
808 interrupt-parent = <&gic>;
809 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
810 clock-names = "clk_main", "clk_apb";
811 #dma-cells = <1>;
812 xlnx,bus-width = <64>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600813 /* iommus = <&smmu 0x86f>; */
Tom Rini53633a82024-02-29 12:33:36 -0500814 power-domains = <&zynqmp_firmware PD_ADMA>;
815 };
816
817 mc: memory-controller@fd070000 {
818 compatible = "xlnx,zynqmp-ddrc-2.40a";
819 reg = <0x0 0xfd070000 0x0 0x30000>;
820 interrupt-parent = <&gic>;
821 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
822 };
823
824 nand0: nand-controller@ff100000 {
825 compatible = "xlnx,zynqmp-nand-controller", "arasan,nfc-v3p10";
826 status = "disabled";
827 reg = <0x0 0xff100000 0x0 0x1000>;
828 clock-names = "controller", "bus";
829 interrupt-parent = <&gic>;
830 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
831 #address-cells = <1>;
832 #size-cells = <0>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600833 /* iommus = <&smmu 0x872>; */
Tom Rini53633a82024-02-29 12:33:36 -0500834 power-domains = <&zynqmp_firmware PD_NAND>;
835 };
836
837 gem0: ethernet@ff0b0000 {
838 compatible = "xlnx,zynqmp-gem", "cdns,gem";
839 status = "disabled";
840 interrupt-parent = <&gic>;
841 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
842 <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
843 reg = <0x0 0xff0b0000 0x0 0x1000>;
844 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Tom Rini6bb92fc2024-05-20 09:54:58 -0600845 /* iommus = <&smmu 0x874>; */
Tom Rini53633a82024-02-29 12:33:36 -0500846 power-domains = <&zynqmp_firmware PD_ETH_0>;
847 resets = <&zynqmp_reset ZYNQMP_RESET_GEM0>;
848 reset-names = "gem0_rst";
849 };
850
851 gem1: ethernet@ff0c0000 {
852 compatible = "xlnx,zynqmp-gem", "cdns,gem";
853 status = "disabled";
854 interrupt-parent = <&gic>;
855 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
856 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
857 reg = <0x0 0xff0c0000 0x0 0x1000>;
858 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Tom Rini6bb92fc2024-05-20 09:54:58 -0600859 /* iommus = <&smmu 0x875>; */
Tom Rini53633a82024-02-29 12:33:36 -0500860 power-domains = <&zynqmp_firmware PD_ETH_1>;
861 resets = <&zynqmp_reset ZYNQMP_RESET_GEM1>;
862 reset-names = "gem1_rst";
863 };
864
865 gem2: ethernet@ff0d0000 {
866 compatible = "xlnx,zynqmp-gem", "cdns,gem";
867 status = "disabled";
868 interrupt-parent = <&gic>;
869 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
870 <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
871 reg = <0x0 0xff0d0000 0x0 0x1000>;
872 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Tom Rini6bb92fc2024-05-20 09:54:58 -0600873 /* iommus = <&smmu 0x876>; */
Tom Rini53633a82024-02-29 12:33:36 -0500874 power-domains = <&zynqmp_firmware PD_ETH_2>;
875 resets = <&zynqmp_reset ZYNQMP_RESET_GEM2>;
876 reset-names = "gem2_rst";
877 };
878
879 gem3: ethernet@ff0e0000 {
880 compatible = "xlnx,zynqmp-gem", "cdns,gem";
881 status = "disabled";
882 interrupt-parent = <&gic>;
883 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
884 <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
885 reg = <0x0 0xff0e0000 0x0 0x1000>;
886 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Tom Rini6bb92fc2024-05-20 09:54:58 -0600887 /* iommus = <&smmu 0x877>; */
Tom Rini53633a82024-02-29 12:33:36 -0500888 power-domains = <&zynqmp_firmware PD_ETH_3>;
889 resets = <&zynqmp_reset ZYNQMP_RESET_GEM3>;
890 reset-names = "gem3_rst";
891 };
892
893 gpio: gpio@ff0a0000 {
894 compatible = "xlnx,zynqmp-gpio-1.0";
895 status = "disabled";
896 #gpio-cells = <0x2>;
897 gpio-controller;
898 interrupt-parent = <&gic>;
899 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
900 interrupt-controller;
901 #interrupt-cells = <2>;
902 reg = <0x0 0xff0a0000 0x0 0x1000>;
903 power-domains = <&zynqmp_firmware PD_GPIO>;
904 };
905
906 i2c0: i2c@ff020000 {
907 compatible = "cdns,i2c-r1p14";
908 status = "disabled";
909 interrupt-parent = <&gic>;
910 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
911 clock-frequency = <400000>;
912 reg = <0x0 0xff020000 0x0 0x1000>;
913 #address-cells = <1>;
914 #size-cells = <0>;
915 power-domains = <&zynqmp_firmware PD_I2C_0>;
916 };
917
918 i2c1: i2c@ff030000 {
919 compatible = "cdns,i2c-r1p14";
920 status = "disabled";
921 interrupt-parent = <&gic>;
922 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
923 clock-frequency = <400000>;
924 reg = <0x0 0xff030000 0x0 0x1000>;
925 #address-cells = <1>;
926 #size-cells = <0>;
927 power-domains = <&zynqmp_firmware PD_I2C_1>;
928 };
929
Tom Rini6b642ac2024-10-01 12:20:28 -0600930 ocm: memory-controller@ff960000 {
931 compatible = "xlnx,zynqmp-ocmc-1.0";
932 reg = <0x0 0xff960000 0x0 0x1000>;
933 interrupt-parent = <&gic>;
934 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
935 };
936
Tom Rini53633a82024-02-29 12:33:36 -0500937 pcie: pcie@fd0e0000 {
938 compatible = "xlnx,nwl-pcie-2.11";
939 status = "disabled";
940 #address-cells = <3>;
941 #size-cells = <2>;
942 #interrupt-cells = <1>;
943 msi-controller;
944 device_type = "pci";
945 interrupt-parent = <&gic>;
946 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
947 <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
948 <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
949 <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>, /* MSI_1 [63...32] */
950 <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>; /* MSI_0 [31...0] */
951 interrupt-names = "misc", "dummy", "intx",
952 "msi1", "msi0";
953 msi-parent = <&pcie>;
954 reg = <0x0 0xfd0e0000 0x0 0x1000>,
955 <0x0 0xfd480000 0x0 0x1000>,
Tom Rini6bb92fc2024-05-20 09:54:58 -0600956 <0x80 0x00000000 0x0 0x10000000>;
Tom Rini53633a82024-02-29 12:33:36 -0500957 reg-names = "breg", "pcireg", "cfg";
958 ranges = <0x02000000 0x00000000 0xe0000000 0x00000000 0xe0000000 0x00000000 0x10000000>,/* non-prefetchable memory */
959 <0x43000000 0x00000006 0x00000000 0x00000006 0x00000000 0x00000002 0x00000000>;/* prefetchable memory */
960 bus-range = <0x00 0xff>;
961 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
962 interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>,
963 <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
964 <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
965 <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600966 /* iommus = <&smmu 0x4d0>; */
Tom Rini53633a82024-02-29 12:33:36 -0500967 power-domains = <&zynqmp_firmware PD_PCIE>;
968 pcie_intc: legacy-interrupt-controller {
969 interrupt-controller;
970 #address-cells = <0>;
971 #interrupt-cells = <1>;
972 };
973 };
974
975 qspi: spi@ff0f0000 {
976 bootph-all;
977 compatible = "xlnx,zynqmp-qspi-1.0";
978 status = "disabled";
979 clock-names = "ref_clk", "pclk";
980 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
981 interrupt-parent = <&gic>;
982 num-cs = <1>;
983 reg = <0x0 0xff0f0000 0x0 0x1000>,
984 <0x0 0xc0000000 0x0 0x8000000>;
985 #address-cells = <1>;
986 #size-cells = <0>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600987 /* iommus = <&smmu 0x873>; */
Tom Rini53633a82024-02-29 12:33:36 -0500988 power-domains = <&zynqmp_firmware PD_QSPI>;
989 };
990
991 psgtr: phy@fd400000 {
992 compatible = "xlnx,zynqmp-psgtr-v1.1";
993 status = "disabled";
994 reg = <0x0 0xfd400000 0x0 0x40000>,
995 <0x0 0xfd3d0000 0x0 0x1000>;
996 reg-names = "serdes", "siou";
997 #phy-cells = <4>;
998 };
999
1000 rtc: rtc@ffa60000 {
1001 compatible = "xlnx,zynqmp-rtc";
1002 status = "disabled";
1003 reg = <0x0 0xffa60000 0x0 0x100>;
1004 interrupt-parent = <&gic>;
1005 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
1006 <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
1007 interrupt-names = "alarm", "sec";
1008 calibration = <0x7FFF>;
1009 };
1010
1011 sata: ahci@fd0c0000 {
1012 compatible = "ceva,ahci-1v84";
1013 status = "disabled";
1014 reg = <0x0 0xfd0c0000 0x0 0x2000>;
1015 interrupt-parent = <&gic>;
1016 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
1017 power-domains = <&zynqmp_firmware PD_SATA>;
1018 resets = <&zynqmp_reset ZYNQMP_RESET_SATA>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001019 /* iommus = <&smmu 0x4c0>, <&smmu 0x4c1>, <&smmu 0x4c2>, <&smmu 0x4c3>; */
Tom Rini53633a82024-02-29 12:33:36 -05001020 };
1021
1022 sdhci0: mmc@ff160000 {
1023 bootph-all;
1024 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
1025 status = "disabled";
1026 interrupt-parent = <&gic>;
1027 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
1028 reg = <0x0 0xff160000 0x0 0x1000>;
1029 clock-names = "clk_xin", "clk_ahb";
Tom Rini6bb92fc2024-05-20 09:54:58 -06001030 /* iommus = <&smmu 0x870>; */
Tom Rini53633a82024-02-29 12:33:36 -05001031 #clock-cells = <1>;
1032 clock-output-names = "clk_out_sd0", "clk_in_sd0";
1033 power-domains = <&zynqmp_firmware PD_SD_0>;
1034 resets = <&zynqmp_reset ZYNQMP_RESET_SDIO0>;
1035 };
1036
1037 sdhci1: mmc@ff170000 {
1038 bootph-all;
1039 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
1040 status = "disabled";
1041 interrupt-parent = <&gic>;
1042 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
1043 reg = <0x0 0xff170000 0x0 0x1000>;
1044 clock-names = "clk_xin", "clk_ahb";
Tom Rini6bb92fc2024-05-20 09:54:58 -06001045 /* iommus = <&smmu 0x871>; */
Tom Rini53633a82024-02-29 12:33:36 -05001046 #clock-cells = <1>;
1047 clock-output-names = "clk_out_sd1", "clk_in_sd1";
1048 power-domains = <&zynqmp_firmware PD_SD_1>;
1049 resets = <&zynqmp_reset ZYNQMP_RESET_SDIO1>;
1050 };
1051
1052 smmu: iommu@fd800000 {
1053 compatible = "arm,mmu-500";
1054 reg = <0x0 0xfd800000 0x0 0x20000>;
1055 #iommu-cells = <1>;
1056 status = "disabled";
1057 #global-interrupts = <1>;
1058 interrupt-parent = <&gic>;
1059 interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1060 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1061 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1062 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1063 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1064 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1065 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1066 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1067 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1068 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1069 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1070 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1071 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1072 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1073 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1074 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
1075 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
1076 };
1077
1078 spi0: spi@ff040000 {
1079 compatible = "cdns,spi-r1p6";
1080 status = "disabled";
1081 interrupt-parent = <&gic>;
1082 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
1083 reg = <0x0 0xff040000 0x0 0x1000>;
1084 clock-names = "ref_clk", "pclk";
1085 #address-cells = <1>;
1086 #size-cells = <0>;
1087 power-domains = <&zynqmp_firmware PD_SPI_0>;
1088 };
1089
1090 spi1: spi@ff050000 {
1091 compatible = "cdns,spi-r1p6";
1092 status = "disabled";
1093 interrupt-parent = <&gic>;
1094 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
1095 reg = <0x0 0xff050000 0x0 0x1000>;
1096 clock-names = "ref_clk", "pclk";
1097 #address-cells = <1>;
1098 #size-cells = <0>;
1099 power-domains = <&zynqmp_firmware PD_SPI_1>;
1100 };
1101
1102 ttc0: timer@ff110000 {
1103 compatible = "cdns,ttc";
1104 status = "disabled";
1105 interrupt-parent = <&gic>;
1106 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
1107 <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
1108 <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1109 reg = <0x0 0xff110000 0x0 0x1000>;
1110 timer-width = <32>;
1111 power-domains = <&zynqmp_firmware PD_TTC_0>;
1112 };
1113
1114 ttc1: timer@ff120000 {
1115 compatible = "cdns,ttc";
1116 status = "disabled";
1117 interrupt-parent = <&gic>;
1118 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
1119 <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
1120 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1121 reg = <0x0 0xff120000 0x0 0x1000>;
1122 timer-width = <32>;
1123 power-domains = <&zynqmp_firmware PD_TTC_1>;
1124 };
1125
1126 ttc2: timer@ff130000 {
1127 compatible = "cdns,ttc";
1128 status = "disabled";
1129 interrupt-parent = <&gic>;
1130 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
1131 <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
1132 <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
1133 reg = <0x0 0xff130000 0x0 0x1000>;
1134 timer-width = <32>;
1135 power-domains = <&zynqmp_firmware PD_TTC_2>;
1136 };
1137
1138 ttc3: timer@ff140000 {
1139 compatible = "cdns,ttc";
1140 status = "disabled";
1141 interrupt-parent = <&gic>;
1142 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
1143 <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
1144 <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
1145 reg = <0x0 0xff140000 0x0 0x1000>;
1146 timer-width = <32>;
1147 power-domains = <&zynqmp_firmware PD_TTC_3>;
1148 };
1149
1150 uart0: serial@ff000000 {
1151 bootph-all;
1152 compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12";
1153 status = "disabled";
1154 interrupt-parent = <&gic>;
1155 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
1156 reg = <0x0 0xff000000 0x0 0x1000>;
1157 clock-names = "uart_clk", "pclk";
1158 power-domains = <&zynqmp_firmware PD_UART_0>;
Tom Rini762f85b2024-07-20 11:15:10 -06001159 resets = <&zynqmp_reset ZYNQMP_RESET_UART0>;
Tom Rini53633a82024-02-29 12:33:36 -05001160 };
1161
1162 uart1: serial@ff010000 {
1163 bootph-all;
1164 compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12";
1165 status = "disabled";
1166 interrupt-parent = <&gic>;
1167 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
1168 reg = <0x0 0xff010000 0x0 0x1000>;
1169 clock-names = "uart_clk", "pclk";
1170 power-domains = <&zynqmp_firmware PD_UART_1>;
Tom Rini762f85b2024-07-20 11:15:10 -06001171 resets = <&zynqmp_reset ZYNQMP_RESET_UART1>;
Tom Rini53633a82024-02-29 12:33:36 -05001172 };
1173
1174 usb0: usb@ff9d0000 {
1175 #address-cells = <2>;
1176 #size-cells = <2>;
1177 status = "disabled";
1178 compatible = "xlnx,zynqmp-dwc3";
1179 reg = <0x0 0xff9d0000 0x0 0x100>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001180 clock-names = "bus_clk", "ref_clk";
Tom Rini53633a82024-02-29 12:33:36 -05001181 power-domains = <&zynqmp_firmware PD_USB_0>;
1182 resets = <&zynqmp_reset ZYNQMP_RESET_USB0_CORERESET>,
1183 <&zynqmp_reset ZYNQMP_RESET_USB0_HIBERRESET>,
1184 <&zynqmp_reset ZYNQMP_RESET_USB0_APB>;
1185 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
1186 reset-gpios = <&modepin_gpio 1 GPIO_ACTIVE_LOW>;
1187 ranges;
1188
1189 dwc3_0: usb@fe200000 {
1190 compatible = "snps,dwc3";
Tom Rini6bb92fc2024-05-20 09:54:58 -06001191 status = "disabled";
Tom Rini53633a82024-02-29 12:33:36 -05001192 reg = <0x0 0xfe200000 0x0 0x40000>;
1193 interrupt-parent = <&gic>;
Tom Rini6b642ac2024-10-01 12:20:28 -06001194 interrupt-names = "host", "peripheral", "otg", "wakeup";
Tom Rini53633a82024-02-29 12:33:36 -05001195 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
1196 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
Tom Rini6b642ac2024-10-01 12:20:28 -06001197 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
1198 <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001199 clock-names = "ref";
1200 /* iommus = <&smmu 0x860>; */
Tom Rini53633a82024-02-29 12:33:36 -05001201 snps,quirk-frame-length-adjustment = <0x20>;
1202 snps,resume-hs-terminations;
1203 /* dma-coherent; */
1204 };
1205 };
1206
1207 usb1: usb@ff9e0000 {
1208 #address-cells = <2>;
1209 #size-cells = <2>;
1210 status = "disabled";
1211 compatible = "xlnx,zynqmp-dwc3";
1212 reg = <0x0 0xff9e0000 0x0 0x100>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001213 clock-names = "bus_clk", "ref_clk";
Tom Rini53633a82024-02-29 12:33:36 -05001214 power-domains = <&zynqmp_firmware PD_USB_1>;
1215 resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
1216 <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
1217 <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
1218 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
1219 ranges;
1220
1221 dwc3_1: usb@fe300000 {
1222 compatible = "snps,dwc3";
Tom Rini6bb92fc2024-05-20 09:54:58 -06001223 status = "disabled";
Tom Rini53633a82024-02-29 12:33:36 -05001224 reg = <0x0 0xfe300000 0x0 0x40000>;
1225 interrupt-parent = <&gic>;
Tom Rini6b642ac2024-10-01 12:20:28 -06001226 interrupt-names = "host", "peripheral", "otg", "wakeup";
Tom Rini53633a82024-02-29 12:33:36 -05001227 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
1228 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
Tom Rini6b642ac2024-10-01 12:20:28 -06001229 <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
1230 <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001231 clock-names = "ref";
1232 /* iommus = <&smmu 0x861>; */
Tom Rini53633a82024-02-29 12:33:36 -05001233 snps,quirk-frame-length-adjustment = <0x20>;
1234 snps,resume-hs-terminations;
1235 /* dma-coherent; */
1236 };
1237 };
1238
1239 watchdog0: watchdog@fd4d0000 {
1240 compatible = "cdns,wdt-r1p2";
1241 status = "disabled";
1242 interrupt-parent = <&gic>;
1243 interrupts = <GIC_SPI 113 IRQ_TYPE_EDGE_RISING>;
1244 reg = <0x0 0xfd4d0000 0x0 0x1000>;
1245 timeout-sec = <60>;
1246 reset-on-timeout;
1247 };
1248
1249 lpd_watchdog: watchdog@ff150000 {
1250 compatible = "cdns,wdt-r1p2";
1251 status = "disabled";
1252 interrupt-parent = <&gic>;
1253 interrupts = <GIC_SPI 52 IRQ_TYPE_EDGE_RISING>;
1254 reg = <0x0 0xff150000 0x0 0x1000>;
1255 timeout-sec = <10>;
1256 };
1257
1258 xilinx_ams: ams@ffa50000 {
1259 compatible = "xlnx,zynqmp-ams";
Tom Rini53633a82024-02-29 12:33:36 -05001260 interrupt-parent = <&gic>;
1261 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
1262 reg = <0x0 0xffa50000 0x0 0x800>;
1263 #address-cells = <1>;
1264 #size-cells = <1>;
1265 #io-channel-cells = <1>;
1266 ranges = <0 0 0xffa50800 0x800>;
1267
1268 ams_ps: ams-ps@0 {
1269 compatible = "xlnx,zynqmp-ams-ps";
1270 status = "disabled";
1271 reg = <0x0 0x400>;
1272 };
1273
1274 ams_pl: ams-pl@400 {
1275 compatible = "xlnx,zynqmp-ams-pl";
1276 status = "disabled";
1277 reg = <0x400 0x400>;
Tom Rini53633a82024-02-29 12:33:36 -05001278 };
1279 };
1280
1281 zynqmp_dpdma: dma-controller@fd4c0000 {
1282 compatible = "xlnx,zynqmp-dpdma";
1283 status = "disabled";
1284 reg = <0x0 0xfd4c0000 0x0 0x1000>;
1285 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
1286 interrupt-parent = <&gic>;
1287 clock-names = "axi_clk";
1288 power-domains = <&zynqmp_firmware PD_DP>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001289 /* iommus = <&smmu 0xce4>; */
Tom Rini53633a82024-02-29 12:33:36 -05001290 #dma-cells = <1>;
1291 };
1292
1293 zynqmp_dpsub: display@fd4a0000 {
1294 bootph-all;
1295 compatible = "xlnx,zynqmp-dpsub-1.7";
1296 status = "disabled";
1297 reg = <0x0 0xfd4a0000 0x0 0x1000>,
1298 <0x0 0xfd4aa000 0x0 0x1000>,
1299 <0x0 0xfd4ab000 0x0 0x1000>,
1300 <0x0 0xfd4ac000 0x0 0x1000>;
1301 reg-names = "dp", "blend", "av_buf", "aud";
1302 interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
1303 interrupt-parent = <&gic>;
Tom Rini6bb92fc2024-05-20 09:54:58 -06001304 /* iommus = <&smmu 0xce3>; */
Tom Rini53633a82024-02-29 12:33:36 -05001305 clock-names = "dp_apb_clk", "dp_aud_clk",
1306 "dp_vtc_pixel_clk_in";
1307 power-domains = <&zynqmp_firmware PD_DP>;
1308 resets = <&zynqmp_reset ZYNQMP_RESET_DP>;
Tom Riniab06a532025-04-02 08:31:19 -06001309 dma-names = "vid0", "vid1", "vid2", "gfx0",
1310 "aud0", "aud1";
Tom Rini53633a82024-02-29 12:33:36 -05001311 dmas = <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO0>,
1312 <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO1>,
1313 <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO2>,
Tom Riniab06a532025-04-02 08:31:19 -06001314 <&zynqmp_dpdma ZYNQMP_DPDMA_GRAPHICS>,
1315 <&zynqmp_dpdma ZYNQMP_DPDMA_AUDIO0>,
1316 <&zynqmp_dpdma ZYNQMP_DPDMA_AUDIO1>;
Tom Rini53633a82024-02-29 12:33:36 -05001317
1318 ports {
1319 #address-cells = <1>;
1320 #size-cells = <0>;
1321
1322 port@0 {
1323 reg = <0>;
1324 };
1325 port@1 {
1326 reg = <1>;
1327 };
1328 port@2 {
1329 reg = <2>;
1330 };
1331 port@3 {
1332 reg = <3>;
1333 };
1334 port@4 {
1335 reg = <4>;
1336 };
1337 port@5 {
1338 reg = <5>;
1339 };
1340 };
1341 };
1342 };
1343};