aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSudeep Holla <sudeep.holla@arm.com>2016-06-02 05:18:41 -0400
committerSudeep Holla <sudeep.holla@arm.com>2016-06-21 10:10:56 -0400
commit3e287cf6ef954947365a4aca6580ea1d6bee3a18 (patch)
tree12eb9ee5888d6ce65246666649ec54fc5b3b49aa
parent1a695a905c18548062509178b98bc91e67510864 (diff)
arm64: dts: juno: add coresight support
Most of the debug-related components on Juno are located in the coreSight subsystem while others are located in the Cortex-Axx clusters, the SCP subsystem, and in the main system. Each core in the two processor clusters contain an Embedded Trace Macrocell(ETM) which generates real-time trace information that trace tools can use and an ATB trace output that is sent to a funnel before going to the CoreSight subsystem. The trace output signals combine with two trace expansions using another funnel and fed into the Embedded Trace FIFO(ETF0). The output trace data stream of the funnel is then replicated before it is sent to either the: - Trace Port Interface Unit(TPIU), that sends it out using the trace port. - ETR that can write the trace data to memory located in the application memory space Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Liviu Dudau <liviu.dudau@arm.com> Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
-rw-r--r--arch/arm64/boot/dts/arm/juno-base.dtsi297
-rw-r--r--arch/arm64/boot/dts/arm/juno-r1.dts24
-rw-r--r--arch/arm64/boot/dts/arm/juno-r2.dts24
-rw-r--r--arch/arm64/boot/dts/arm/juno.dts24
4 files changed, 369 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi
index dee2386d3b9b..4ea40a476906 100644
--- a/arch/arm64/boot/dts/arm/juno-base.dtsi
+++ b/arch/arm64/boot/dts/arm/juno-base.dtsi
@@ -56,6 +56,303 @@
56 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>; 56 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
57 }; 57 };
58 58
59 /*
60 * Juno TRMs specify the size for these coresight components as 64K.
61 * The actual size is just 4K though 64K is reserved. Access to the
62 * unmapped reserved region results in a DECERR response.
63 */
64 etf@20010000 {
65 compatible = "arm,coresight-tmc", "arm,primecell";
66 reg = <0 0x20010000 0 0x1000>;
67
68 clocks = <&soc_smc50mhz>;
69 clock-names = "apb_pclk";
70 ports {
71 #address-cells = <1>;
72 #size-cells = <0>;
73
74 /* input port */
75 port@0 {
76 reg = <0>;
77 etf_in_port: endpoint {
78 slave-mode;
79 remote-endpoint = <&main_funnel_out_port>;
80 };
81 };
82
83 /* output port */
84 port@1 {
85 reg = <0>;
86 etf_out_port: endpoint {
87 remote-endpoint = <&replicator_in_port0>;
88 };
89 };
90 };
91 };
92
93 tpiu@20030000 {
94 compatible = "arm,coresight-tpiu", "arm,primecell";
95 reg = <0 0x20030000 0 0x1000>;
96
97 clocks = <&soc_smc50mhz>;
98 clock-names = "apb_pclk";
99 port {
100 tpiu_in_port: endpoint {
101 slave-mode;
102 remote-endpoint = <&replicator_out_port0>;
103 };
104 };
105 };
106
107 main-funnel@20040000 {
108 compatible = "arm,coresight-funnel", "arm,primecell";
109 reg = <0 0x20040000 0 0x1000>;
110
111 clocks = <&soc_smc50mhz>;
112 clock-names = "apb_pclk";
113 ports {
114 #address-cells = <1>;
115 #size-cells = <0>;
116
117 port@0 {
118 reg = <0>;
119 main_funnel_out_port: endpoint {
120 remote-endpoint = <&etf_in_port>;
121 };
122 };
123
124 port@1 {
125 reg = <0>;
126 main_funnel_in_port0: endpoint {
127 slave-mode;
128 remote-endpoint = <&cluster0_funnel_out_port>;
129 };
130 };
131
132 port@2 {
133 reg = <1>;
134 main_funnel_in_port1: endpoint {
135 slave-mode;
136 remote-endpoint = <&cluster1_funnel_out_port>;
137 };
138 };
139
140 };
141 };
142
143 etr@20070000 {
144 compatible = "arm,coresight-tmc", "arm,primecell";
145 reg = <0 0x20070000 0 0x1000>;
146
147 clocks = <&soc_smc50mhz>;
148 clock-names = "apb_pclk";
149 port {
150 etr_in_port: endpoint {
151 slave-mode;
152 remote-endpoint = <&replicator_out_port1>;
153 };
154 };
155 };
156
157 etm0: etm@22040000 {
158 compatible = "arm,coresight-etm4x", "arm,primecell";
159 reg = <0 0x22040000 0 0x1000>;
160
161 clocks = <&soc_smc50mhz>;
162 clock-names = "apb_pclk";
163 port {
164 cluster0_etm0_out_port: endpoint {
165 remote-endpoint = <&cluster0_funnel_in_port0>;
166 };
167 };
168 };
169
170 cluster0-funnel@220c0000 {
171 compatible = "arm,coresight-funnel", "arm,primecell";
172 reg = <0 0x220c0000 0 0x1000>;
173
174 clocks = <&soc_smc50mhz>;
175 clock-names = "apb_pclk";
176 ports {
177 #address-cells = <1>;
178 #size-cells = <0>;
179
180 port@0 {
181 reg = <0>;
182 cluster0_funnel_out_port: endpoint {
183 remote-endpoint = <&main_funnel_in_port0>;
184 };
185 };
186
187 port@1 {
188 reg = <0>;
189 cluster0_funnel_in_port0: endpoint {
190 slave-mode;
191 remote-endpoint = <&cluster0_etm0_out_port>;
192 };
193 };
194
195 port@2 {
196 reg = <1>;
197 cluster0_funnel_in_port1: endpoint {
198 slave-mode;
199 remote-endpoint = <&cluster0_etm1_out_port>;
200 };
201 };
202 };
203 };
204
205 etm1: etm@22140000 {
206 compatible = "arm,coresight-etm4x", "arm,primecell";
207 reg = <0 0x22140000 0 0x1000>;
208
209 clocks = <&soc_smc50mhz>;
210 clock-names = "apb_pclk";
211 port {
212 cluster0_etm1_out_port: endpoint {
213 remote-endpoint = <&cluster0_funnel_in_port1>;
214 };
215 };
216 };
217
218 etm2: etm@23040000 {
219 compatible = "arm,coresight-etm4x", "arm,primecell";
220 reg = <0 0x23040000 0 0x1000>;
221
222 clocks = <&soc_smc50mhz>;
223 clock-names = "apb_pclk";
224 port {
225 cluster1_etm0_out_port: endpoint {
226 remote-endpoint = <&cluster1_funnel_in_port0>;
227 };
228 };
229 };
230
231 cluster1-funnel@230c0000 {
232 compatible = "arm,coresight-funnel", "arm,primecell";
233 reg = <0 0x230c0000 0 0x1000>;
234
235 clocks = <&soc_smc50mhz>;
236 clock-names = "apb_pclk";
237 ports {
238 #address-cells = <1>;
239 #size-cells = <0>;
240
241 port@0 {
242 reg = <0>;
243 cluster1_funnel_out_port: endpoint {
244 remote-endpoint = <&main_funnel_in_port1>;
245 };
246 };
247
248 port@1 {
249 reg = <0>;
250 cluster1_funnel_in_port0: endpoint {
251 slave-mode;
252 remote-endpoint = <&cluster1_etm0_out_port>;
253 };
254 };
255
256 port@2 {
257 reg = <1>;
258 cluster1_funnel_in_port1: endpoint {
259 slave-mode;
260 remote-endpoint = <&cluster1_etm1_out_port>;
261 };
262 };
263 port@3 {
264 reg = <2>;
265 cluster1_funnel_in_port2: endpoint {
266 slave-mode;
267 remote-endpoint = <&cluster1_etm2_out_port>;
268 };
269 };
270 port@4 {
271 reg = <3>;
272 cluster1_funnel_in_port3: endpoint {
273 slave-mode;
274 remote-endpoint = <&cluster1_etm3_out_port>;
275 };
276 };
277 };
278 };
279
280 etm3: etm@23140000 {
281 compatible = "arm,coresight-etm4x", "arm,primecell";
282 reg = <0 0x23140000 0 0x1000>;
283
284 clocks = <&soc_smc50mhz>;
285 clock-names = "apb_pclk";
286 port {
287 cluster1_etm1_out_port: endpoint {
288 remote-endpoint = <&cluster1_funnel_in_port1>;
289 };
290 };
291 };
292
293 etm4: etm@23240000 {
294 compatible = "arm,coresight-etm4x", "arm,primecell";
295 reg = <0 0x23240000 0 0x1000>;
296
297 clocks = <&soc_smc50mhz>;
298 clock-names = "apb_pclk";
299 port {
300 cluster1_etm2_out_port: endpoint {
301 remote-endpoint = <&cluster1_funnel_in_port2>;
302 };
303 };
304 };
305
306 etm5: etm@23340000 {
307 compatible = "arm,coresight-etm4x", "arm,primecell";
308 reg = <0 0x23340000 0 0x1000>;
309
310 clocks = <&soc_smc50mhz>;
311 clock-names = "apb_pclk";
312 port {
313 cluster1_etm3_out_port: endpoint {
314 remote-endpoint = <&cluster1_funnel_in_port3>;
315 };
316 };
317 };
318
319 coresight-replicator {
320 /*
321 * Non-configurable replicators don't show up on the
322 * AMBA bus. As such no need to add "arm,primecell".
323 */
324 compatible = "arm,coresight-replicator";
325
326 ports {
327 #address-cells = <1>;
328 #size-cells = <0>;
329
330 /* replicator output ports */
331 port@0 {
332 reg = <0>;
333 replicator_out_port0: endpoint {
334 remote-endpoint = <&tpiu_in_port>;
335 };
336 };
337
338 port@1 {
339 reg = <1>;
340 replicator_out_port1: endpoint {
341 remote-endpoint = <&etr_in_port>;
342 };
343 };
344
345 /* replicator input port */
346 port@2 {
347 reg = <0>;
348 replicator_in_port0: endpoint {
349 slave-mode;
350 remote-endpoint = <&etf_out_port>;
351 };
352 };
353 };
354 };
355
59 sram: sram@2e000000 { 356 sram: sram@2e000000 {
60 compatible = "arm,juno-sram-ns", "mmio-sram"; 357 compatible = "arm,juno-sram-ns", "mmio-sram";
61 reg = <0x0 0x2e000000 0x0 0x8000>; 358 reg = <0x0 0x2e000000 0x0 0x8000>;
diff --git a/arch/arm64/boot/dts/arm/juno-r1.dts b/arch/arm64/boot/dts/arm/juno-r1.dts
index d95d9e7e2dc0..f4f8f54f8b85 100644
--- a/arch/arm64/boot/dts/arm/juno-r1.dts
+++ b/arch/arm64/boot/dts/arm/juno-r1.dts
@@ -181,3 +181,27 @@
181&pcie_ctlr { 181&pcie_ctlr {
182 status = "okay"; 182 status = "okay";
183}; 183};
184
185&etm0 {
186 cpu = <&A57_0>;
187};
188
189&etm1 {
190 cpu = <&A57_1>;
191};
192
193&etm2 {
194 cpu = <&A53_0>;
195};
196
197&etm3 {
198 cpu = <&A53_1>;
199};
200
201&etm4 {
202 cpu = <&A53_2>;
203};
204
205&etm5 {
206 cpu = <&A53_3>;
207};
diff --git a/arch/arm64/boot/dts/arm/juno-r2.dts b/arch/arm64/boot/dts/arm/juno-r2.dts
index 88ecd6182b67..d903e545b64c 100644
--- a/arch/arm64/boot/dts/arm/juno-r2.dts
+++ b/arch/arm64/boot/dts/arm/juno-r2.dts
@@ -181,3 +181,27 @@
181&pcie_ctlr { 181&pcie_ctlr {
182 status = "okay"; 182 status = "okay";
183}; 183};
184
185&etm0 {
186 cpu = <&A72_0>;
187};
188
189&etm1 {
190 cpu = <&A72_1>;
191};
192
193&etm2 {
194 cpu = <&A53_0>;
195};
196
197&etm3 {
198 cpu = <&A53_1>;
199};
200
201&etm4 {
202 cpu = <&A53_2>;
203};
204
205&etm5 {
206 cpu = <&A53_3>;
207};
diff --git a/arch/arm64/boot/dts/arm/juno.dts b/arch/arm64/boot/dts/arm/juno.dts
index dcfcf15a17f5..a7270eff6939 100644
--- a/arch/arm64/boot/dts/arm/juno.dts
+++ b/arch/arm64/boot/dts/arm/juno.dts
@@ -173,3 +173,27 @@
173 173
174 #include "juno-base.dtsi" 174 #include "juno-base.dtsi"
175}; 175};
176
177&etm0 {
178 cpu = <&A57_0>;
179};
180
181&etm1 {
182 cpu = <&A57_1>;
183};
184
185&etm2 {
186 cpu = <&A53_0>;
187};
188
189&etm3 {
190 cpu = <&A53_1>;
191};
192
193&etm4 {
194 cpu = <&A53_2>;
195};
196
197&etm5 {
198 cpu = <&A53_3>;
199};