WIP FPC-III support
[linux/fpc-iii.git] / arch / arm64 / boot / dts / sprd / sc9863a.dtsi
blob8cf4a6575980894fa6a87b319e8b9bb82ed34e51
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Unisoc SC9863A SoC DTS file
4  *
5  * Copyright (C) 2019, Unisoc Inc.
6  */
8 #include <dt-bindings/clock/sprd,sc9863a-clk.h>
9 #include <dt-bindings/interrupt-controller/arm-gic.h>
10 #include "sharkl3.dtsi"
12 / {
13         cpus {
14                 #address-cells = <2>;
15                 #size-cells = <0>;
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                 };
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                 };
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                 };
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                 };
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                 };
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                 };
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                 };
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                 };
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         };
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         };
123         psci {
124                 compatible = "arm,psci-0.2";
125                 method = "smc";
126         };
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         };
136         pmu {
137                 compatible = "arm,armv8-pmuv3";
138                 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         };
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                 };
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                 };
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                 };
181                 mm_clk: clock-controller@60900000 {
182                         compatible = "sprd,sc9863a-mm-clk";
183                         reg = <0 0x60900000 0 0x1000>;
184                         #clock-cells = <1>;
185                 };
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";
193                         out-ports {
194                                 port {
195                                         funnel_soc_out_port: endpoint {
196                                                 remote-endpoint = <&etb_in>;
197                                         };
198                                 };
199                         };
201                         in-ports {
202                                 port {
203                                         funnel_soc_in_port: endpoint {
204                                                 remote-endpoint =
205                                                 <&funnel_ca55_out_port>;
206                                         };
207                                 };
208                         };
209                 };
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";
217                         in-ports {
218                                 port {
219                                         etb_in: endpoint {
220                                                 remote-endpoint =
221                                                 <&funnel_soc_out_port>;
222                                         };
223                                 };
224                         };
225                 };
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";
233                         out-ports {
234                                 port {
235                                         funnel_little_out_port: endpoint {
236                                                 remote-endpoint =
237                                                 <&etf_little_in>;
238                                         };
239                                 };
240                         };
242                         in-ports {
243                                 #address-cells = <1>;
244                                 #size-cells = <0>;
246                                 port@0 {
247                                         reg = <0>;
248                                         funnel_little_in_port0: endpoint {
249                                                 remote-endpoint = <&etm0_out>;
250                                         };
251                                 };
253                                 port@1 {
254                                         reg = <1>;
255                                         funnel_little_in_port1: endpoint {
256                                                 remote-endpoint = <&etm1_out>;
257                                         };
258                                 };
260                                 port@2 {
261                                         reg = <2>;
262                                         funnel_little_in_port2: endpoint {
263                                                 remote-endpoint = <&etm2_out>;
264                                         };
265                                 };
267                                 port@3 {
268                                         reg = <3>;
269                                         funnel_little_in_port3: endpoint {
270                                                 remote-endpoint = <&etm3_out>;
271                                         };
272                                 };
273                         };
274                 };
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";
282                         out-ports {
283                                 port {
284                                         etf_little_out: endpoint {
285                                                 remote-endpoint =
286                                                 <&funnel_ca55_in_port0>;
287                                         };
288                                 };
289                         };
291                         in-port {
292                                 port {
293                                         etf_little_in: endpoint {
294                                                 remote-endpoint =
295                                                 <&funnel_little_out_port>;
296                                         };
297                                 };
298                         };
299                 };
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";
307                         out-ports {
308                                 port {
309                                         etf_big_out: endpoint {
310                                                 remote-endpoint =
311                                                 <&funnel_ca55_in_port1>;
312                                         };
313                                 };
314                         };
316                         in-ports {
317                                 port {
318                                         etf_big_in: endpoint {
319                                                 remote-endpoint =
320                                                 <&funnel_big_out_port>;
321                                         };
322                                 };
323                         };
324                 };
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";
332                         out-ports {
333                                 port {
334                                         funnel_ca55_out_port: endpoint {
335                                                 remote-endpoint =
336                                                 <&funnel_soc_in_port>;
337                                         };
338                                 };
339                         };
341                         in-ports {
342                                 #address-cells = <1>;
343                                 #size-cells = <0>;
345                                 port@0 {
346                                         reg = <0>;
347                                         funnel_ca55_in_port0: endpoint {
348                                                 remote-endpoint =
349                                                 <&etf_little_out>;
350                                         };
351                                 };
353                                 port@1 {
354                                         reg = <1>;
355                                         funnel_ca55_in_port1: endpoint {
356                                                 remote-endpoint =
357                                                 <&etf_big_out>;
358                                         };
359                                 };
360                         };
361                 };
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";
369                         out-ports {
370                                 port {
371                                         funnel_big_out_port: endpoint {
372                                                 remote-endpoint =
373                                                 <&etf_big_in>;
374                                         };
375                                 };
376                         };
378                         in-ports {
379                                 #address-cells = <1>;
380                                 #size-cells = <0>;
382                                 port@0 {
383                                         reg = <0>;
384                                         funnel_big_in_port0: endpoint {
385                                                 remote-endpoint = <&etm4_out>;
386                                         };
387                                 };
389                                 port@1 {
390                                         reg = <1>;
391                                         funnel_big_in_port1: endpoint {
392                                                 remote-endpoint = <&etm5_out>;
393                                         };
394                                 };
396                                 port@2 {
397                                         reg = <2>;
398                                         funnel_big_in_port2: endpoint {
399                                                 remote-endpoint = <&etm6_out>;
400                                         };
401                                 };
403                                 port@3 {
404                                         reg = <3>;
405                                         funnel_big_in_port3: endpoint {
406                                                 remote-endpoint = <&etm7_out>;
407                                         };
408                                 };
409                         };
410                 };
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";
419                         out-ports {
420                                 port {
421                                         etm0_out: endpoint {
422                                                 remote-endpoint =
423                                                 <&funnel_little_in_port0>;
424                                         };
425                                 };
426                         };
427                 };
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";
436                         out-ports {
437                                 port {
438                                         etm1_out: endpoint {
439                                                 remote-endpoint =
440                                                 <&funnel_little_in_port1>;
441                                         };
442                                 };
443                         };
444                 };
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";
453                         out-ports {
454                                 port {
455                                         etm2_out: endpoint {
456                                                 remote-endpoint =
457                                                 <&funnel_little_in_port2>;
458                                         };
459                                 };
460                         };
461                 };
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";
470                         out-ports {
471                                 port {
472                                         etm3_out: endpoint {
473                                                 remote-endpoint =
474                                                 <&funnel_little_in_port3>;
475                                         };
476                                 };
477                         };
478                 };
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";
487                         out-ports {
488                                 port {
489                                         etm4_out: endpoint {
490                                                 remote-endpoint =
491                                                 <&funnel_big_in_port0>;
492                                         };
493                                 };
494                         };
495                 };
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";
504                         out-ports {
505                                 port {
506                                         etm5_out: endpoint {
507                                                 remote-endpoint =
508                                                 <&funnel_big_in_port1>;
509                                         };
510                                 };
511                         };
512                 };
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";
521                         out-ports {
522                                 port {
523                                         etm6_out: endpoint {
524                                                 remote-endpoint =
525                                                 <&funnel_big_in_port2>;
526                                         };
527                                 };
528                         };
529                 };
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";
538                         out-ports {
539                                 port {
540                                         etm7_out: endpoint {
541                                                 remote-endpoint =
542                                                 <&funnel_big_in_port3>;
543                                         };
544                                 };
545                         };
546                 };
548                 ap-ahb {
549                         compatible = "simple-bus";
550                         #address-cells = <2>;
551                         #size-cells = <2>;
552                         ranges;
554                         sdio0: sdio@20300000 {
555                                 compatible  = "sprd,sdhci-r11";
556                                 reg = <0 0x20300000 0 0x1000>;
557                                 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
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>;
565                                 bus-width = <4>;
566                                 no-sdio;
567                                 no-mmc;
568                         };
570                         sdio3: sdio@20600000 {
571                                 compatible  = "sprd,sdhci-r11";
572                                 reg = <0 0x20600000 0 0x1000>;
573                                 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
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>;
581                                 bus-width = <8>;
582                                 non-removable;
583                                 no-sdio;
584                                 no-sd;
585                                 cap-mmc-hw-reset;
586                         };
587                 };
588         };