1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Unisoc UMS512 SoC DTS file
5 * Copyright (C) 2021, Unisoc Inc.
8 #include <dt-bindings/clock/sprd,ums512-clk.h>
9 #include <dt-bindings/interrupt-controller/arm-gic.h>
12 interrupt-parent = <&gic>;
51 compatible = "arm,cortex-a55";
53 enable-method = "psci";
54 cpu-idle-states = <&CORE_PD>;
59 compatible = "arm,cortex-a55";
61 enable-method = "psci";
62 cpu-idle-states = <&CORE_PD>;
67 compatible = "arm,cortex-a55";
69 enable-method = "psci";
70 cpu-idle-states = <&CORE_PD>;
75 compatible = "arm,cortex-a55";
77 enable-method = "psci";
78 cpu-idle-states = <&CORE_PD>;
83 compatible = "arm,cortex-a55";
85 enable-method = "psci";
86 cpu-idle-states = <&CORE_PD>;
91 compatible = "arm,cortex-a55";
93 enable-method = "psci";
94 cpu-idle-states = <&CORE_PD>;
99 compatible = "arm,cortex-a75";
101 enable-method = "psci";
102 cpu-idle-states = <&CORE_PD>;
107 compatible = "arm,cortex-a75";
109 enable-method = "psci";
110 cpu-idle-states = <&CORE_PD>;
115 entry-method = "psci";
117 compatible = "arm,idle-state";
118 entry-latency-us = <4000>;
119 exit-latency-us = <4000>;
120 min-residency-us = <10000>;
122 arm,psci-suspend-param = <0x00010000>;
127 compatible = "arm,psci-0.2";
132 compatible = "arm,armv8-timer";
133 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */
134 <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */
135 <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */
136 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */
140 compatible = "arm,cortex-a55-pmu";
141 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
142 <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
143 <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
144 <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
145 <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
146 <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
147 interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>, <&CPU4>, <&CPU5>;
151 compatible = "arm,cortex-a75-pmu";
152 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
153 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
154 interrupt-affinity = <&CPU6>, <&CPU7>;
158 compatible = "simple-bus";
159 #address-cells = <2>;
163 gic: interrupt-controller@12000000 {
164 compatible = "arm,gic-v3";
165 reg = <0x0 0x12000000 0 0x20000>, /* GICD */
166 <0x0 0x12040000 0 0x100000>; /* GICR */
167 #interrupt-cells = <3>;
168 #address-cells = <2>;
171 redistributor-stride = <0x0 0x20000>; /* 128KB stride */
172 #redistributor-regions = <1>;
173 interrupt-controller;
174 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
177 ap_ahb_regs: syscon@20100000 {
178 compatible = "sprd,ums512-glbregs", "syscon",
180 reg = <0 0x20100000 0 0x4000>;
181 #address-cells = <1>;
183 ranges = <0 0 0x20100000 0x4000>;
185 apahb_gate: clock-controller@0 {
186 compatible = "sprd,ums512-apahb-gate";
189 clock-names = "ext-26m";
194 pub_apb_regs: syscon@31050000 {
195 compatible = "sprd,ums512-glbregs", "syscon",
197 reg = <0 0x31050000 0 0x9000>;
200 top_dvfs_apb_regs: syscon@322a0000 {
201 compatible = "sprd,ums512-glbregs", "syscon",
203 reg = <0 0x322a0000 0 0x8000>;
206 ap_intc0_regs: syscon@32310000 {
207 compatible = "sprd,ums512-glbregs", "syscon",
209 reg = <0 0x32310000 0 0x1000>;
212 ap_intc1_regs: syscon@32320000 {
213 compatible = "sprd,ums512-glbregs", "syscon",
215 reg = <0 0x32320000 0 0x1000>;
218 ap_intc2_regs: syscon@32330000 {
219 compatible = "sprd,ums512-glbregs", "syscon",
221 reg = <0 0x32330000 0 0x1000>;
224 ap_intc3_regs: syscon@32340000 {
225 compatible = "sprd,ums512-glbregs", "syscon",
227 reg = <0 0x32340000 0 0x1000>;
230 ap_intc4_regs: syscon@32350000 {
231 compatible = "sprd,ums512-glbregs", "syscon",
233 reg = <0 0x32350000 0 0x1000>;
236 ap_intc5_regs: syscon@32360000 {
237 compatible = "sprd,ums512-glbregs", "syscon",
239 reg = <0 0x32360000 0 0x1000>;
242 anlg_phy_g0_regs: syscon@32390000 {
243 compatible = "sprd,ums512-glbregs", "syscon",
245 reg = <0 0x32390000 0 0x3000>;
246 #address-cells = <1>;
248 ranges = <0 0 0x32390000 0x3000>;
250 dpll0: clock-controller@0 {
251 compatible = "sprd,ums512-g0-pll";
257 anlg_phy_g2_regs: syscon@323b0000 {
258 compatible = "sprd,ums512-glbregs", "syscon",
260 reg = <0 0x323b0000 0 0x3000>;
261 #address-cells = <1>;
263 ranges = <0 0 0x323b0000 0x3000>;
265 mpll1: clock-controller@0 {
266 compatible = "sprd,ums512-g2-pll";
272 anlg_phy_g3_regs: syscon@323c0000 {
273 compatible = "sprd,ums512-glbregs", "syscon",
275 reg = <0 0x323c0000 0 0x3000>;
276 #address-cells = <1>;
278 ranges = <0 0 0x323c0000 0x3000>;
280 pll1: clock-controller@0 {
281 compatible = "sprd,ums512-g3-pll";
284 clock-names = "ext-26m";
289 anlg_phy_gc_regs: syscon@323e0000 {
290 compatible = "sprd,ums512-glbregs", "syscon",
292 reg = <0 0x323e0000 0 0x3000>;
293 #address-cells = <1>;
295 ranges = <0 0 0x323e0000 0x3000>;
297 pll2: clock-controller@0 {
298 compatible = "sprd,ums512-gc-pll";
301 clock-names = "ext-26m";
306 anlg_phy_g10_regs: syscon@323f0000 {
307 compatible = "sprd,ums512-glbregs", "syscon",
309 reg = <0 0x323f0000 0 0x3000>;
312 aon_apb_regs: syscon@327d0000 {
313 compatible = "sprd,ums512-glbregs", "syscon",
315 reg = <0 0x327d0000 0 0x3000>;
316 #address-cells = <1>;
318 ranges = <0 0 0x327d0000 0x3000>;
320 aonapb_gate: clock-controller@0 {
321 compatible = "sprd,ums512-aon-gate";
324 clock-names = "ext-26m";
329 pmu_apb_regs: syscon@327e0000 {
330 compatible = "sprd,ums512-glbregs", "syscon",
332 reg = <0 0x327e0000 0 0x3000>;
333 #address-cells = <1>;
335 ranges = <0 0 0x327e0000 0x3000>;
337 pmu_gate: clock-controller@0 {
338 compatible = "sprd,ums512-pmu-gate";
341 clock-names = "ext-26m";
346 audcp_apb_regs: syscon@3350d000 {
347 compatible = "sprd,ums512-glbregs", "syscon",
349 reg = <0 0x3350d000 0 0x1000>;
350 #address-cells = <1>;
352 ranges = <0 0 0x3350d000 0x1000>;
354 audcpapb_gate: clock-controller@0 {
355 compatible = "sprd,ums512-audcpapb-gate";
361 audcp_ahb_regs: syscon@335e0000 {
362 compatible = "sprd,ums512-glbregs", "syscon",
364 reg = <0 0x335e0000 0 0x1000>;
365 #address-cells = <1>;
367 ranges = <0 0 0x335e0000 0x1000>;
369 audcpahb_gate: clock-controller@0 {
370 compatible = "sprd,ums512-audcpahb-gate";
376 gpu_apb_regs: syscon@60100000 {
377 compatible = "sprd,ums512-glbregs", "syscon",
379 reg = <0 0x60100000 0 0x3000>;
380 #address-cells = <1>;
382 ranges = <0 0 0x60100000 0x3000>;
384 gpu_clk: clock-controller@0 {
385 compatible = "sprd,ums512-gpu-clk";
387 clock-names = "ext-26m";
393 gpu_dvfs_apb_regs: syscon@60110000 {
394 compatible = "sprd,ums512-glbregs", "syscon",
396 reg = <0 0x60110000 0 0x3000>;
399 mm_ahb_regs: syscon@62200000 {
400 compatible = "sprd,ums512-glbregs", "syscon",
402 reg = <0 0x62200000 0 0x3000>;
403 #address-cells = <1>;
405 ranges = <0 0 0x62200000 0x3000>;
407 mm_gate: clock-controller@0 {
408 compatible = "sprd,ums512-mm-gate-clk";
414 ap_apb_regs: syscon@71000000 {
415 compatible = "sprd,ums512-glbregs", "syscon",
417 reg = <0 0x71000000 0 0x3000>;
418 #address-cells = <1>;
420 ranges = <0 0 0x71000000 0x3000>;
422 apapb_gate: clock-controller@0 {
423 compatible = "sprd,ums512-apapb-gate";
429 ap_clk: clock-controller@20200000 {
430 compatible = "sprd,ums512-ap-clk";
431 reg = <0 0x20200000 0 0x1000>;
433 clock-names = "ext-26m";
437 aon_clk: clock-controller@32080000 {
438 compatible = "sprd,ums512-aonapb-clk";
439 reg = <0 0x32080000 0 0x1000>;
440 clocks = <&ext_26m>, <&ext_32k>,
441 <&ext_4m>, <&rco_100m>;
442 clock-names = "ext-26m", "ext-32k",
443 "ext-4m", "rco-100m";
447 mm_clk: clock-controller@62100000 {
448 compatible = "sprd,ums512-mm-clk";
449 reg = <0 0x62100000 0 0x1000>;
451 clock-names = "ext-26m";
457 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
458 reg = <0 0x3c002000 0 0x1000>;
460 clock-names = "apb_pclk";
464 funnel_soc_out_port: endpoint {
465 remote-endpoint = <&etb_in>;
471 #address-cells = <1>;
476 funnel_soc_in_port: endpoint {
478 <&funnel_corinth_out_port>;
485 soc_etb: etb@3c003000 {
486 compatible = "arm,coresight-tmc", "arm,primecell";
487 reg = <0 0x3c003000 0 0x1000>;
489 clock-names = "apb_pclk";
495 <&funnel_soc_out_port>;
501 /* AP-CPU Funnel for core3/4/5/7 */
503 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
504 reg = <0 0x3e001000 0 0x1000>;
506 clock-names = "apb_pclk";
510 funnel_corinth_lit_out_port: endpoint {
512 <&corinth_etf_lit_in>;
518 #address-cells = <1>;
523 funnel_core_in_port3: endpoint {
524 remote-endpoint = <&etm3_out>;
530 funnel_core_in_port4: endpoint {
531 remote-endpoint = <&etm4_out>;
537 funnel_core_in_port5: endpoint {
538 remote-endpoint = <&etm5_out>;
544 funnel_core_in_port7: endpoint {
545 remote-endpoint = <&etm7_out>;
551 /* AP-CPU ETF for little cores */
553 compatible = "arm,coresight-tmc", "arm,primecell";
554 reg = <0 0x3e002000 0 0x1000>;
556 clock-names = "apb_pclk";
560 corinth_etf_lit_out: endpoint {
562 <&funnel_corinth_from_lit_in_port>;
569 corinth_etf_lit_in: endpoint {
571 <&funnel_corinth_lit_out_port>;
577 /* AP-CPU ETF for big cores */
579 compatible = "arm,coresight-tmc", "arm,primecell";
580 reg = <0 0x3e003000 0 0x1000>;
582 clock-names = "apb_pclk";
586 corinth_etf_big_out: endpoint {
588 <&funnel_corinth_from_big_in_port>;
595 corinth_etf_big_in: endpoint {
597 <&funnel_corinth_big_out_port>;
605 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
606 reg = <0 0x3e004000 0 0x1000>;
608 clock-names = "apb_pclk";
612 funnel_corinth_out_port: endpoint {
614 <&funnel_soc_in_port>;
620 #address-cells = <1>;
625 funnel_corinth_from_lit_in_port: endpoint {
626 remote-endpoint = <&corinth_etf_lit_out>;
632 funnel_corinth_from_big_in_port: endpoint {
633 remote-endpoint = <&corinth_etf_big_out>;
639 /* AP-CPU Funnel for core0/1/2/6 */
641 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
642 reg = <0 0x3e005000 0 0x1000>;
644 clock-names = "apb_pclk";
648 funnel_corinth_big_out_port: endpoint {
649 remote-endpoint = <&corinth_etf_big_in>;
655 #address-cells = <1>;
660 funnel_core_in_port0: endpoint {
661 remote-endpoint = <&etm0_out>;
667 funnel_core_in_port1: endpoint {
668 remote-endpoint = <&etm1_out>;
674 funnel_core_in_port2: endpoint {
675 remote-endpoint = <&etm2_out>;
681 funnel_core_in_port6: endpoint {
682 remote-endpoint = <&etm6_out>;
689 compatible = "arm,coresight-etm4x", "arm,primecell";
690 reg = <0 0x3f040000 0 0x1000>;
693 clock-names = "apb_pclk";
699 <&funnel_core_in_port0>;
706 compatible = "arm,coresight-etm4x", "arm,primecell";
707 reg = <0 0x3f140000 0 0x1000>;
710 clock-names = "apb_pclk";
716 <&funnel_core_in_port1>;
723 compatible = "arm,coresight-etm4x", "arm,primecell";
724 reg = <0 0x3f240000 0 0x1000>;
727 clock-names = "apb_pclk";
733 <&funnel_core_in_port2>;
740 compatible = "arm,coresight-etm4x", "arm,primecell";
741 reg = <0 0x3f340000 0 0x1000>;
744 clock-names = "apb_pclk";
750 <&funnel_core_in_port3>;
757 compatible = "arm,coresight-etm4x", "arm,primecell";
758 reg = <0 0x3f440000 0 0x1000>;
761 clock-names = "apb_pclk";
767 <&funnel_core_in_port4>;
774 compatible = "arm,coresight-etm4x", "arm,primecell";
775 reg = <0 0x3f540000 0 0x1000>;
778 clock-names = "apb_pclk";
784 <&funnel_core_in_port5>;
791 compatible = "arm,coresight-etm4x", "arm,primecell";
792 reg = <0 0x3f640000 0 0x1000>;
795 clock-names = "apb_pclk";
801 <&funnel_core_in_port6>;
808 compatible = "arm,coresight-etm4x", "arm,primecell";
809 reg = <0 0x3f740000 0 0x1000>;
812 clock-names = "apb_pclk";
818 <&funnel_core_in_port7>;
825 compatible = "simple-bus";
826 #address-cells = <1>;
828 ranges = <0 0x0 0x70000000 0x10000000>;
831 compatible = "sprd,ums512-uart",
834 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
839 uart1: serial@100000 {
840 compatible = "sprd,ums512-uart",
842 reg = <0x100000 0x100>;
843 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
849 compatible = "sprd,sdhci-r11";
850 reg = <0x1100000 0x1000>;
851 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
852 clocks = <&ap_clk CLK_SDIO0_2X>,
853 <&apapb_gate CLK_SDIO0_EB>;
854 clock-names = "sdio", "enable";
855 assigned-clocks = <&ap_clk CLK_SDIO0_2X>;
856 assigned-clock-parents = <&pll1 CLK_RPLL>;
861 compatible = "sprd,sdhci-r11";
862 reg = <0x1400000 0x1000>;
863 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
864 clocks = <&ap_clk CLK_EMMC_2X>,
865 <&apapb_gate CLK_EMMC_EB>;
866 clock-names = "sdio", "enable";
867 assigned-clocks = <&ap_clk CLK_EMMC_2X>;
868 assigned-clock-parents = <&pll1 CLK_RPLL>;
874 compatible = "simple-bus";
875 #address-cells = <1>;
877 ranges = <0 0x0 0x32000000 0x1000000>;
879 adi_bus: spi@100000 {
880 compatible = "sprd,ums512-adi";
881 reg = <0x100000 0x100000>;
882 #address-cells = <1>;
884 sprd,hw-channels = <2 0x18cc>, <3 0x18cc>, <13 0x1854>, <15 0x1874>,
885 <17 0x1844>,<19 0x1844>, <21 0x1864>, <30 0x1820>,
886 <35 0x19b8>, <39 0x19ac>;
892 compatible = "fixed-clock";
894 clock-frequency = <26000000>;
895 clock-output-names = "ext-26m";
899 compatible = "fixed-clock";
901 clock-frequency = <32768>;
902 clock-output-names = "ext-32k";
906 compatible = "fixed-clock";
908 clock-frequency = <4000000>;
909 clock-output-names = "ext-4m";
913 compatible = "fixed-clock";
915 clock-frequency = <100000000>;
916 clock-output-names = "rco-100m";