blob: 53e5b77d70b5239f5dda5a055edb680ad66834f3 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Unisoc SC9863A SoC DTS file
4 *
5 * Copyright (C) 2019, Unisoc Inc.
6 */
7
8#include <dt-bindings/clock/sprd,sc9863a-clk.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include "sharkl3.dtsi"
11
12/ {
13 cpus {
14 #address-cells = <2>;
15 #size-cells = <0>;
16
17 cpu-map {
18 cluster0 {
19 core0 {
20 cpu = <&CPU0>;
21 };
22 core1 {
23 cpu = <&CPU1>;
24 };
25 core2 {
26 cpu = <&CPU2>;
27 };
28 core3 {
29 cpu = <&CPU3>;
30 };
31 core4 {
32 cpu = <&CPU4>;
33 };
34 core5 {
35 cpu = <&CPU5>;
36 };
37 core6 {
38 cpu = <&CPU6>;
39 };
40 core7 {
41 cpu = <&CPU7>;
42 };
43 };
44 };
45
46 CPU0: cpu@0 {
47 device_type = "cpu";
48 compatible = "arm,cortex-a55";
49 reg = <0x0 0x0>;
50 enable-method = "psci";
51 cpu-idle-states = <&CORE_PD>;
52 };
53
54 CPU1: cpu@100 {
55 device_type = "cpu";
56 compatible = "arm,cortex-a55";
57 reg = <0x0 0x100>;
58 enable-method = "psci";
59 cpu-idle-states = <&CORE_PD>;
60 };
61
62 CPU2: cpu@200 {
63 device_type = "cpu";
64 compatible = "arm,cortex-a55";
65 reg = <0x0 0x200>;
66 enable-method = "psci";
67 cpu-idle-states = <&CORE_PD>;
68 };
69
70 CPU3: cpu@300 {
71 device_type = "cpu";
72 compatible = "arm,cortex-a55";
73 reg = <0x0 0x300>;
74 enable-method = "psci";
75 cpu-idle-states = <&CORE_PD>;
76 };
77
78 CPU4: cpu@400 {
79 device_type = "cpu";
80 compatible = "arm,cortex-a55";
81 reg = <0x0 0x400>;
82 enable-method = "psci";
83 cpu-idle-states = <&CORE_PD>;
84 };
85
86 CPU5: cpu@500 {
87 device_type = "cpu";
88 compatible = "arm,cortex-a55";
89 reg = <0x0 0x500>;
90 enable-method = "psci";
91 cpu-idle-states = <&CORE_PD>;
92 };
93
94 CPU6: cpu@600 {
95 device_type = "cpu";
96 compatible = "arm,cortex-a55";
97 reg = <0x0 0x600>;
98 enable-method = "psci";
99 cpu-idle-states = <&CORE_PD>;
100 };
101
102 CPU7: cpu@700 {
103 device_type = "cpu";
104 compatible = "arm,cortex-a55";
105 reg = <0x0 0x700>;
106 enable-method = "psci";
107 cpu-idle-states = <&CORE_PD>;
108 };
109 };
110
111 idle-states {
112 entry-method = "psci";
113 CORE_PD: core-pd {
114 compatible = "arm,idle-state";
115 entry-latency-us = <4000>;
116 exit-latency-us = <4000>;
117 min-residency-us = <10000>;
118 local-timer-stop;
119 arm,psci-suspend-param = <0x00010000>;
120 };
121 };
122
123 psci {
124 compatible = "arm,psci-0.2";
125 method = "smc";
126 };
127
128 timer {
129 compatible = "arm,armv8-timer";
130 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */
131 <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */
132 <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */
133 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */
134 };
135
136 pmu {
Tom Rini762f85b2024-07-20 11:15:10 -0600137 compatible = "arm,cortex-a55-pmu";
Tom Rini53633a82024-02-29 12:33:36 -0500138 interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
139 <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
140 <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
141 <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
142 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
143 <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
144 <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
145 <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
146 };
147
148 soc {
149 gic: interrupt-controller@14000000 {
150 compatible = "arm,gic-v3";
151 #interrupt-cells = <3>;
152 #address-cells = <2>;
153 #size-cells = <2>;
154 ranges;
155 redistributor-stride = <0x0 0x20000>; /* 128KB stride */
156 #redistributor-regions = <1>;
157 interrupt-controller;
158 reg = <0x0 0x14000000 0 0x20000>, /* GICD */
159 <0x0 0x14040000 0 0x100000>; /* GICR */
160 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
161 };
162
163 ap_clk: clock-controller@21500000 {
164 compatible = "sprd,sc9863a-ap-clk";
165 reg = <0 0x21500000 0 0x1000>;
166 clocks = <&ext_32k>, <&ext_26m>;
167 clock-names = "ext-32k", "ext-26m";
168 #clock-cells = <1>;
169 };
170
171 aon_clk: clock-controller@402d0000 {
172 compatible = "sprd,sc9863a-aon-clk";
173 reg = <0 0x402d0000 0 0x1000>;
174 clocks = <&ext_26m>, <&rco_100m>,
175 <&ext_32k>, <&ext_4m>;
176 clock-names = "ext-26m", "rco-100m",
177 "ext-32k", "ext-4m";
178 #clock-cells = <1>;
179 };
180
181 mm_clk: clock-controller@60900000 {
182 compatible = "sprd,sc9863a-mm-clk";
183 reg = <0 0x60900000 0 0x1000>;
184 #clock-cells = <1>;
185 };
186
187 funnel@10001000 {
188 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
189 reg = <0 0x10001000 0 0x1000>;
190 clocks = <&ext_26m>;
191 clock-names = "apb_pclk";
192
193 out-ports {
194 port {
195 funnel_soc_out_port: endpoint {
196 remote-endpoint = <&etb_in>;
197 };
198 };
199 };
200
201 in-ports {
202 port {
203 funnel_soc_in_port: endpoint {
204 remote-endpoint =
205 <&funnel_ca55_out_port>;
206 };
207 };
208 };
209 };
210
211 etb@10003000 {
212 compatible = "arm,coresight-tmc", "arm,primecell";
213 reg = <0 0x10003000 0 0x1000>;
214 clocks = <&ext_26m>;
215 clock-names = "apb_pclk";
216
217 in-ports {
218 port {
219 etb_in: endpoint {
220 remote-endpoint =
221 <&funnel_soc_out_port>;
222 };
223 };
224 };
225 };
226
227 funnel@12001000 {
228 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
229 reg = <0 0x12001000 0 0x1000>;
230 clocks = <&ext_26m>;
231 clock-names = "apb_pclk";
232
233 out-ports {
234 port {
235 funnel_little_out_port: endpoint {
236 remote-endpoint =
237 <&etf_little_in>;
238 };
239 };
240 };
241
242 in-ports {
243 #address-cells = <1>;
244 #size-cells = <0>;
245
246 port@0 {
247 reg = <0>;
248 funnel_little_in_port0: endpoint {
249 remote-endpoint = <&etm0_out>;
250 };
251 };
252
253 port@1 {
254 reg = <1>;
255 funnel_little_in_port1: endpoint {
256 remote-endpoint = <&etm1_out>;
257 };
258 };
259
260 port@2 {
261 reg = <2>;
262 funnel_little_in_port2: endpoint {
263 remote-endpoint = <&etm2_out>;
264 };
265 };
266
267 port@3 {
268 reg = <3>;
269 funnel_little_in_port3: endpoint {
270 remote-endpoint = <&etm3_out>;
271 };
272 };
273 };
274 };
275
276 etf@12002000 {
277 compatible = "arm,coresight-tmc", "arm,primecell";
278 reg = <0 0x12002000 0 0x1000>;
279 clocks = <&ext_26m>;
280 clock-names = "apb_pclk";
281
282 out-ports {
283 port {
284 etf_little_out: endpoint {
285 remote-endpoint =
286 <&funnel_ca55_in_port0>;
287 };
288 };
289 };
290
291 in-port {
292 port {
293 etf_little_in: endpoint {
294 remote-endpoint =
295 <&funnel_little_out_port>;
296 };
297 };
298 };
299 };
300
301 etf@12003000 {
302 compatible = "arm,coresight-tmc", "arm,primecell";
303 reg = <0 0x12003000 0 0x1000>;
304 clocks = <&ext_26m>;
305 clock-names = "apb_pclk";
306
307 out-ports {
308 port {
309 etf_big_out: endpoint {
310 remote-endpoint =
311 <&funnel_ca55_in_port1>;
312 };
313 };
314 };
315
316 in-ports {
317 port {
318 etf_big_in: endpoint {
319 remote-endpoint =
320 <&funnel_big_out_port>;
321 };
322 };
323 };
324 };
325
326 funnel@12004000 {
327 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
328 reg = <0 0x12004000 0 0x1000>;
329 clocks = <&ext_26m>;
330 clock-names = "apb_pclk";
331
332 out-ports {
333 port {
334 funnel_ca55_out_port: endpoint {
335 remote-endpoint =
336 <&funnel_soc_in_port>;
337 };
338 };
339 };
340
341 in-ports {
342 #address-cells = <1>;
343 #size-cells = <0>;
344
345 port@0 {
346 reg = <0>;
347 funnel_ca55_in_port0: endpoint {
348 remote-endpoint =
349 <&etf_little_out>;
350 };
351 };
352
353 port@1 {
354 reg = <1>;
355 funnel_ca55_in_port1: endpoint {
356 remote-endpoint =
357 <&etf_big_out>;
358 };
359 };
360 };
361 };
362
363 funnel@12005000 {
364 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
365 reg = <0 0x12005000 0 0x1000>;
366 clocks = <&ext_26m>;
367 clock-names = "apb_pclk";
368
369 out-ports {
370 port {
371 funnel_big_out_port: endpoint {
372 remote-endpoint =
373 <&etf_big_in>;
374 };
375 };
376 };
377
378 in-ports {
379 #address-cells = <1>;
380 #size-cells = <0>;
381
382 port@0 {
383 reg = <0>;
384 funnel_big_in_port0: endpoint {
385 remote-endpoint = <&etm4_out>;
386 };
387 };
388
389 port@1 {
390 reg = <1>;
391 funnel_big_in_port1: endpoint {
392 remote-endpoint = <&etm5_out>;
393 };
394 };
395
396 port@2 {
397 reg = <2>;
398 funnel_big_in_port2: endpoint {
399 remote-endpoint = <&etm6_out>;
400 };
401 };
402
403 port@3 {
404 reg = <3>;
405 funnel_big_in_port3: endpoint {
406 remote-endpoint = <&etm7_out>;
407 };
408 };
409 };
410 };
411
412 etm@13040000 {
413 compatible = "arm,coresight-etm4x", "arm,primecell";
414 reg = <0 0x13040000 0 0x1000>;
415 cpu = <&CPU0>;
416 clocks = <&ext_26m>;
417 clock-names = "apb_pclk";
418
419 out-ports {
420 port {
421 etm0_out: endpoint {
422 remote-endpoint =
423 <&funnel_little_in_port0>;
424 };
425 };
426 };
427 };
428
429 etm@13140000 {
430 compatible = "arm,coresight-etm4x", "arm,primecell";
431 reg = <0 0x13140000 0 0x1000>;
432 cpu = <&CPU1>;
433 clocks = <&ext_26m>;
434 clock-names = "apb_pclk";
435
436 out-ports {
437 port {
438 etm1_out: endpoint {
439 remote-endpoint =
440 <&funnel_little_in_port1>;
441 };
442 };
443 };
444 };
445
446 etm@13240000 {
447 compatible = "arm,coresight-etm4x", "arm,primecell";
448 reg = <0 0x13240000 0 0x1000>;
449 cpu = <&CPU2>;
450 clocks = <&ext_26m>;
451 clock-names = "apb_pclk";
452
453 out-ports {
454 port {
455 etm2_out: endpoint {
456 remote-endpoint =
457 <&funnel_little_in_port2>;
458 };
459 };
460 };
461 };
462
463 etm@13340000 {
464 compatible = "arm,coresight-etm4x", "arm,primecell";
465 reg = <0 0x13340000 0 0x1000>;
466 cpu = <&CPU3>;
467 clocks = <&ext_26m>;
468 clock-names = "apb_pclk";
469
470 out-ports {
471 port {
472 etm3_out: endpoint {
473 remote-endpoint =
474 <&funnel_little_in_port3>;
475 };
476 };
477 };
478 };
479
480 etm@13440000 {
481 compatible = "arm,coresight-etm4x", "arm,primecell";
482 reg = <0 0x13440000 0 0x1000>;
483 cpu = <&CPU4>;
484 clocks = <&ext_26m>;
485 clock-names = "apb_pclk";
486
487 out-ports {
488 port {
489 etm4_out: endpoint {
490 remote-endpoint =
491 <&funnel_big_in_port0>;
492 };
493 };
494 };
495 };
496
497 etm@13540000 {
498 compatible = "arm,coresight-etm4x", "arm,primecell";
499 reg = <0 0x13540000 0 0x1000>;
500 cpu = <&CPU5>;
501 clocks = <&ext_26m>;
502 clock-names = "apb_pclk";
503
504 out-ports {
505 port {
506 etm5_out: endpoint {
507 remote-endpoint =
508 <&funnel_big_in_port1>;
509 };
510 };
511 };
512 };
513
514 etm@13640000 {
515 compatible = "arm,coresight-etm4x", "arm,primecell";
516 reg = <0 0x13640000 0 0x1000>;
517 cpu = <&CPU6>;
518 clocks = <&ext_26m>;
519 clock-names = "apb_pclk";
520
521 out-ports {
522 port {
523 etm6_out: endpoint {
524 remote-endpoint =
525 <&funnel_big_in_port2>;
526 };
527 };
528 };
529 };
530
531 etm@13740000 {
532 compatible = "arm,coresight-etm4x", "arm,primecell";
533 reg = <0 0x13740000 0 0x1000>;
534 cpu = <&CPU7>;
535 clocks = <&ext_26m>;
536 clock-names = "apb_pclk";
537
538 out-ports {
539 port {
540 etm7_out: endpoint {
541 remote-endpoint =
542 <&funnel_big_in_port3>;
543 };
544 };
545 };
546 };
547
548 ap-ahb {
549 compatible = "simple-bus";
550 #address-cells = <2>;
551 #size-cells = <2>;
552 ranges;
553
554 sdio0: sdio@20300000 {
555 compatible = "sprd,sdhci-r11";
556 reg = <0 0x20300000 0 0x1000>;
557 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
558
559 clock-names = "sdio", "enable";
560 clocks = <&aon_clk CLK_SDIO0_2X>,
561 <&apahb_gate CLK_SDIO0_EB>;
562 assigned-clocks = <&aon_clk CLK_SDIO0_2X>;
563 assigned-clock-parents = <&rpll CLK_RPLL_390M>;
564
565 bus-width = <4>;
566 no-sdio;
567 no-mmc;
568 };
569
570 sdio3: sdio@20600000 {
571 compatible = "sprd,sdhci-r11";
572 reg = <0 0x20600000 0 0x1000>;
573 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
574
575 clock-names = "sdio", "enable";
576 clocks = <&aon_clk CLK_EMMC_2X>,
577 <&apahb_gate CLK_EMMC_EB>;
578 assigned-clocks = <&aon_clk CLK_EMMC_2X>;
579 assigned-clock-parents = <&rpll CLK_RPLL_390M>;
580
581 bus-width = <8>;
582 non-removable;
583 no-sdio;
584 no-sd;
585 cap-mmc-hw-reset;
586 };
587 };
588 };
589};