2 * Spreadtrum SC9860 SoC
4 * Copyright (C) 2016, Spreadtrum Communications Inc.
6 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
9 #include <dt-bindings/interrupt-controller/arm-gic.h>
10 #include "whale2.dtsi"
51 compatible = "arm,cortex-a53", "arm,armv8";
53 enable-method = "psci";
54 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
59 compatible = "arm,cortex-a53", "arm,armv8";
61 enable-method = "psci";
62 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
67 compatible = "arm,cortex-a53", "arm,armv8";
69 enable-method = "psci";
70 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
75 compatible = "arm,cortex-a53", "arm,armv8";
77 enable-method = "psci";
78 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
83 compatible = "arm,cortex-a53", "arm,armv8";
85 enable-method = "psci";
86 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
91 compatible = "arm,cortex-a53", "arm,armv8";
93 enable-method = "psci";
94 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
99 compatible = "arm,cortex-a53", "arm,armv8";
100 reg = <0x0 0x530102>;
101 enable-method = "psci";
102 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
107 compatible = "arm,cortex-a53", "arm,armv8";
108 reg = <0x0 0x530103>;
109 enable-method = "psci";
110 cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
115 entry-method = "arm,psci";
118 compatible = "arm,idle-state";
119 entry-latency-us = <1000>;
120 exit-latency-us = <700>;
121 min-residency-us = <2500>;
123 arm,psci-suspend-param = <0x00010002>;
126 CLUSTER_PD: cluster_pd {
127 compatible = "arm,idle-state";
128 entry-latency-us = <1000>;
129 exit-latency-us = <1000>;
130 min-residency-us = <3000>;
132 arm,psci-suspend-param = <0x01010003>;
136 gic: interrupt-controller@12001000 {
137 compatible = "arm,gic-400";
138 reg = <0 0x12001000 0 0x1000>,
139 <0 0x12002000 0 0x2000>,
140 <0 0x12004000 0 0x2000>,
141 <0 0x12006000 0 0x2000>;
142 #interrupt-cells = <3>;
143 interrupt-controller;
144 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8)
145 | IRQ_TYPE_LEVEL_HIGH)>;
149 compatible = "arm,psci-0.2";
154 compatible = "arm,armv8-timer";
155 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8)
156 | IRQ_TYPE_LEVEL_LOW)>,
157 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8)
158 | IRQ_TYPE_LEVEL_LOW)>,
159 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8)
160 | IRQ_TYPE_LEVEL_LOW)>,
161 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8)
162 | IRQ_TYPE_LEVEL_LOW)>;
166 compatible = "arm,cortex-a53-pmu", "arm,armv8-pmuv3";
167 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
168 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
169 <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
170 <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
171 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
172 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
173 <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>,
174 <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
175 interrupt-affinity = <&CPU0>,
187 compatible = "sprd,sc9860-pmu-gate";
188 sprd,syscon = <&pmu_regs>; /* 0x402b0000 */
194 compatible = "sprd,sc9860-pll";
195 sprd,syscon = <&ana_regs>; /* 0x40400000 */
196 clocks = <&pmu_gate 0>;
200 ap_clk: clock-controller@20000000 {
201 compatible = "sprd,sc9860-ap-clk";
202 reg = <0 0x20000000 0 0x400>;
203 clocks = <&ext_26m>, <&pll 0>,
208 aon_prediv: aon-prediv {
209 compatible = "sprd,sc9860-aon-prediv";
210 reg = <0 0x402d0000 0 0x400>;
211 clocks = <&ext_26m>, <&pll 0>,
216 apahb_gate: apahb-gate {
217 compatible = "sprd,sc9860-apahb-gate";
218 sprd,syscon = <&ap_ahb_regs>; /* 0x20210000 */
219 clocks = <&aon_prediv 0>;
224 compatible = "sprd,sc9860-aon-gate";
225 sprd,syscon = <&aon_regs>; /* 0x402e0000 */
226 clocks = <&aon_prediv 0>;
230 aonsecure_clk: clock-controller@40880000 {
231 compatible = "sprd,sc9860-aonsecure-clk";
232 reg = <0 0x40880000 0 0x400>;
233 clocks = <&ext_26m>, <&pll 0>;
237 agcp_gate: agcp-gate {
238 compatible = "sprd,sc9860-agcp-gate";
239 sprd,syscon = <&agcp_regs>; /* 0x415e0000 */
240 clocks = <&aon_prediv 0>;
244 gpu_clk: clock-controller@60200000 {
245 compatible = "sprd,sc9860-gpu-clk";
246 reg = <0 0x60200000 0 0x400>;
251 vsp_clk: clock-controller@61000000 {
252 compatible = "sprd,sc9860-vsp-clk";
253 reg = <0 0x61000000 0 0x400>;
254 clocks = <&ext_26m>, <&pll 0>;
259 compatible = "sprd,sc9860-vsp-gate";
260 sprd,syscon = <&vsp_regs>; /* 0x61100000 */
261 clocks = <&vsp_clk 0>;
265 cam_clk: clock-controller@62000000 {
266 compatible = "sprd,sc9860-cam-clk";
267 reg = <0 0x62000000 0 0x4000>;
268 clocks = <&ext_26m>, <&pll 0>;
273 compatible = "sprd,sc9860-cam-gate";
274 sprd,syscon = <&cam_regs>; /* 0x62100000 */
275 clocks = <&cam_clk 0>;
279 disp_clk: clock-controller@63000000 {
280 compatible = "sprd,sc9860-disp-clk";
281 reg = <0 0x63000000 0 0x400>;
282 clocks = <&ext_26m>, <&pll 0>;
286 disp_gate: disp-gate {
287 compatible = "sprd,sc9860-disp-gate";
288 sprd,syscon = <&disp_regs>; /* 0x63100000 */
289 clocks = <&disp_clk 0>;
293 apapb_gate: apapb-gate {
294 compatible = "sprd,sc9860-apapb-gate";
295 sprd,syscon = <&ap_apb_regs>; /* 0x70b00000 */
296 clocks = <&ap_clk 0>;
300 funnel@10001000 { /* SoC Funnel */
301 compatible = "arm,coresight-funnel", "arm,primecell";
302 reg = <0 0x10001000 0 0x1000>;
304 clock-names = "apb_pclk";
306 #address-cells = <1>;
311 soc_funnel_out_port: endpoint {
312 remote-endpoint = <&etb_in>;
318 soc_funnel_in_port0: endpoint {
321 <&main_funnel_out_port>;
327 soc_funnel_in_port1: endpoint {
337 compatible = "arm,coresight-tmc", "arm,primecell";
338 reg = <0 0x10003000 0 0x1000>;
340 clock-names = "apb_pclk";
345 <&soc_funnel_out_port>;
351 compatible = "arm,coresight-stm", "arm,primecell";
352 reg = <0 0x10006000 0 0x1000>,
353 <0 0x01000000 0 0x180000>;
354 reg-names = "stm-base", "stm-stimulus-base";
356 clock-names = "apb_pclk";
358 stm_out_port: endpoint {
360 <&soc_funnel_in_port1>;
365 funnel@11001000 { /* Cluster0 Funnel */
366 compatible = "arm,coresight-funnel", "arm,primecell";
367 reg = <0 0x11001000 0 0x1000>;
369 clock-names = "apb_pclk";
371 #address-cells = <1>;
376 cluster0_funnel_out_port: endpoint {
384 cluster0_funnel_in_port0: endpoint {
386 remote-endpoint = <&etm0_out>;
392 cluster0_funnel_in_port1: endpoint {
394 remote-endpoint = <&etm1_out>;
400 cluster0_funnel_in_port2: endpoint {
402 remote-endpoint = <&etm2_out>;
408 cluster0_funnel_in_port3: endpoint {
410 remote-endpoint = <&etm3_out>;
416 funnel@11002000 { /* Cluster1 Funnel */
417 compatible = "arm,coresight-funnel", "arm,primecell";
418 reg = <0 0x11002000 0 0x1000>;
420 clock-names = "apb_pclk";
422 #address-cells = <1>;
427 cluster1_funnel_out_port: endpoint {
435 cluster1_funnel_in_port0: endpoint {
437 remote-endpoint = <&etm4_out>;
443 cluster1_funnel_in_port1: endpoint {
445 remote-endpoint = <&etm5_out>;
451 cluster1_funnel_in_port2: endpoint {
453 remote-endpoint = <&etm6_out>;
459 cluster1_funnel_in_port3: endpoint {
461 remote-endpoint = <&etm7_out>;
467 etf@11003000 { /* ETF on Cluster0 */
468 compatible = "arm,coresight-tmc", "arm,primecell";
469 reg = <0 0x11003000 0 0x1000>;
471 clock-names = "apb_pclk";
474 #address-cells = <1>;
479 cluster0_etf_out: endpoint {
481 <&main_funnel_in_port0>;
487 cluster0_etf_in: endpoint {
490 <&cluster0_funnel_out_port>;
496 etf@11004000 { /* ETF on Cluster1 */
497 compatible = "arm,coresight-tmc", "arm,primecell";
498 reg = <0 0x11004000 0 0x1000>;
500 clock-names = "apb_pclk";
503 #address-cells = <1>;
508 cluster1_etf_out: endpoint {
510 <&main_funnel_in_port1>;
516 cluster1_etf_in: endpoint {
519 <&cluster1_funnel_out_port>;
525 funnel@11005000 { /* Main Funnel */
526 compatible = "arm,coresight-funnel", "arm,primecell";
527 reg = <0 0x11005000 0 0x1000>;
529 clock-names = "apb_pclk";
532 #address-cells = <1>;
537 main_funnel_out_port: endpoint {
539 <&soc_funnel_in_port0>;
545 main_funnel_in_port0: endpoint {
554 main_funnel_in_port1: endpoint {
564 compatible = "arm,coresight-etm4x", "arm,primecell";
565 reg = <0 0x11440000 0 0x1000>;
568 clock-names = "apb_pclk";
573 <&cluster0_funnel_in_port0>;
579 compatible = "arm,coresight-etm4x", "arm,primecell";
580 reg = <0 0x11540000 0 0x1000>;
583 clock-names = "apb_pclk";
588 <&cluster0_funnel_in_port1>;
594 compatible = "arm,coresight-etm4x", "arm,primecell";
595 reg = <0 0x11640000 0 0x1000>;
598 clock-names = "apb_pclk";
603 <&cluster0_funnel_in_port2>;
609 compatible = "arm,coresight-etm4x", "arm,primecell";
610 reg = <0 0x11740000 0 0x1000>;
613 clock-names = "apb_pclk";
618 <&cluster0_funnel_in_port3>;
624 compatible = "arm,coresight-etm4x", "arm,primecell";
625 reg = <0 0x11840000 0 0x1000>;
628 clock-names = "apb_pclk";
633 <&cluster1_funnel_in_port0>;
639 compatible = "arm,coresight-etm4x", "arm,primecell";
640 reg = <0 0x11940000 0 0x1000>;
643 clock-names = "apb_pclk";
648 <&cluster1_funnel_in_port1>;
654 compatible = "arm,coresight-etm4x", "arm,primecell";
655 reg = <0 0x11a40000 0 0x1000>;
658 clock-names = "apb_pclk";
663 <&cluster1_funnel_in_port2>;
669 compatible = "arm,coresight-etm4x", "arm,primecell";
670 reg = <0 0x11b40000 0 0x1000>;
673 clock-names = "apb_pclk";
678 <&cluster1_funnel_in_port3>;