blob: 8bb8a70966d2096a85bbb35d10c28bd7bf090d07 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001/*
2 * Spreadtrum SC9836 SoC DTS file
3 *
4 * Copyright (C) 2014, Spreadtrum Communications Inc.
5 *
6 * This file is licensed under a dual GPLv2 or X11 license.
7 */
8
9#include "sharkl64.dtsi"
10#include <dt-bindings/interrupt-controller/arm-gic.h>
11
12/ {
13 compatible = "sprd,sc9836";
14
15 cpus {
16 #address-cells = <2>;
17 #size-cells = <0>;
18
19 cpu0: cpu@0 {
20 device_type = "cpu";
21 compatible = "arm,cortex-a53";
22 reg = <0x0 0x0>;
23 enable-method = "psci";
24 };
25
26 cpu1: cpu@1 {
27 device_type = "cpu";
28 compatible = "arm,cortex-a53";
29 reg = <0x0 0x1>;
30 enable-method = "psci";
31 };
32
33 cpu2: cpu@2 {
34 device_type = "cpu";
35 compatible = "arm,cortex-a53";
36 reg = <0x0 0x2>;
37 enable-method = "psci";
38 };
39
40 cpu3: cpu@3 {
41 device_type = "cpu";
42 compatible = "arm,cortex-a53";
43 reg = <0x0 0x3>;
44 enable-method = "psci";
45 };
46 };
47
48 etf@10003000 {
49 compatible = "arm,coresight-tmc", "arm,primecell";
50 reg = <0 0x10003000 0 0x1000>;
51 clocks = <&clk26mhz>;
52 clock-names = "apb_pclk";
53 in-ports {
54 port {
55 etf_in: endpoint {
56 remote-endpoint = <&funnel_out_port0>;
57 };
58 };
59 };
60 };
61
62 funnel@10001000 {
63 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
64 reg = <0 0x10001000 0 0x1000>;
65 clocks = <&clk26mhz>;
66 clock-names = "apb_pclk";
67
68 out-ports {
69 port {
70 funnel_out_port0: endpoint {
71 remote-endpoint = <&etf_in>;
72 };
73 };
74 };
75
76 in-ports {
77 #address-cells = <1>;
78 #size-cells = <0>;
79
80 port@0 {
81 reg = <0>;
82 funnel_in_port0: endpoint {
83 remote-endpoint = <&etm0_out>;
84 };
85 };
86
87 port@1 {
88 reg = <1>;
89 funnel_in_port1: endpoint {
90 remote-endpoint = <&etm1_out>;
91 };
92 };
93
94 port@2 {
95 reg = <2>;
96 funnel_in_port2: endpoint {
97 remote-endpoint = <&etm2_out>;
98 };
99 };
100
101 port@3 {
102 reg = <3>;
103 funnel_in_port3: endpoint {
104 remote-endpoint = <&etm3_out>;
105 };
106 };
107
108 port@4 {
109 reg = <4>;
110 funnel_in_port4: endpoint {
111 remote-endpoint = <&stm_out>;
112 };
113 };
114 /* Other input ports aren't connected to anyone */
115 };
116 };
117
118 etm@10440000 {
119 compatible = "arm,coresight-etm4x", "arm,primecell";
120 reg = <0 0x10440000 0 0x1000>;
121
122 cpu = <&cpu0>;
123 clocks = <&clk26mhz>;
124 clock-names = "apb_pclk";
125 out-ports {
126 port {
127 etm0_out: endpoint {
128 remote-endpoint = <&funnel_in_port0>;
129 };
130 };
131 };
132 };
133
134 etm@10540000 {
135 compatible = "arm,coresight-etm4x", "arm,primecell";
136 reg = <0 0x10540000 0 0x1000>;
137
138 cpu = <&cpu1>;
139 clocks = <&clk26mhz>;
140 clock-names = "apb_pclk";
141 out-ports {
142 port {
143 etm1_out: endpoint {
144 remote-endpoint = <&funnel_in_port1>;
145 };
146 };
147 };
148 };
149
150 etm@10640000 {
151 compatible = "arm,coresight-etm4x", "arm,primecell";
152 reg = <0 0x10640000 0 0x1000>;
153
154 cpu = <&cpu2>;
155 clocks = <&clk26mhz>;
156 clock-names = "apb_pclk";
157 out-ports {
158 port {
159 etm2_out: endpoint {
160 remote-endpoint = <&funnel_in_port2>;
161 };
162 };
163 };
164 };
165
166 etm@10740000 {
167 compatible = "arm,coresight-etm4x", "arm,primecell";
168 reg = <0 0x10740000 0 0x1000>;
169
170 cpu = <&cpu3>;
171 clocks = <&clk26mhz>;
172 clock-names = "apb_pclk";
173 out-ports {
174 port {
175 etm3_out: endpoint {
176 remote-endpoint = <&funnel_in_port3>;
177 };
178 };
179 };
180 };
181
182 stm@10006000 {
183 compatible = "arm,coresight-stm", "arm,primecell";
184 reg = <0 0x10006000 0 0x1000>,
185 <0 0x01000000 0 0x180000>;
186 reg-names = "stm-base", "stm-stimulus-base";
187 clocks = <&clk26mhz>;
188 clock-names = "apb_pclk";
189 out-ports {
190 port {
191 stm_out: endpoint {
192 remote-endpoint = <&funnel_in_port4>;
193 };
194 };
195 };
196 };
197
198 gic: interrupt-controller@12001000 {
199 compatible = "arm,gic-400";
200 reg = <0 0x12001000 0 0x1000>,
201 <0 0x12002000 0 0x2000>,
202 <0 0x12004000 0 0x2000>,
203 <0 0x12006000 0 0x2000>;
204 #interrupt-cells = <3>;
205 interrupt-controller;
206 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
207 };
208
209 psci {
210 compatible = "arm,psci";
211 method = "smc";
212 cpu_on = <0xc4000003>;
213 cpu_off = <0x84000002>;
214 cpu_suspend = <0xc4000001>;
215 };
216
217 timer {
218 compatible = "arm,armv8-timer";
219 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
220 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
221 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
222 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
223 };
224};