blob: 6a166381fa7768f41ffc64a11ef7e0a030fae2cd [file] [log] [blame]
Michal Simek18a952c2018-03-27 10:36:39 +02001// SPDX-License-Identifier: GPL-2.0+
Michal Simek44303df2015-10-30 15:39:18 +01002/*
3 * dts file for Xilinx ZynqMP
4 *
Michal Simek447fb8d2021-05-31 09:50:01 +02005 * (C) Copyright 2014 - 2021, Xilinx, Inc.
Michal Simek44303df2015-10-30 15:39:18 +01006 *
7 * Michal Simek <michal.simek@xilinx.com>
8 *
Michal Simek18a952c2018-03-27 10:36:39 +02009 * 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.
Michal Simek44303df2015-10-30 15:39:18 +010013 */
Michal Simek91d11532016-12-16 13:12:48 +010014
Michal Simekce906542020-11-26 14:25:02 +010015#include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
Piyush Mehtaa4180c32022-05-11 11:52:45 +020016#include <dt-bindings/gpio/gpio.h>
Michal Simek332996c2019-10-14 15:56:31 +020017#include <dt-bindings/power/xlnx-zynqmp-power.h>
Michal Simekb07e97b2019-10-14 15:55:53 +020018#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
19
Michal Simek44303df2015-10-30 15:39:18 +010020/ {
21 compatible = "xlnx,zynqmp";
22 #address-cells = <2>;
Michal Simek85d11422016-04-07 15:07:38 +020023 #size-cells = <2>;
Michal Simek44303df2015-10-30 15:39:18 +010024
25 cpus {
26 #address-cells = <1>;
27 #size-cells = <0>;
28
Michal Simek585ca872017-02-06 10:09:53 +010029 cpu0: cpu@0 {
Rob Herring8e3501e2019-01-14 11:45:33 -060030 compatible = "arm,cortex-a53";
Michal Simek44303df2015-10-30 15:39:18 +010031 device_type = "cpu";
32 enable-method = "psci";
Shubhrajyoti Datta941f61f2017-02-13 15:58:55 +053033 operating-points-v2 = <&cpu_opp_table>;
Michal Simek44303df2015-10-30 15:39:18 +010034 reg = <0x0>;
Stefan Krsmanovic2e15b072016-10-21 12:44:56 +020035 cpu-idle-states = <&CPU_SLEEP_0>;
Michal Simek44303df2015-10-30 15:39:18 +010036 };
37
Michal Simek585ca872017-02-06 10:09:53 +010038 cpu1: cpu@1 {
Rob Herring8e3501e2019-01-14 11:45:33 -060039 compatible = "arm,cortex-a53";
Michal Simek44303df2015-10-30 15:39:18 +010040 device_type = "cpu";
41 enable-method = "psci";
42 reg = <0x1>;
Shubhrajyoti Datta941f61f2017-02-13 15:58:55 +053043 operating-points-v2 = <&cpu_opp_table>;
Stefan Krsmanovic2e15b072016-10-21 12:44:56 +020044 cpu-idle-states = <&CPU_SLEEP_0>;
Michal Simek44303df2015-10-30 15:39:18 +010045 };
46
Michal Simek585ca872017-02-06 10:09:53 +010047 cpu2: cpu@2 {
Rob Herring8e3501e2019-01-14 11:45:33 -060048 compatible = "arm,cortex-a53";
Michal Simek44303df2015-10-30 15:39:18 +010049 device_type = "cpu";
50 enable-method = "psci";
51 reg = <0x2>;
Shubhrajyoti Datta941f61f2017-02-13 15:58:55 +053052 operating-points-v2 = <&cpu_opp_table>;
Stefan Krsmanovic2e15b072016-10-21 12:44:56 +020053 cpu-idle-states = <&CPU_SLEEP_0>;
Michal Simek44303df2015-10-30 15:39:18 +010054 };
55
Michal Simek585ca872017-02-06 10:09:53 +010056 cpu3: cpu@3 {
Rob Herring8e3501e2019-01-14 11:45:33 -060057 compatible = "arm,cortex-a53";
Michal Simek44303df2015-10-30 15:39:18 +010058 device_type = "cpu";
59 enable-method = "psci";
60 reg = <0x3>;
Shubhrajyoti Datta941f61f2017-02-13 15:58:55 +053061 operating-points-v2 = <&cpu_opp_table>;
Stefan Krsmanovic2e15b072016-10-21 12:44:56 +020062 cpu-idle-states = <&CPU_SLEEP_0>;
63 };
64
65 idle-states {
Amit Kucheria9a06ed82018-08-23 14:23:29 +053066 entry-method = "psci";
Stefan Krsmanovic2e15b072016-10-21 12:44:56 +020067
68 CPU_SLEEP_0: cpu-sleep-0 {
69 compatible = "arm,idle-state";
70 arm,psci-suspend-param = <0x40000000>;
71 local-timer-stop;
72 entry-latency-us = <300>;
73 exit-latency-us = <600>;
Jolly Shah6a097b02017-06-14 15:03:52 -070074 min-residency-us = <10000>;
Stefan Krsmanovic2e15b072016-10-21 12:44:56 +020075 };
Michal Simek44303df2015-10-30 15:39:18 +010076 };
77 };
78
Michal Simek234f8be2022-05-11 11:52:47 +020079 cpu_opp_table: opp-table-cpu {
Shubhrajyoti Datta941f61f2017-02-13 15:58:55 +053080 compatible = "operating-points-v2";
81 opp-shared;
82 opp00 {
83 opp-hz = /bits/ 64 <1199999988>;
84 opp-microvolt = <1000000>;
85 clock-latency-ns = <500000>;
86 };
87 opp01 {
88 opp-hz = /bits/ 64 <599999994>;
89 opp-microvolt = <1000000>;
90 clock-latency-ns = <500000>;
91 };
92 opp02 {
93 opp-hz = /bits/ 64 <399999996>;
94 opp-microvolt = <1000000>;
95 clock-latency-ns = <500000>;
96 };
97 opp03 {
98 opp-hz = /bits/ 64 <299999997>;
99 opp-microvolt = <1000000>;
100 clock-latency-ns = <500000>;
101 };
102 };
103
Michal Simekeca03762021-05-31 09:42:08 +0200104 zynqmp_ipi: zynqmp_ipi {
Simon Glass8c103c32023-02-13 08:56:33 -0700105 bootph-all;
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100106 compatible = "xlnx,zynqmp-ipi-mailbox";
107 interrupt-parent = <&gic>;
108 interrupts = <0 35 4>;
109 xlnx,ipi-id = <0>;
110 #address-cells = <2>;
111 #size-cells = <2>;
112 ranges;
113
114 ipi_mailbox_pmu1: mailbox@ff990400 {
Simon Glass8c103c32023-02-13 08:56:33 -0700115 bootph-all;
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100116 reg = <0x0 0xff9905c0 0x0 0x20>,
117 <0x0 0xff9905e0 0x0 0x20>,
118 <0x0 0xff990e80 0x0 0x20>,
119 <0x0 0xff990ea0 0x0 0x20>;
Michal Simek2d381d22020-09-29 13:43:22 +0200120 reg-names = "local_request_region",
121 "local_response_region",
122 "remote_request_region",
123 "remote_response_region";
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100124 #mbox-cells = <1>;
125 xlnx,ipi-id = <4>;
126 };
127 };
128
Michal Simek69d09dd2016-09-09 08:46:39 +0200129 dcc: dcc {
130 compatible = "arm,dcc";
131 status = "disabled";
Simon Glass8c103c32023-02-13 08:56:33 -0700132 bootph-all;
Michal Simek69d09dd2016-09-09 08:46:39 +0200133 };
134
Michal Simek44303df2015-10-30 15:39:18 +0100135 pmu {
136 compatible = "arm,armv8-pmuv3";
Michal Simek14cd9ea2016-04-07 15:28:33 +0200137 interrupt-parent = <&gic>;
Michal Simek44303df2015-10-30 15:39:18 +0100138 interrupts = <0 143 4>,
139 <0 144 4>,
140 <0 145 4>,
141 <0 146 4>;
142 };
143
144 psci {
145 compatible = "arm,psci-0.2";
146 method = "smc";
147 };
148
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100149 firmware {
Ilias Apalodimas89f0f142023-02-16 15:39:20 +0200150 optee: optee {
151 compatible = "linaro,optee-tz";
152 method = "smc";
153 };
154
Michal Simek039c7402019-10-14 15:42:03 +0200155 zynqmp_firmware: zynqmp-firmware {
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100156 compatible = "xlnx,zynqmp-firmware";
Michal Simek2d381d22020-09-29 13:43:22 +0200157 #power-domain-cells = <1>;
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100158 method = "smc";
Simon Glass8c103c32023-02-13 08:56:33 -0700159 bootph-all;
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100160
161 zynqmp_power: zynqmp-power {
Simon Glass8c103c32023-02-13 08:56:33 -0700162 bootph-all;
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100163 compatible = "xlnx,zynqmp-power";
164 interrupt-parent = <&gic>;
165 interrupts = <0 35 4>;
166 mboxes = <&ipi_mailbox_pmu1 0>, <&ipi_mailbox_pmu1 1>;
167 mbox-names = "tx", "rx";
168 };
Michal Simekb07e97b2019-10-14 15:55:53 +0200169
Michal Simekce906542020-11-26 14:25:02 +0100170 nvmem_firmware {
171 compatible = "xlnx,zynqmp-nvmem-fw";
172 #address-cells = <1>;
173 #size-cells = <1>;
174
175 soc_revision: soc_revision@0 {
176 reg = <0x0 0x4>;
177 };
178 };
179
Michal Simek2d381d22020-09-29 13:43:22 +0200180 zynqmp_pcap: pcap {
181 compatible = "xlnx,zynqmp-pcap-fpga";
182 clock-names = "ref_clk";
183 };
184
Michal Simekce906542020-11-26 14:25:02 +0100185 xlnx_aes: zynqmp-aes {
186 compatible = "xlnx,zynqmp-aes";
187 };
188
Michal Simekb07e97b2019-10-14 15:55:53 +0200189 zynqmp_reset: reset-controller {
190 compatible = "xlnx,zynqmp-reset";
191 #reset-cells = <1>;
192 };
Michal Simek00fb9452020-02-18 13:04:06 +0100193
194 pinctrl0: pinctrl {
195 compatible = "xlnx,zynqmp-pinctrl";
196 status = "disabled";
197 };
Piyush Mehtaa4180c32022-05-11 11:52:45 +0200198
199 modepin_gpio: gpio {
200 compatible = "xlnx,zynqmp-gpio-modepin";
201 gpio-controller;
202 #gpio-cells = <2>;
203 };
Ibai Erkiaga95497af2019-09-27 11:36:58 +0100204 };
Michal Simek44303df2015-10-30 15:39:18 +0100205 };
206
207 timer {
208 compatible = "arm,armv8-timer";
209 interrupt-parent = <&gic>;
Michal Simek6db82e02017-02-09 14:45:12 +0100210 interrupts = <1 13 0xf08>,
211 <1 14 0xf08>,
212 <1 11 0xf08>,
213 <1 10 0xf08>;
Michal Simek44303df2015-10-30 15:39:18 +0100214 };
215
Naga Sureshkumar Relliaaf232f2016-06-20 15:48:30 +0530216 edac {
217 compatible = "arm,cortex-a53-edac";
218 };
219
Nava kishore Manne7689dce2017-05-22 12:05:17 +0530220 fpga_full: fpga-full {
221 compatible = "fpga-region";
Nava kishore Manne21620992019-10-18 18:07:32 +0200222 fpga-mgr = <&zynqmp_pcap>;
Nava kishore Manne7689dce2017-05-22 12:05:17 +0530223 #address-cells = <2>;
224 #size-cells = <2>;
Nava kishore Manne21620992019-10-18 18:07:32 +0200225 ranges;
Michal Simekd59fac22022-05-11 11:52:48 +0200226 power-domains = <&zynqmp_firmware PD_PL>;
Nava kishore Manne7689dce2017-05-22 12:05:17 +0530227 };
228
Michal Simek2d381d22020-09-29 13:43:22 +0200229 amba: axi {
Michal Simek44303df2015-10-30 15:39:18 +0100230 compatible = "simple-bus";
Simon Glass8c103c32023-02-13 08:56:33 -0700231 bootph-all;
Michal Simek44303df2015-10-30 15:39:18 +0100232 #address-cells = <2>;
Michal Simekb976fd62016-02-11 07:19:06 +0100233 #size-cells = <2>;
234 ranges;
Michal Simek44303df2015-10-30 15:39:18 +0100235
236 can0: can@ff060000 {
237 compatible = "xlnx,zynq-can-1.0";
238 status = "disabled";
239 clock-names = "can_clk", "pclk";
Michal Simekb976fd62016-02-11 07:19:06 +0100240 reg = <0x0 0xff060000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100241 interrupts = <0 23 4>;
242 interrupt-parent = <&gic>;
243 tx-fifo-depth = <0x40>;
244 rx-fifo-depth = <0x40>;
Michal Simek332996c2019-10-14 15:56:31 +0200245 power-domains = <&zynqmp_firmware PD_CAN_0>;
Michal Simek44303df2015-10-30 15:39:18 +0100246 };
247
248 can1: can@ff070000 {
249 compatible = "xlnx,zynq-can-1.0";
250 status = "disabled";
251 clock-names = "can_clk", "pclk";
Michal Simekb976fd62016-02-11 07:19:06 +0100252 reg = <0x0 0xff070000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100253 interrupts = <0 24 4>;
254 interrupt-parent = <&gic>;
255 tx-fifo-depth = <0x40>;
256 rx-fifo-depth = <0x40>;
Michal Simek332996c2019-10-14 15:56:31 +0200257 power-domains = <&zynqmp_firmware PD_CAN_1>;
Michal Simek44303df2015-10-30 15:39:18 +0100258 };
259
Michal Simekff50d212015-11-26 11:21:25 +0100260 cci: cci@fd6e0000 {
261 compatible = "arm,cci-400";
Michal Simekd9be8b42020-05-11 10:14:34 +0200262 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100263 reg = <0x0 0xfd6e0000 0x0 0x9000>;
Michal Simekff50d212015-11-26 11:21:25 +0100264 ranges = <0x0 0x0 0xfd6e0000 0x10000>;
265 #address-cells = <1>;
266 #size-cells = <1>;
267
268 pmu@9000 {
269 compatible = "arm,cci-400-pmu,r1";
270 reg = <0x9000 0x5000>;
271 interrupt-parent = <&gic>;
272 interrupts = <0 123 4>,
273 <0 123 4>,
274 <0 123 4>,
275 <0 123 4>,
276 <0 123 4>;
277 };
278 };
279
Michal Simek44303df2015-10-30 15:39:18 +0100280 /* GDMA */
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100281 fpd_dma_chan1: dma-controller@fd500000 {
Michal Simek44303df2015-10-30 15:39:18 +0100282 status = "disabled";
283 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100284 reg = <0x0 0xfd500000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100285 interrupt-parent = <&gic>;
286 interrupts = <0 124 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530287 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100288 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100289 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200290 iommus = <&smmu 0x14e8>;
Michal Simek332996c2019-10-14 15:56:31 +0200291 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100292 };
293
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100294 fpd_dma_chan2: dma-controller@fd510000 {
Michal Simek44303df2015-10-30 15:39:18 +0100295 status = "disabled";
296 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100297 reg = <0x0 0xfd510000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100298 interrupt-parent = <&gic>;
299 interrupts = <0 125 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530300 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100301 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100302 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200303 iommus = <&smmu 0x14e9>;
Michal Simek332996c2019-10-14 15:56:31 +0200304 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100305 };
306
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100307 fpd_dma_chan3: dma-controller@fd520000 {
Michal Simek44303df2015-10-30 15:39:18 +0100308 status = "disabled";
309 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100310 reg = <0x0 0xfd520000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100311 interrupt-parent = <&gic>;
312 interrupts = <0 126 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530313 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100314 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100315 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200316 iommus = <&smmu 0x14ea>;
Michal Simek332996c2019-10-14 15:56:31 +0200317 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100318 };
319
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100320 fpd_dma_chan4: dma-controller@fd530000 {
Michal Simek44303df2015-10-30 15:39:18 +0100321 status = "disabled";
322 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100323 reg = <0x0 0xfd530000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100324 interrupt-parent = <&gic>;
325 interrupts = <0 127 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530326 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100327 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100328 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200329 iommus = <&smmu 0x14eb>;
Michal Simek332996c2019-10-14 15:56:31 +0200330 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100331 };
332
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100333 fpd_dma_chan5: dma-controller@fd540000 {
Michal Simek44303df2015-10-30 15:39:18 +0100334 status = "disabled";
335 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100336 reg = <0x0 0xfd540000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100337 interrupt-parent = <&gic>;
338 interrupts = <0 128 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530339 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100340 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100341 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200342 iommus = <&smmu 0x14ec>;
Michal Simek332996c2019-10-14 15:56:31 +0200343 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100344 };
345
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100346 fpd_dma_chan6: dma-controller@fd550000 {
Michal Simek44303df2015-10-30 15:39:18 +0100347 status = "disabled";
348 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100349 reg = <0x0 0xfd550000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100350 interrupt-parent = <&gic>;
351 interrupts = <0 129 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530352 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100353 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100354 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200355 iommus = <&smmu 0x14ed>;
Michal Simek332996c2019-10-14 15:56:31 +0200356 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100357 };
358
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100359 fpd_dma_chan7: dma-controller@fd560000 {
Michal Simek44303df2015-10-30 15:39:18 +0100360 status = "disabled";
361 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100362 reg = <0x0 0xfd560000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100363 interrupt-parent = <&gic>;
364 interrupts = <0 130 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530365 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100366 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100367 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200368 iommus = <&smmu 0x14ee>;
Michal Simek332996c2019-10-14 15:56:31 +0200369 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100370 };
371
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100372 fpd_dma_chan8: dma-controller@fd570000 {
Michal Simek44303df2015-10-30 15:39:18 +0100373 status = "disabled";
374 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100375 reg = <0x0 0xfd570000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100376 interrupt-parent = <&gic>;
377 interrupts = <0 131 4>;
VNSL Durgab34d11d2016-03-24 22:45:12 +0530378 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100379 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100380 xlnx,bus-width = <128>;
Michal Simekba6ad312016-04-06 10:43:23 +0200381 iommus = <&smmu 0x14ef>;
Michal Simek332996c2019-10-14 15:56:31 +0200382 power-domains = <&zynqmp_firmware PD_GDMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100383 };
384
Michal Simek2d381d22020-09-29 13:43:22 +0200385 gic: interrupt-controller@f9010000 {
386 compatible = "arm,gic-400";
387 #interrupt-cells = <3>;
388 reg = <0x0 0xf9010000 0x0 0x10000>,
389 <0x0 0xf9020000 0x0 0x20000>,
390 <0x0 0xf9040000 0x0 0x20000>,
391 <0x0 0xf9060000 0x0 0x20000>;
392 interrupt-controller;
393 interrupt-parent = <&gic>;
394 interrupts = <1 9 0xf04>;
395 };
396
Michal Simek44303df2015-10-30 15:39:18 +0100397 gpu: gpu@fd4b0000 {
398 status = "disabled";
399 compatible = "arm,mali-400", "arm,mali-utgard";
Hyun Kwon834ec8e2017-08-21 18:54:29 -0700400 reg = <0x0 0xfd4b0000 0x0 0x10000>;
Michal Simek44303df2015-10-30 15:39:18 +0100401 interrupt-parent = <&gic>;
402 interrupts = <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>, <0 132 4>;
403 interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1";
Madhurkiran Harikrishnan59206dd2017-02-17 04:14:45 -0800404 clock-names = "gpu", "gpu_pp0", "gpu_pp1";
Michal Simek332996c2019-10-14 15:56:31 +0200405 power-domains = <&zynqmp_firmware PD_GPU>;
Michal Simek44303df2015-10-30 15:39:18 +0100406 };
407
Kedareswara rao Appana6af57732016-09-09 12:36:01 +0530408 /* LPDDMA default allows only secured access. inorder to enable
409 * These dma channels, Users should ensure that these dma
410 * Channels are allowed for non secure access.
411 */
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100412 lpd_dma_chan1: dma-controller@ffa80000 {
Michal Simek44303df2015-10-30 15:39:18 +0100413 status = "disabled";
414 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100415 reg = <0x0 0xffa80000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100416 interrupt-parent = <&gic>;
417 interrupts = <0 77 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100418 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100419 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100420 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200421 iommus = <&smmu 0x868>;
Michal Simek332996c2019-10-14 15:56:31 +0200422 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100423 };
424
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100425 lpd_dma_chan2: dma-controller@ffa90000 {
Michal Simek44303df2015-10-30 15:39:18 +0100426 status = "disabled";
427 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100428 reg = <0x0 0xffa90000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100429 interrupt-parent = <&gic>;
430 interrupts = <0 78 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100431 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100432 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100433 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200434 iommus = <&smmu 0x869>;
Michal Simek332996c2019-10-14 15:56:31 +0200435 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100436 };
437
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100438 lpd_dma_chan3: dma-controller@ffaa0000 {
Michal Simek44303df2015-10-30 15:39:18 +0100439 status = "disabled";
440 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100441 reg = <0x0 0xffaa0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100442 interrupt-parent = <&gic>;
443 interrupts = <0 79 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100444 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100445 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100446 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200447 iommus = <&smmu 0x86a>;
Michal Simek332996c2019-10-14 15:56:31 +0200448 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100449 };
450
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100451 lpd_dma_chan4: dma-controller@ffab0000 {
Michal Simek44303df2015-10-30 15:39:18 +0100452 status = "disabled";
453 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100454 reg = <0x0 0xffab0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100455 interrupt-parent = <&gic>;
456 interrupts = <0 80 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100457 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100458 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100459 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200460 iommus = <&smmu 0x86b>;
Michal Simek332996c2019-10-14 15:56:31 +0200461 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100462 };
463
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100464 lpd_dma_chan5: dma-controller@ffac0000 {
Michal Simek44303df2015-10-30 15:39:18 +0100465 status = "disabled";
466 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100467 reg = <0x0 0xffac0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100468 interrupt-parent = <&gic>;
469 interrupts = <0 81 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100470 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100471 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100472 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200473 iommus = <&smmu 0x86c>;
Michal Simek332996c2019-10-14 15:56:31 +0200474 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100475 };
476
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100477 lpd_dma_chan6: dma-controller@ffad0000 {
Michal Simek44303df2015-10-30 15:39:18 +0100478 status = "disabled";
479 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100480 reg = <0x0 0xffad0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100481 interrupt-parent = <&gic>;
482 interrupts = <0 82 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100483 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100484 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100485 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200486 iommus = <&smmu 0x86d>;
Michal Simek332996c2019-10-14 15:56:31 +0200487 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100488 };
489
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100490 lpd_dma_chan7: dma-controller@ffae0000 {
Michal Simek44303df2015-10-30 15:39:18 +0100491 status = "disabled";
492 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100493 reg = <0x0 0xffae0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100494 interrupt-parent = <&gic>;
495 interrupts = <0 83 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100496 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100497 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100498 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200499 iommus = <&smmu 0x86e>;
Michal Simek332996c2019-10-14 15:56:31 +0200500 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100501 };
502
Shravya Kumbhamd10807a2022-01-14 12:44:06 +0100503 lpd_dma_chan8: dma-controller@ffaf0000 {
Michal Simek44303df2015-10-30 15:39:18 +0100504 status = "disabled";
505 compatible = "xlnx,zynqmp-dma-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100506 reg = <0x0 0xffaf0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100507 interrupt-parent = <&gic>;
508 interrupts = <0 84 4>;
Michal Simek680e9972018-01-17 16:32:33 +0100509 clock-names = "clk_main", "clk_apb";
Michal Simek2a5f7fd2022-12-09 13:56:37 +0100510 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100511 xlnx,bus-width = <64>;
Michal Simekba6ad312016-04-06 10:43:23 +0200512 iommus = <&smmu 0x86f>;
Michal Simek332996c2019-10-14 15:56:31 +0200513 power-domains = <&zynqmp_firmware PD_ADMA>;
Michal Simek44303df2015-10-30 15:39:18 +0100514 };
515
Naga Sureshkumar Relli90869002016-03-11 13:10:26 +0530516 mc: memory-controller@fd070000 {
517 compatible = "xlnx,zynqmp-ddrc-2.40a";
Michal Simekb976fd62016-02-11 07:19:06 +0100518 reg = <0x0 0xfd070000 0x0 0x30000>;
Naga Sureshkumar Relli90869002016-03-11 13:10:26 +0530519 interrupt-parent = <&gic>;
520 interrupts = <0 112 4>;
521 };
522
Michal Simekce906542020-11-26 14:25:02 +0100523 nand0: nand-controller@ff100000 {
524 compatible = "xlnx,zynqmp-nand-controller", "arasan,nfc-v3p10";
Michal Simek44303df2015-10-30 15:39:18 +0100525 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100526 reg = <0x0 0xff100000 0x0 0x1000>;
Amit Kumar Mahapatrae2b71c32021-02-23 13:47:20 -0700527 clock-names = "controller", "bus";
Michal Simek44303df2015-10-30 15:39:18 +0100528 interrupt-parent = <&gic>;
529 interrupts = <0 14 4>;
Naga Sureshkumar Rellic3a34b82017-01-23 16:20:37 +0530530 #address-cells = <1>;
531 #size-cells = <0>;
Michal Simekba6ad312016-04-06 10:43:23 +0200532 iommus = <&smmu 0x872>;
Michal Simek332996c2019-10-14 15:56:31 +0200533 power-domains = <&zynqmp_firmware PD_NAND>;
Michal Simek44303df2015-10-30 15:39:18 +0100534 };
535
536 gem0: ethernet@ff0b0000 {
Michal Simeka09d9272023-02-06 13:50:00 +0100537 compatible = "xlnx,zynqmp-gem", "cdns,gem";
Michal Simek44303df2015-10-30 15:39:18 +0100538 status = "disabled";
539 interrupt-parent = <&gic>;
540 interrupts = <0 57 4>, <0 57 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100541 reg = <0x0 0xff0b0000 0x0 0x1000>;
Michal Simekca442162021-11-18 13:42:28 +0100542 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Michal Simek44303df2015-10-30 15:39:18 +0100543 #address-cells = <1>;
544 #size-cells = <0>;
Michal Simekba6ad312016-04-06 10:43:23 +0200545 iommus = <&smmu 0x874>;
Michal Simek332996c2019-10-14 15:56:31 +0200546 power-domains = <&zynqmp_firmware PD_ETH_0>;
Michal Simek87b50f92021-11-18 13:42:27 +0100547 resets = <&zynqmp_reset ZYNQMP_RESET_GEM0>;
Michal Simeke6a01d52022-12-09 13:56:38 +0100548 reset-names = "gem0_rst";
Michal Simek44303df2015-10-30 15:39:18 +0100549 };
550
551 gem1: ethernet@ff0c0000 {
Michal Simeka09d9272023-02-06 13:50:00 +0100552 compatible = "xlnx,zynqmp-gem", "cdns,gem";
Michal Simek44303df2015-10-30 15:39:18 +0100553 status = "disabled";
554 interrupt-parent = <&gic>;
555 interrupts = <0 59 4>, <0 59 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100556 reg = <0x0 0xff0c0000 0x0 0x1000>;
Michal Simekca442162021-11-18 13:42:28 +0100557 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Michal Simek44303df2015-10-30 15:39:18 +0100558 #address-cells = <1>;
559 #size-cells = <0>;
Michal Simekba6ad312016-04-06 10:43:23 +0200560 iommus = <&smmu 0x875>;
Michal Simek332996c2019-10-14 15:56:31 +0200561 power-domains = <&zynqmp_firmware PD_ETH_1>;
Michal Simek87b50f92021-11-18 13:42:27 +0100562 resets = <&zynqmp_reset ZYNQMP_RESET_GEM1>;
Michal Simeke6a01d52022-12-09 13:56:38 +0100563 reset-names = "gem1_rst";
Michal Simek44303df2015-10-30 15:39:18 +0100564 };
565
566 gem2: ethernet@ff0d0000 {
Michal Simeka09d9272023-02-06 13:50:00 +0100567 compatible = "xlnx,zynqmp-gem", "cdns,gem";
Michal Simek44303df2015-10-30 15:39:18 +0100568 status = "disabled";
569 interrupt-parent = <&gic>;
570 interrupts = <0 61 4>, <0 61 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100571 reg = <0x0 0xff0d0000 0x0 0x1000>;
Michal Simekca442162021-11-18 13:42:28 +0100572 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Michal Simek44303df2015-10-30 15:39:18 +0100573 #address-cells = <1>;
574 #size-cells = <0>;
Michal Simekba6ad312016-04-06 10:43:23 +0200575 iommus = <&smmu 0x876>;
Michal Simek332996c2019-10-14 15:56:31 +0200576 power-domains = <&zynqmp_firmware PD_ETH_2>;
Michal Simek87b50f92021-11-18 13:42:27 +0100577 resets = <&zynqmp_reset ZYNQMP_RESET_GEM2>;
Michal Simeke6a01d52022-12-09 13:56:38 +0100578 reset-names = "gem2_rst";
Michal Simek44303df2015-10-30 15:39:18 +0100579 };
580
581 gem3: ethernet@ff0e0000 {
Michal Simeka09d9272023-02-06 13:50:00 +0100582 compatible = "xlnx,zynqmp-gem", "cdns,gem";
Michal Simek44303df2015-10-30 15:39:18 +0100583 status = "disabled";
584 interrupt-parent = <&gic>;
585 interrupts = <0 63 4>, <0 63 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100586 reg = <0x0 0xff0e0000 0x0 0x1000>;
Michal Simekca442162021-11-18 13:42:28 +0100587 clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
Michal Simek44303df2015-10-30 15:39:18 +0100588 #address-cells = <1>;
589 #size-cells = <0>;
Michal Simekba6ad312016-04-06 10:43:23 +0200590 iommus = <&smmu 0x877>;
Michal Simek332996c2019-10-14 15:56:31 +0200591 power-domains = <&zynqmp_firmware PD_ETH_3>;
Michal Simek87b50f92021-11-18 13:42:27 +0100592 resets = <&zynqmp_reset ZYNQMP_RESET_GEM3>;
Michal Simeke6a01d52022-12-09 13:56:38 +0100593 reset-names = "gem3_rst";
Michal Simek44303df2015-10-30 15:39:18 +0100594 };
595
596 gpio: gpio@ff0a0000 {
597 compatible = "xlnx,zynqmp-gpio-1.0";
598 status = "disabled";
599 #gpio-cells = <0x2>;
Michal Simekb94a3c22020-01-09 13:10:59 +0100600 gpio-controller;
Michal Simek44303df2015-10-30 15:39:18 +0100601 interrupt-parent = <&gic>;
602 interrupts = <0 16 4>;
Michal Simek9e826b62016-10-20 10:26:13 +0200603 interrupt-controller;
604 #interrupt-cells = <2>;
Michal Simekb976fd62016-02-11 07:19:06 +0100605 reg = <0x0 0xff0a0000 0x0 0x1000>;
Michal Simek332996c2019-10-14 15:56:31 +0200606 power-domains = <&zynqmp_firmware PD_GPIO>;
Michal Simek44303df2015-10-30 15:39:18 +0100607 };
608
609 i2c0: i2c@ff020000 {
Michal Simek2d381d22020-09-29 13:43:22 +0200610 compatible = "cdns,i2c-r1p14";
Michal Simek44303df2015-10-30 15:39:18 +0100611 status = "disabled";
612 interrupt-parent = <&gic>;
613 interrupts = <0 17 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100614 reg = <0x0 0xff020000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100615 #address-cells = <1>;
616 #size-cells = <0>;
Michal Simek332996c2019-10-14 15:56:31 +0200617 power-domains = <&zynqmp_firmware PD_I2C_0>;
Michal Simek44303df2015-10-30 15:39:18 +0100618 };
619
620 i2c1: i2c@ff030000 {
Michal Simek2d381d22020-09-29 13:43:22 +0200621 compatible = "cdns,i2c-r1p14";
Michal Simek44303df2015-10-30 15:39:18 +0100622 status = "disabled";
623 interrupt-parent = <&gic>;
624 interrupts = <0 18 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100625 reg = <0x0 0xff030000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100626 #address-cells = <1>;
627 #size-cells = <0>;
Michal Simek332996c2019-10-14 15:56:31 +0200628 power-domains = <&zynqmp_firmware PD_I2C_1>;
Michal Simek44303df2015-10-30 15:39:18 +0100629 };
630
Naga Sureshkumar Relli55344802016-05-18 12:23:13 +0530631 ocm: memory-controller@ff960000 {
632 compatible = "xlnx,zynqmp-ocmc-1.0";
Michal Simekb976fd62016-02-11 07:19:06 +0100633 reg = <0x0 0xff960000 0x0 0x1000>;
Naga Sureshkumar Relli55344802016-05-18 12:23:13 +0530634 interrupt-parent = <&gic>;
635 interrupts = <0 10 4>;
636 };
637
Michal Simek44303df2015-10-30 15:39:18 +0100638 pcie: pcie@fd0e0000 {
639 compatible = "xlnx,nwl-pcie-2.11";
640 status = "disabled";
641 #address-cells = <3>;
642 #size-cells = <2>;
643 #interrupt-cells = <1>;
Bharat Kumar Gogada7d6ca732016-07-19 20:49:29 +0530644 msi-controller;
Michal Simek44303df2015-10-30 15:39:18 +0100645 device_type = "pci";
646 interrupt-parent = <&gic>;
Michal Simek91a8b0e2016-01-20 12:59:23 +0100647 interrupts = <0 118 4>,
Bharat Kumar Gogada7d6ca732016-07-19 20:49:29 +0530648 <0 117 4>,
Michal Simek91a8b0e2016-01-20 12:59:23 +0100649 <0 116 4>,
650 <0 115 4>, /* MSI_1 [63...32] */
651 <0 114 4>; /* MSI_0 [31...0] */
Michal Simek680e9972018-01-17 16:32:33 +0100652 interrupt-names = "misc", "dummy", "intx",
653 "msi1", "msi0";
Bharat Kumar Gogada7d6ca732016-07-19 20:49:29 +0530654 msi-parent = <&pcie>;
Michal Simekb976fd62016-02-11 07:19:06 +0100655 reg = <0x0 0xfd0e0000 0x0 0x1000>,
656 <0x0 0xfd480000 0x0 0x1000>,
Bharat Kumar Gogada688d1be2016-08-02 20:34:13 +0530657 <0x80 0x00000000 0x0 0x1000000>;
Michal Simek44303df2015-10-30 15:39:18 +0100658 reg-names = "breg", "pcireg", "cfg";
Michal Simek2d381d22020-09-29 13:43:22 +0200659 ranges = <0x02000000 0x00000000 0xe0000000 0x00000000 0xe0000000 0x00000000 0x10000000>,/* non-prefetchable memory */
660 <0x43000000 0x00000006 0x00000000 0x00000006 0x00000000 0x00000002 0x00000000>;/* prefetchable memory */
Rob Herringec2b2d42017-03-21 21:03:13 -0500661 bus-range = <0x00 0xff>;
Bharat Kumar Gogada33aec512016-02-15 21:18:58 +0530662 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
663 interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>,
664 <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
665 <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
666 <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
Stefano Stabellinice42bd22021-05-05 14:18:21 -0700667 iommus = <&smmu 0x4d0>;
Michal Simek332996c2019-10-14 15:56:31 +0200668 power-domains = <&zynqmp_firmware PD_PCIE>;
Bharat Kumar Gogada33aec512016-02-15 21:18:58 +0530669 pcie_intc: legacy-interrupt-controller {
670 interrupt-controller;
671 #address-cells = <0>;
672 #interrupt-cells = <1>;
673 };
Michal Simek44303df2015-10-30 15:39:18 +0100674 };
675
676 qspi: spi@ff0f0000 {
Simon Glass8c103c32023-02-13 08:56:33 -0700677 bootph-all;
Michal Simek44303df2015-10-30 15:39:18 +0100678 compatible = "xlnx,zynqmp-qspi-1.0";
679 status = "disabled";
680 clock-names = "ref_clk", "pclk";
681 interrupts = <0 15 4>;
682 interrupt-parent = <&gic>;
683 num-cs = <1>;
Michal Simekb976fd62016-02-11 07:19:06 +0100684 reg = <0x0 0xff0f0000 0x0 0x1000>,
685 <0x0 0xc0000000 0x0 0x8000000>;
Michal Simek44303df2015-10-30 15:39:18 +0100686 #address-cells = <1>;
687 #size-cells = <0>;
Michal Simekba6ad312016-04-06 10:43:23 +0200688 iommus = <&smmu 0x873>;
Michal Simek332996c2019-10-14 15:56:31 +0200689 power-domains = <&zynqmp_firmware PD_QSPI>;
Michal Simek44303df2015-10-30 15:39:18 +0100690 };
691
Michal Simekce906542020-11-26 14:25:02 +0100692 psgtr: phy@fd400000 {
693 compatible = "xlnx,zynqmp-psgtr-v1.1";
694 status = "disabled";
695 reg = <0x0 0xfd400000 0x0 0x40000>,
696 <0x0 0xfd3d0000 0x0 0x1000>;
697 reg-names = "serdes", "siou";
698 #phy-cells = <4>;
699 };
700
Michal Simek44303df2015-10-30 15:39:18 +0100701 rtc: rtc@ffa60000 {
702 compatible = "xlnx,zynqmp-rtc";
703 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100704 reg = <0x0 0xffa60000 0x0 0x100>;
Michal Simek44303df2015-10-30 15:39:18 +0100705 interrupt-parent = <&gic>;
706 interrupts = <0 26 4>, <0 27 4>;
707 interrupt-names = "alarm", "sec";
Srinivas Neeliee6b3c52021-03-08 14:05:19 +0530708 calibration = <0x7FFF>;
Michal Simek44303df2015-10-30 15:39:18 +0100709 };
710
711 sata: ahci@fd0c0000 {
712 compatible = "ceva,ahci-1v84";
713 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100714 reg = <0x0 0xfd0c0000 0x0 0x2000>;
Michal Simek44303df2015-10-30 15:39:18 +0100715 interrupt-parent = <&gic>;
716 interrupts = <0 133 4>;
Michal Simek332996c2019-10-14 15:56:31 +0200717 power-domains = <&zynqmp_firmware PD_SATA>;
Michal Simekfee3e302021-05-27 13:49:05 +0200718 resets = <&zynqmp_reset ZYNQMP_RESET_SATA>;
Anurag Kumar Vulisha110d06b2017-07-04 20:03:42 +0530719 iommus = <&smmu 0x4c0>, <&smmu 0x4c1>,
720 <&smmu 0x4c2>, <&smmu 0x4c3>;
721 /* dma-coherent; */
Michal Simek44303df2015-10-30 15:39:18 +0100722 };
723
Siva Durga Prasad Paladugue7c9de62019-01-03 15:44:24 +0530724 sdhci0: mmc@ff160000 {
Simon Glass8c103c32023-02-13 08:56:33 -0700725 bootph-all;
Sai Krishna Potthuri0488a5e2016-08-16 14:41:35 +0530726 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
Michal Simek44303df2015-10-30 15:39:18 +0100727 status = "disabled";
728 interrupt-parent = <&gic>;
729 interrupts = <0 48 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100730 reg = <0x0 0xff160000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100731 clock-names = "clk_xin", "clk_ahb";
Michal Simekba6ad312016-04-06 10:43:23 +0200732 iommus = <&smmu 0x870>;
Ashok Reddy Somad9872d82020-02-17 23:32:57 -0700733 #clock-cells = <1>;
734 clock-output-names = "clk_out_sd0", "clk_in_sd0";
Michal Simekce906542020-11-26 14:25:02 +0100735 power-domains = <&zynqmp_firmware PD_SD_0>;
Sai Krishna Potthuri8bd9e2f2022-02-28 15:59:29 +0100736 resets = <&zynqmp_reset ZYNQMP_RESET_SDIO0>;
Michal Simek44303df2015-10-30 15:39:18 +0100737 };
738
Siva Durga Prasad Paladugue7c9de62019-01-03 15:44:24 +0530739 sdhci1: mmc@ff170000 {
Simon Glass8c103c32023-02-13 08:56:33 -0700740 bootph-all;
Sai Krishna Potthuri0488a5e2016-08-16 14:41:35 +0530741 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
Michal Simek44303df2015-10-30 15:39:18 +0100742 status = "disabled";
743 interrupt-parent = <&gic>;
744 interrupts = <0 49 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100745 reg = <0x0 0xff170000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100746 clock-names = "clk_xin", "clk_ahb";
Michal Simekba6ad312016-04-06 10:43:23 +0200747 iommus = <&smmu 0x871>;
Ashok Reddy Somad9872d82020-02-17 23:32:57 -0700748 #clock-cells = <1>;
749 clock-output-names = "clk_out_sd1", "clk_in_sd1";
Michal Simekce906542020-11-26 14:25:02 +0100750 power-domains = <&zynqmp_firmware PD_SD_1>;
Sai Krishna Potthuri8bd9e2f2022-02-28 15:59:29 +0100751 resets = <&zynqmp_reset ZYNQMP_RESET_SDIO1>;
Michal Simek44303df2015-10-30 15:39:18 +0100752 };
753
Michal Simek2d381d22020-09-29 13:43:22 +0200754 smmu: iommu@fd800000 {
Michal Simek44303df2015-10-30 15:39:18 +0100755 compatible = "arm,mmu-500";
Michal Simekb976fd62016-02-11 07:19:06 +0100756 reg = <0x0 0xfd800000 0x0 0x20000>;
Michal Simekba6ad312016-04-06 10:43:23 +0200757 #iommu-cells = <1>;
Naga Sureshkumar Relli10f2a292017-03-09 20:00:13 +0530758 status = "disabled";
Michal Simek44303df2015-10-30 15:39:18 +0100759 #global-interrupts = <1>;
760 interrupt-parent = <&gic>;
Edgar E. Iglesias88a85aa2015-11-26 14:12:19 +0100761 interrupts = <0 155 4>,
762 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
763 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
764 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>,
765 <0 155 4>, <0 155 4>, <0 155 4>, <0 155 4>;
Michal Simek44303df2015-10-30 15:39:18 +0100766 };
767
768 spi0: spi@ff040000 {
769 compatible = "cdns,spi-r1p6";
770 status = "disabled";
771 interrupt-parent = <&gic>;
772 interrupts = <0 19 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100773 reg = <0x0 0xff040000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100774 clock-names = "ref_clk", "pclk";
775 #address-cells = <1>;
776 #size-cells = <0>;
Michal Simek332996c2019-10-14 15:56:31 +0200777 power-domains = <&zynqmp_firmware PD_SPI_0>;
Michal Simek44303df2015-10-30 15:39:18 +0100778 };
779
780 spi1: spi@ff050000 {
781 compatible = "cdns,spi-r1p6";
782 status = "disabled";
783 interrupt-parent = <&gic>;
784 interrupts = <0 20 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100785 reg = <0x0 0xff050000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100786 clock-names = "ref_clk", "pclk";
787 #address-cells = <1>;
788 #size-cells = <0>;
Michal Simek332996c2019-10-14 15:56:31 +0200789 power-domains = <&zynqmp_firmware PD_SPI_1>;
Michal Simek44303df2015-10-30 15:39:18 +0100790 };
791
792 ttc0: timer@ff110000 {
793 compatible = "cdns,ttc";
794 status = "disabled";
795 interrupt-parent = <&gic>;
796 interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100797 reg = <0x0 0xff110000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100798 timer-width = <32>;
Michal Simek332996c2019-10-14 15:56:31 +0200799 power-domains = <&zynqmp_firmware PD_TTC_0>;
Michal Simek44303df2015-10-30 15:39:18 +0100800 };
801
802 ttc1: timer@ff120000 {
803 compatible = "cdns,ttc";
804 status = "disabled";
805 interrupt-parent = <&gic>;
806 interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100807 reg = <0x0 0xff120000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100808 timer-width = <32>;
Michal Simek332996c2019-10-14 15:56:31 +0200809 power-domains = <&zynqmp_firmware PD_TTC_1>;
Michal Simek44303df2015-10-30 15:39:18 +0100810 };
811
812 ttc2: timer@ff130000 {
813 compatible = "cdns,ttc";
814 status = "disabled";
815 interrupt-parent = <&gic>;
816 interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100817 reg = <0x0 0xff130000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100818 timer-width = <32>;
Michal Simek332996c2019-10-14 15:56:31 +0200819 power-domains = <&zynqmp_firmware PD_TTC_2>;
Michal Simek44303df2015-10-30 15:39:18 +0100820 };
821
822 ttc3: timer@ff140000 {
823 compatible = "cdns,ttc";
824 status = "disabled";
825 interrupt-parent = <&gic>;
826 interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100827 reg = <0x0 0xff140000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100828 timer-width = <32>;
Michal Simek332996c2019-10-14 15:56:31 +0200829 power-domains = <&zynqmp_firmware PD_TTC_3>;
Michal Simek44303df2015-10-30 15:39:18 +0100830 };
831
832 uart0: serial@ff000000 {
Simon Glass8c103c32023-02-13 08:56:33 -0700833 bootph-all;
Michal Simek59b21d22022-01-14 12:43:05 +0100834 compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12";
Michal Simek44303df2015-10-30 15:39:18 +0100835 status = "disabled";
836 interrupt-parent = <&gic>;
837 interrupts = <0 21 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100838 reg = <0x0 0xff000000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100839 clock-names = "uart_clk", "pclk";
Michal Simek332996c2019-10-14 15:56:31 +0200840 power-domains = <&zynqmp_firmware PD_UART_0>;
Michal Simek44303df2015-10-30 15:39:18 +0100841 };
842
843 uart1: serial@ff010000 {
Simon Glass8c103c32023-02-13 08:56:33 -0700844 bootph-all;
Michal Simek59b21d22022-01-14 12:43:05 +0100845 compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12";
Michal Simek44303df2015-10-30 15:39:18 +0100846 status = "disabled";
847 interrupt-parent = <&gic>;
848 interrupts = <0 22 4>;
Michal Simekb976fd62016-02-11 07:19:06 +0100849 reg = <0x0 0xff010000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100850 clock-names = "uart_clk", "pclk";
Michal Simek332996c2019-10-14 15:56:31 +0200851 power-domains = <&zynqmp_firmware PD_UART_1>;
Michal Simek44303df2015-10-30 15:39:18 +0100852 };
853
Michal Simeka30a3ec2022-12-09 13:56:41 +0100854 usb0: usb@ff9d0000 {
Michal Simeka84de482016-04-07 15:06:07 +0200855 #address-cells = <2>;
Michal Simekb976fd62016-02-11 07:19:06 +0100856 #size-cells = <2>;
Michal Simek44303df2015-10-30 15:39:18 +0100857 status = "disabled";
Michal Simeka84de482016-04-07 15:06:07 +0200858 compatible = "xlnx,zynqmp-dwc3";
Manish Naranif7346ef2017-03-27 17:47:00 +0530859 reg = <0x0 0xff9d0000 0x0 0x100>;
Michal Simeka84de482016-04-07 15:06:07 +0200860 clock-names = "bus_clk", "ref_clk";
Michal Simek332996c2019-10-14 15:56:31 +0200861 power-domains = <&zynqmp_firmware PD_USB_0>;
Michal Simekcb4380a2021-06-11 08:51:19 +0200862 resets = <&zynqmp_reset ZYNQMP_RESET_USB0_CORERESET>,
863 <&zynqmp_reset ZYNQMP_RESET_USB0_HIBERRESET>,
864 <&zynqmp_reset ZYNQMP_RESET_USB0_APB>;
865 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
Piyush Mehtaa4180c32022-05-11 11:52:45 +0200866 reset-gpios = <&modepin_gpio 1 GPIO_ACTIVE_LOW>;
Michal Simeka84de482016-04-07 15:06:07 +0200867 ranges;
868
Manish Narani1d70cc72022-01-14 12:43:35 +0100869 dwc3_0: usb@fe200000 {
Michal Simeka84de482016-04-07 15:06:07 +0200870 compatible = "snps,dwc3";
871 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100872 reg = <0x0 0xfe200000 0x0 0x40000>;
Michal Simeka84de482016-04-07 15:06:07 +0200873 interrupt-parent = <&gic>;
Michal Simekcb4380a2021-06-11 08:51:19 +0200874 interrupt-names = "dwc_usb3", "otg", "hiber";
875 interrupts = <0 65 4>, <0 69 4>, <0 75 4>;
Anurag Kumar Vulisha8861dcf2017-06-20 16:25:16 +0530876 iommus = <&smmu 0x860>;
Anurag Kumar Vulisha397a08a2017-03-10 19:18:17 +0530877 snps,quirk-frame-length-adjustment = <0x20>;
Piyush Mehta1bff67e2022-08-23 15:03:31 +0200878 clock-names = "ref";
Michal Simekcb4380a2021-06-11 08:51:19 +0200879 snps,enable_guctl1_resume_quirk;
880 snps,enable_guctl1_ipd_quirk;
881 snps,xhci-stream-quirk;
Michael Grzeschik06ba3c22022-10-23 23:56:49 +0200882 snps,resume-hs-terminations;
Manish Naranif7346ef2017-03-27 17:47:00 +0530883 /* dma-coherent; */
Michal Simeka84de482016-04-07 15:06:07 +0200884 };
Michal Simek44303df2015-10-30 15:39:18 +0100885 };
886
Michal Simeka30a3ec2022-12-09 13:56:41 +0100887 usb1: usb@ff9e0000 {
Michal Simeka84de482016-04-07 15:06:07 +0200888 #address-cells = <2>;
Michal Simekb976fd62016-02-11 07:19:06 +0100889 #size-cells = <2>;
Michal Simek44303df2015-10-30 15:39:18 +0100890 status = "disabled";
Michal Simeka84de482016-04-07 15:06:07 +0200891 compatible = "xlnx,zynqmp-dwc3";
Manish Naranif7346ef2017-03-27 17:47:00 +0530892 reg = <0x0 0xff9e0000 0x0 0x100>;
Michal Simeka84de482016-04-07 15:06:07 +0200893 clock-names = "bus_clk", "ref_clk";
Michal Simek332996c2019-10-14 15:56:31 +0200894 power-domains = <&zynqmp_firmware PD_USB_1>;
Michal Simekcb4380a2021-06-11 08:51:19 +0200895 resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
896 <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
897 <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
898 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
Michal Simeka84de482016-04-07 15:06:07 +0200899 ranges;
900
Manish Narani1d70cc72022-01-14 12:43:35 +0100901 dwc3_1: usb@fe300000 {
Michal Simeka84de482016-04-07 15:06:07 +0200902 compatible = "snps,dwc3";
903 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100904 reg = <0x0 0xfe300000 0x0 0x40000>;
Michal Simeka84de482016-04-07 15:06:07 +0200905 interrupt-parent = <&gic>;
Michal Simekcb4380a2021-06-11 08:51:19 +0200906 interrupt-names = "dwc_usb3", "otg", "hiber";
907 interrupts = <0 70 4>, <0 74 4>, <0 76 4>;
Anurag Kumar Vulisha8861dcf2017-06-20 16:25:16 +0530908 iommus = <&smmu 0x861>;
Anurag Kumar Vulisha397a08a2017-03-10 19:18:17 +0530909 snps,quirk-frame-length-adjustment = <0x20>;
Piyush Mehta1bff67e2022-08-23 15:03:31 +0200910 clock-names = "ref";
Michal Simekcb4380a2021-06-11 08:51:19 +0200911 snps,enable_guctl1_resume_quirk;
912 snps,enable_guctl1_ipd_quirk;
913 snps,xhci-stream-quirk;
Michael Grzeschik06ba3c22022-10-23 23:56:49 +0200914 snps,resume-hs-terminations;
Manish Naranif7346ef2017-03-27 17:47:00 +0530915 /* dma-coherent; */
Michal Simeka84de482016-04-07 15:06:07 +0200916 };
Michal Simek44303df2015-10-30 15:39:18 +0100917 };
918
919 watchdog0: watchdog@fd4d0000 {
920 compatible = "cdns,wdt-r1p2";
921 status = "disabled";
922 interrupt-parent = <&gic>;
Punnaiah Choudary Kallurid3fd4332015-11-04 12:34:17 +0530923 interrupts = <0 113 1>;
Michal Simekb976fd62016-02-11 07:19:06 +0100924 reg = <0x0 0xfd4d0000 0x0 0x1000>;
Mounika Grace Akula3c8ee332018-10-09 20:52:50 +0530925 timeout-sec = <60>;
926 reset-on-timeout;
Michal Simek44303df2015-10-30 15:39:18 +0100927 };
928
Michal Simek2038e462018-07-18 09:25:43 +0200929 lpd_watchdog: watchdog@ff150000 {
930 compatible = "cdns,wdt-r1p2";
931 status = "disabled";
932 interrupt-parent = <&gic>;
933 interrupts = <0 52 1>;
934 reg = <0x0 0xff150000 0x0 0x1000>;
935 timeout-sec = <10>;
936 };
937
Michal Simek795ebc02017-11-02 12:04:43 +0100938 xilinx_ams: ams@ffa50000 {
939 compatible = "xlnx,zynqmp-ams";
940 status = "disabled";
941 interrupt-parent = <&gic>;
942 interrupts = <0 56 4>;
943 interrupt-names = "ams-irq";
944 reg = <0x0 0xffa50000 0x0 0x800>;
945 reg-names = "ams-base";
Michal Simek8dfdb692022-12-09 13:56:39 +0100946 #address-cells = <1>;
947 #size-cells = <1>;
Michal Simek795ebc02017-11-02 12:04:43 +0100948 #io-channel-cells = <1>;
Michal Simek8dfdb692022-12-09 13:56:39 +0100949 ranges = <0 0 0xffa50800 0x800>;
Michal Simek795ebc02017-11-02 12:04:43 +0100950
Michal Simek8dfdb692022-12-09 13:56:39 +0100951 ams_ps: ams_ps@0 {
Michal Simek795ebc02017-11-02 12:04:43 +0100952 compatible = "xlnx,zynqmp-ams-ps";
953 status = "disabled";
Michal Simek8dfdb692022-12-09 13:56:39 +0100954 reg = <0x0 0x400>;
Michal Simek795ebc02017-11-02 12:04:43 +0100955 };
956
Michal Simek8dfdb692022-12-09 13:56:39 +0100957 ams_pl: ams_pl@400 {
Michal Simek795ebc02017-11-02 12:04:43 +0100958 compatible = "xlnx,zynqmp-ams-pl";
959 status = "disabled";
Michal Simek8dfdb692022-12-09 13:56:39 +0100960 reg = <0x400 0x400>;
961 #address-cells = <1>;
962 #size-cells = <0>;
Michal Simek795ebc02017-11-02 12:04:43 +0100963 };
964 };
965
Michal Simekce906542020-11-26 14:25:02 +0100966 zynqmp_dpdma: dma-controller@fd4c0000 {
967 compatible = "xlnx,zynqmp-dpdma";
Michal Simek44303df2015-10-30 15:39:18 +0100968 status = "disabled";
Michal Simekb976fd62016-02-11 07:19:06 +0100969 reg = <0x0 0xfd4c0000 0x0 0x1000>;
Michal Simek44303df2015-10-30 15:39:18 +0100970 interrupts = <0 122 4>;
971 interrupt-parent = <&gic>;
972 clock-names = "axi_clk";
Michal Simek332996c2019-10-14 15:56:31 +0200973 power-domains = <&zynqmp_firmware PD_DP>;
Michal Simek44303df2015-10-30 15:39:18 +0100974 #dma-cells = <1>;
Michal Simek44303df2015-10-30 15:39:18 +0100975 };
Michal Simek04437de2020-02-18 09:24:08 +0100976
Michal Simekce906542020-11-26 14:25:02 +0100977 zynqmp_dpsub: display@fd4a0000 {
Simon Glass8c103c32023-02-13 08:56:33 -0700978 bootph-all;
Michal Simek04437de2020-02-18 09:24:08 +0100979 compatible = "xlnx,zynqmp-dpsub-1.7";
980 status = "disabled";
981 reg = <0x0 0xfd4a0000 0x0 0x1000>,
982 <0x0 0xfd4aa000 0x0 0x1000>,
983 <0x0 0xfd4ab000 0x0 0x1000>,
984 <0x0 0xfd4ac000 0x0 0x1000>;
985 reg-names = "dp", "blend", "av_buf", "aud";
986 interrupts = <0 119 4>;
987 interrupt-parent = <&gic>;
Michal Simek04437de2020-02-18 09:24:08 +0100988 clock-names = "dp_apb_clk", "dp_aud_clk",
989 "dp_vtc_pixel_clk_in";
Michal Simek04437de2020-02-18 09:24:08 +0100990 power-domains = <&zynqmp_firmware PD_DP>;
Michal Simekce906542020-11-26 14:25:02 +0100991 resets = <&zynqmp_reset ZYNQMP_RESET_DP>;
992 dma-names = "vid0", "vid1", "vid2", "gfx0";
993 dmas = <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO0>,
994 <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO1>,
995 <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO2>,
996 <&zynqmp_dpdma ZYNQMP_DPDMA_GRAPHICS>;
Michal Simek04437de2020-02-18 09:24:08 +0100997 };
Michal Simek44303df2015-10-30 15:39:18 +0100998 };
999};