hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
....@@ -2,7 +2,7 @@
22 /*
33 * dts file for Xilinx ZynqMP
44 *
5
- * (C) Copyright 2014 - 2015, Xilinx, Inc.
5
+ * (C) Copyright 2014 - 2019, Xilinx, Inc.
66 *
77 * Michal Simek <michal.simek@xilinx.com>
88 *
....@@ -11,6 +11,9 @@
1111 * published by the Free Software Foundation; either version 2 of
1212 * the License, or (at your option) any later version.
1313 */
14
+
15
+#include <dt-bindings/power/xlnx-zynqmp-power.h>
16
+#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
1417
1518 / {
1619 compatible = "xlnx,zynqmp";
....@@ -22,7 +25,7 @@
2225 #size-cells = <0>;
2326
2427 cpu0: cpu@0 {
25
- compatible = "arm,cortex-a53", "arm,armv8";
28
+ compatible = "arm,cortex-a53";
2629 device_type = "cpu";
2730 enable-method = "psci";
2831 operating-points-v2 = <&cpu_opp_table>;
....@@ -31,7 +34,7 @@
3134 };
3235
3336 cpu1: cpu@1 {
34
- compatible = "arm,cortex-a53", "arm,armv8";
37
+ compatible = "arm,cortex-a53";
3538 device_type = "cpu";
3639 enable-method = "psci";
3740 reg = <0x1>;
....@@ -40,7 +43,7 @@
4043 };
4144
4245 cpu2: cpu@2 {
43
- compatible = "arm,cortex-a53", "arm,armv8";
46
+ compatible = "arm,cortex-a53";
4447 device_type = "cpu";
4548 enable-method = "psci";
4649 reg = <0x2>;
....@@ -49,7 +52,7 @@
4952 };
5053
5154 cpu3: cpu@3 {
52
- compatible = "arm,cortex-a53", "arm,armv8";
55
+ compatible = "arm,cortex-a53";
5356 device_type = "cpu";
5457 enable-method = "psci";
5558 reg = <0x3>;
....@@ -115,6 +118,53 @@
115118 method = "smc";
116119 };
117120
121
+ firmware {
122
+ zynqmp_firmware: zynqmp-firmware {
123
+ compatible = "xlnx,zynqmp-firmware";
124
+ #power-domain-cells = <1>;
125
+ method = "smc";
126
+
127
+ zynqmp_power: zynqmp-power {
128
+ compatible = "xlnx,zynqmp-power";
129
+ interrupt-parent = <&gic>;
130
+ interrupts = <0 35 4>;
131
+ };
132
+
133
+ zynqmp_clk: clock-controller {
134
+ #clock-cells = <1>;
135
+ compatible = "xlnx,zynqmp-clk";
136
+ clocks = <&pss_ref_clk>,
137
+ <&video_clk>,
138
+ <&pss_alt_ref_clk>,
139
+ <&aux_ref_clk>,
140
+ <&gt_crx_ref_clk>;
141
+ clock-names = "pss_ref_clk",
142
+ "video_clk",
143
+ "pss_alt_ref_clk",
144
+ "aux_ref_clk",
145
+ "gt_crx_ref_clk";
146
+ };
147
+
148
+ nvmem_firmware {
149
+ compatible = "xlnx,zynqmp-nvmem-fw";
150
+ #address-cells = <1>;
151
+ #size-cells = <1>;
152
+
153
+ soc_revision: soc_revision@0 {
154
+ reg = <0x0 0x4>;
155
+ };
156
+ };
157
+
158
+ zynqmp_pcap: pcap {
159
+ compatible = "xlnx,zynqmp-pcap-fpga";
160
+ };
161
+
162
+ xlnx_aes: zynqmp-aes {
163
+ compatible = "xlnx,zynqmp-aes";
164
+ };
165
+ };
166
+ };
167
+
118168 timer {
119169 compatible = "arm,armv8-timer";
120170 interrupt-parent = <&gic>;
....@@ -124,14 +174,22 @@
124174 <1 10 0xf08>;
125175 };
126176
127
- amba_apu: amba-apu@0 {
177
+ fpga_full: fpga-full {
178
+ compatible = "fpga-region";
179
+ fpga-mgr = <&zynqmp_pcap>;
180
+ #address-cells = <2>;
181
+ #size-cells = <2>;
182
+ ranges;
183
+ };
184
+
185
+ amba_apu: axi@0 {
128186 compatible = "simple-bus";
129187 #address-cells = <2>;
130188 #size-cells = <1>;
131189 ranges = <0 0 0 0 0xffffffff>;
132190
133191 gic: interrupt-controller@f9010000 {
134
- compatible = "arm,gic-400", "arm,cortex-a15-gic";
192
+ compatible = "arm,gic-400";
135193 #interrupt-cells = <3>;
136194 reg = <0x0 0xf9010000 0x10000>,
137195 <0x0 0xf9020000 0x20000>,
....@@ -143,7 +201,7 @@
143201 };
144202 };
145203
146
- amba: amba {
204
+ amba: axi {
147205 compatible = "simple-bus";
148206 #address-cells = <2>;
149207 #size-cells = <2>;
....@@ -158,6 +216,7 @@
158216 interrupt-parent = <&gic>;
159217 tx-fifo-depth = <0x40>;
160218 rx-fifo-depth = <0x40>;
219
+ power-domains = <&zynqmp_firmware PD_CAN_0>;
161220 };
162221
163222 can1: can@ff070000 {
....@@ -169,6 +228,7 @@
169228 interrupt-parent = <&gic>;
170229 tx-fifo-depth = <0x40>;
171230 rx-fifo-depth = <0x40>;
231
+ power-domains = <&zynqmp_firmware PD_CAN_1>;
172232 };
173233
174234 cci: cci@fd6e0000 {
....@@ -199,6 +259,7 @@
199259 interrupts = <0 124 4>;
200260 clock-names = "clk_main", "clk_apb";
201261 xlnx,bus-width = <128>;
262
+ power-domains = <&zynqmp_firmware PD_GDMA>;
202263 };
203264
204265 fpd_dma_chan2: dma@fd510000 {
....@@ -209,6 +270,7 @@
209270 interrupts = <0 125 4>;
210271 clock-names = "clk_main", "clk_apb";
211272 xlnx,bus-width = <128>;
273
+ power-domains = <&zynqmp_firmware PD_GDMA>;
212274 };
213275
214276 fpd_dma_chan3: dma@fd520000 {
....@@ -219,6 +281,7 @@
219281 interrupts = <0 126 4>;
220282 clock-names = "clk_main", "clk_apb";
221283 xlnx,bus-width = <128>;
284
+ power-domains = <&zynqmp_firmware PD_GDMA>;
222285 };
223286
224287 fpd_dma_chan4: dma@fd530000 {
....@@ -229,6 +292,7 @@
229292 interrupts = <0 127 4>;
230293 clock-names = "clk_main", "clk_apb";
231294 xlnx,bus-width = <128>;
295
+ power-domains = <&zynqmp_firmware PD_GDMA>;
232296 };
233297
234298 fpd_dma_chan5: dma@fd540000 {
....@@ -239,6 +303,7 @@
239303 interrupts = <0 128 4>;
240304 clock-names = "clk_main", "clk_apb";
241305 xlnx,bus-width = <128>;
306
+ power-domains = <&zynqmp_firmware PD_GDMA>;
242307 };
243308
244309 fpd_dma_chan6: dma@fd550000 {
....@@ -249,6 +314,7 @@
249314 interrupts = <0 129 4>;
250315 clock-names = "clk_main", "clk_apb";
251316 xlnx,bus-width = <128>;
317
+ power-domains = <&zynqmp_firmware PD_GDMA>;
252318 };
253319
254320 fpd_dma_chan7: dma@fd560000 {
....@@ -259,6 +325,7 @@
259325 interrupts = <0 130 4>;
260326 clock-names = "clk_main", "clk_apb";
261327 xlnx,bus-width = <128>;
328
+ power-domains = <&zynqmp_firmware PD_GDMA>;
262329 };
263330
264331 fpd_dma_chan8: dma@fd570000 {
....@@ -269,6 +336,7 @@
269336 interrupts = <0 131 4>;
270337 clock-names = "clk_main", "clk_apb";
271338 xlnx,bus-width = <128>;
339
+ power-domains = <&zynqmp_firmware PD_GDMA>;
272340 };
273341
274342 /* LPDDMA default allows only secured access. inorder to enable
....@@ -283,6 +351,7 @@
283351 interrupts = <0 77 4>;
284352 clock-names = "clk_main", "clk_apb";
285353 xlnx,bus-width = <64>;
354
+ power-domains = <&zynqmp_firmware PD_ADMA>;
286355 };
287356
288357 lpd_dma_chan2: dma@ffa90000 {
....@@ -293,6 +362,7 @@
293362 interrupts = <0 78 4>;
294363 clock-names = "clk_main", "clk_apb";
295364 xlnx,bus-width = <64>;
365
+ power-domains = <&zynqmp_firmware PD_ADMA>;
296366 };
297367
298368 lpd_dma_chan3: dma@ffaa0000 {
....@@ -303,6 +373,7 @@
303373 interrupts = <0 79 4>;
304374 clock-names = "clk_main", "clk_apb";
305375 xlnx,bus-width = <64>;
376
+ power-domains = <&zynqmp_firmware PD_ADMA>;
306377 };
307378
308379 lpd_dma_chan4: dma@ffab0000 {
....@@ -313,6 +384,7 @@
313384 interrupts = <0 80 4>;
314385 clock-names = "clk_main", "clk_apb";
315386 xlnx,bus-width = <64>;
387
+ power-domains = <&zynqmp_firmware PD_ADMA>;
316388 };
317389
318390 lpd_dma_chan5: dma@ffac0000 {
....@@ -323,6 +395,7 @@
323395 interrupts = <0 81 4>;
324396 clock-names = "clk_main", "clk_apb";
325397 xlnx,bus-width = <64>;
398
+ power-domains = <&zynqmp_firmware PD_ADMA>;
326399 };
327400
328401 lpd_dma_chan6: dma@ffad0000 {
....@@ -333,6 +406,7 @@
333406 interrupts = <0 82 4>;
334407 clock-names = "clk_main", "clk_apb";
335408 xlnx,bus-width = <64>;
409
+ power-domains = <&zynqmp_firmware PD_ADMA>;
336410 };
337411
338412 lpd_dma_chan7: dma@ffae0000 {
....@@ -343,6 +417,7 @@
343417 interrupts = <0 83 4>;
344418 clock-names = "clk_main", "clk_apb";
345419 xlnx,bus-width = <64>;
420
+ power-domains = <&zynqmp_firmware PD_ADMA>;
346421 };
347422
348423 lpd_dma_chan8: dma@ffaf0000 {
....@@ -353,6 +428,14 @@
353428 interrupts = <0 84 4>;
354429 clock-names = "clk_main", "clk_apb";
355430 xlnx,bus-width = <64>;
431
+ power-domains = <&zynqmp_firmware PD_ADMA>;
432
+ };
433
+
434
+ mc: memory-controller@fd070000 {
435
+ compatible = "xlnx,zynqmp-ddrc-2.40a";
436
+ reg = <0x0 0xfd070000 0x0 0x30000>;
437
+ interrupt-parent = <&gic>;
438
+ interrupts = <0 112 4>;
356439 };
357440
358441 gem0: ethernet@ff0b0000 {
....@@ -364,6 +447,7 @@
364447 clock-names = "pclk", "hclk", "tx_clk";
365448 #address-cells = <1>;
366449 #size-cells = <0>;
450
+ power-domains = <&zynqmp_firmware PD_ETH_0>;
367451 };
368452
369453 gem1: ethernet@ff0c0000 {
....@@ -375,6 +459,7 @@
375459 clock-names = "pclk", "hclk", "tx_clk";
376460 #address-cells = <1>;
377461 #size-cells = <0>;
462
+ power-domains = <&zynqmp_firmware PD_ETH_1>;
378463 };
379464
380465 gem2: ethernet@ff0d0000 {
....@@ -386,6 +471,7 @@
386471 clock-names = "pclk", "hclk", "tx_clk";
387472 #address-cells = <1>;
388473 #size-cells = <0>;
474
+ power-domains = <&zynqmp_firmware PD_ETH_2>;
389475 };
390476
391477 gem3: ethernet@ff0e0000 {
....@@ -397,17 +483,20 @@
397483 clock-names = "pclk", "hclk", "tx_clk";
398484 #address-cells = <1>;
399485 #size-cells = <0>;
486
+ power-domains = <&zynqmp_firmware PD_ETH_3>;
400487 };
401488
402489 gpio: gpio@ff0a0000 {
403490 compatible = "xlnx,zynqmp-gpio-1.0";
404491 status = "disabled";
405492 #gpio-cells = <0x2>;
493
+ gpio-controller;
406494 interrupt-parent = <&gic>;
407495 interrupts = <0 16 4>;
408496 interrupt-controller;
409497 #interrupt-cells = <2>;
410498 reg = <0x0 0xff0a0000 0x0 0x1000>;
499
+ power-domains = <&zynqmp_firmware PD_GPIO>;
411500 };
412501
413502 i2c0: i2c@ff020000 {
....@@ -418,6 +507,7 @@
418507 reg = <0x0 0xff020000 0x0 0x1000>;
419508 #address-cells = <1>;
420509 #size-cells = <0>;
510
+ power-domains = <&zynqmp_firmware PD_I2C_0>;
421511 };
422512
423513 i2c1: i2c@ff030000 {
....@@ -428,6 +518,7 @@
428518 reg = <0x0 0xff030000 0x0 0x1000>;
429519 #address-cells = <1>;
430520 #size-cells = <0>;
521
+ power-domains = <&zynqmp_firmware PD_I2C_1>;
431522 };
432523
433524 pcie: pcie@fd0e0000 {
....@@ -459,11 +550,21 @@
459550 <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
460551 <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
461552 <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
553
+ power-domains = <&zynqmp_firmware PD_PCIE>;
462554 pcie_intc: legacy-interrupt-controller {
463555 interrupt-controller;
464556 #address-cells = <0>;
465557 #interrupt-cells = <1>;
466558 };
559
+ };
560
+
561
+ psgtr: phy@fd400000 {
562
+ compatible = "xlnx,zynqmp-psgtr-v1.1";
563
+ status = "disabled";
564
+ reg = <0x0 0xfd400000 0x0 0x40000>,
565
+ <0x0 0xfd3d0000 0x0 0x1000>;
566
+ reg-names = "serdes", "siou";
567
+ #phy-cells = <4>;
467568 };
468569
469570 rtc: rtc@ffa60000 {
....@@ -482,27 +583,34 @@
482583 reg = <0x0 0xfd0c0000 0x0 0x2000>;
483584 interrupt-parent = <&gic>;
484585 interrupts = <0 133 4>;
586
+ power-domains = <&zynqmp_firmware PD_SATA>;
485587 };
486588
487
- sdhci0: sdhci@ff160000 {
488
- compatible = "arasan,sdhci-8.9a";
589
+ sdhci0: mmc@ff160000 {
590
+ compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
489591 status = "disabled";
490592 interrupt-parent = <&gic>;
491593 interrupts = <0 48 4>;
492594 reg = <0x0 0xff160000 0x0 0x1000>;
493595 clock-names = "clk_xin", "clk_ahb";
596
+ #clock-cells = <1>;
597
+ clock-output-names = "clk_out_sd0", "clk_in_sd0";
598
+ power-domains = <&zynqmp_firmware PD_SD_0>;
494599 };
495600
496
- sdhci1: sdhci@ff170000 {
497
- compatible = "arasan,sdhci-8.9a";
601
+ sdhci1: mmc@ff170000 {
602
+ compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
498603 status = "disabled";
499604 interrupt-parent = <&gic>;
500605 interrupts = <0 49 4>;
501606 reg = <0x0 0xff170000 0x0 0x1000>;
502607 clock-names = "clk_xin", "clk_ahb";
608
+ #clock-cells = <1>;
609
+ clock-output-names = "clk_out_sd1", "clk_in_sd1";
610
+ power-domains = <&zynqmp_firmware PD_SD_1>;
503611 };
504612
505
- smmu: smmu@fd800000 {
613
+ smmu: iommu@fd800000 {
506614 compatible = "arm,mmu-500";
507615 reg = <0x0 0xfd800000 0x0 0x20000>;
508616 status = "disabled";
....@@ -524,6 +632,7 @@
524632 clock-names = "ref_clk", "pclk";
525633 #address-cells = <1>;
526634 #size-cells = <0>;
635
+ power-domains = <&zynqmp_firmware PD_SPI_0>;
527636 };
528637
529638 spi1: spi@ff050000 {
....@@ -535,6 +644,7 @@
535644 clock-names = "ref_clk", "pclk";
536645 #address-cells = <1>;
537646 #size-cells = <0>;
647
+ power-domains = <&zynqmp_firmware PD_SPI_1>;
538648 };
539649
540650 ttc0: timer@ff110000 {
....@@ -544,6 +654,7 @@
544654 interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
545655 reg = <0x0 0xff110000 0x0 0x1000>;
546656 timer-width = <32>;
657
+ power-domains = <&zynqmp_firmware PD_TTC_0>;
547658 };
548659
549660 ttc1: timer@ff120000 {
....@@ -553,6 +664,7 @@
553664 interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
554665 reg = <0x0 0xff120000 0x0 0x1000>;
555666 timer-width = <32>;
667
+ power-domains = <&zynqmp_firmware PD_TTC_1>;
556668 };
557669
558670 ttc2: timer@ff130000 {
....@@ -562,6 +674,7 @@
562674 interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
563675 reg = <0x0 0xff130000 0x0 0x1000>;
564676 timer-width = <32>;
677
+ power-domains = <&zynqmp_firmware PD_TTC_2>;
565678 };
566679
567680 ttc3: timer@ff140000 {
....@@ -571,6 +684,7 @@
571684 interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
572685 reg = <0x0 0xff140000 0x0 0x1000>;
573686 timer-width = <32>;
687
+ power-domains = <&zynqmp_firmware PD_TTC_3>;
574688 };
575689
576690 uart0: serial@ff000000 {
....@@ -580,6 +694,7 @@
580694 interrupts = <0 21 4>;
581695 reg = <0x0 0xff000000 0x0 0x1000>;
582696 clock-names = "uart_clk", "pclk";
697
+ power-domains = <&zynqmp_firmware PD_UART_0>;
583698 };
584699
585700 uart1: serial@ff010000 {
....@@ -589,6 +704,7 @@
589704 interrupts = <0 22 4>;
590705 reg = <0x0 0xff010000 0x0 0x1000>;
591706 clock-names = "uart_clk", "pclk";
707
+ power-domains = <&zynqmp_firmware PD_UART_1>;
592708 };
593709
594710 usb0: usb@fe200000 {
....@@ -598,6 +714,7 @@
598714 interrupts = <0 65 4>;
599715 reg = <0x0 0xfe200000 0x0 0x40000>;
600716 clock-names = "clk_xin", "clk_ahb";
717
+ power-domains = <&zynqmp_firmware PD_USB_0>;
601718 };
602719
603720 usb1: usb@fe300000 {
....@@ -607,6 +724,7 @@
607724 interrupts = <0 70 4>;
608725 reg = <0x0 0xfe300000 0x0 0x40000>;
609726 clock-names = "clk_xin", "clk_ahb";
727
+ power-domains = <&zynqmp_firmware PD_USB_1>;
610728 };
611729
612730 watchdog0: watchdog@fd4d0000 {