diff options
author | Orson Zhai | 2017-04-20 22:47:20 -0500 |
---|---|---|
committer | Arnd Bergmann | 2017-04-27 14:56:14 -0500 |
commit | 3c0e3abd5ee59acbcbd5d8fc624eaf63f6e7b53c (patch) | |
tree | eecdd51fc2c77e1495b844c0e717cf589fe613e2 | |
parent | 052bc8fc8f6de1d015ed7714a77ad65c9d9b2e4f (diff) | |
download | kernel-3c0e3abd5ee59acbcbd5d8fc624eaf63f6e7b53c.tar.gz kernel-3c0e3abd5ee59acbcbd5d8fc624eaf63f6e7b53c.tar.xz kernel-3c0e3abd5ee59acbcbd5d8fc624eaf63f6e7b53c.zip |
arm64: dts: Add basic DT to support Spreadtrum's SP9860G
SC9860G is a 8 cores of A53 SoC with 4G LTE support SoC from Spreadtrum.
According to regular hierarchy of sprd dts, whale2.dtsi contains SoC
peripherals IP nodes, sc9860.dtsi contains stuff related to ARM core stuff
and sp9860g dts is for the board level.
Signed-off-by: Orson Zhai <orson.zhai@spreadtrum.com>
Signed-off-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | arch/arm64/boot/dts/sprd/Makefile | 3 | ||||
-rw-r--r-- | arch/arm64/boot/dts/sprd/sc9860.dtsi | 569 | ||||
-rw-r--r-- | arch/arm64/boot/dts/sprd/sp9860g-1h10.dts | 56 | ||||
-rw-r--r-- | arch/arm64/boot/dts/sprd/whale2.dtsi | 71 |
4 files changed, 698 insertions, 1 deletions
diff --git a/arch/arm64/boot/dts/sprd/Makefile b/arch/arm64/boot/dts/sprd/Makefile index b658c5e09b15..f0535e6eaaaa 100644 --- a/arch/arm64/boot/dts/sprd/Makefile +++ b/arch/arm64/boot/dts/sprd/Makefile | |||
@@ -1,4 +1,5 @@ | |||
1 | dtb-$(CONFIG_ARCH_SPRD) += sc9836-openphone.dtb | 1 | dtb-$(CONFIG_ARCH_SPRD) += sc9836-openphone.dtb \ |
2 | sp9860g-1h10.dtb | ||
2 | 3 | ||
3 | always := $(dtb-y) | 4 | always := $(dtb-y) |
4 | subdir-y := $(dts-dirs) | 5 | subdir-y := $(dts-dirs) |
diff --git a/arch/arm64/boot/dts/sprd/sc9860.dtsi b/arch/arm64/boot/dts/sprd/sc9860.dtsi new file mode 100644 index 000000000000..7b7d8cedacda --- /dev/null +++ b/arch/arm64/boot/dts/sprd/sc9860.dtsi | |||
@@ -0,0 +1,569 @@ | |||
1 | /* | ||
2 | * Spreadtrum SC9860 SoC | ||
3 | * | ||
4 | * Copyright (C) 2016, Spreadtrum Communications Inc. | ||
5 | * | ||
6 | * SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
7 | */ | ||
8 | |||
9 | #include <dt-bindings/interrupt-controller/arm-gic.h> | ||
10 | #include "whale2.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 | }; | ||
32 | |||
33 | cluster1 { | ||
34 | core0 { | ||
35 | cpu = <&CPU4>; | ||
36 | }; | ||
37 | core1 { | ||
38 | cpu = <&CPU5>; | ||
39 | }; | ||
40 | core2 { | ||
41 | cpu = <&CPU6>; | ||
42 | }; | ||
43 | core3 { | ||
44 | cpu = <&CPU7>; | ||
45 | }; | ||
46 | }; | ||
47 | }; | ||
48 | |||
49 | CPU0: cpu@530000 { | ||
50 | device_type = "cpu"; | ||
51 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
52 | reg = <0x0 0x530000>; | ||
53 | enable-method = "psci"; | ||
54 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
55 | }; | ||
56 | |||
57 | CPU1: cpu@530001 { | ||
58 | device_type = "cpu"; | ||
59 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
60 | reg = <0x0 0x530001>; | ||
61 | enable-method = "psci"; | ||
62 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
63 | }; | ||
64 | |||
65 | CPU2: cpu@530002 { | ||
66 | device_type = "cpu"; | ||
67 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
68 | reg = <0x0 0x530002>; | ||
69 | enable-method = "psci"; | ||
70 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
71 | }; | ||
72 | |||
73 | CPU3: cpu@530003 { | ||
74 | device_type = "cpu"; | ||
75 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
76 | reg = <0x0 0x530003>; | ||
77 | enable-method = "psci"; | ||
78 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
79 | }; | ||
80 | |||
81 | CPU4: cpu@530100 { | ||
82 | device_type = "cpu"; | ||
83 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
84 | reg = <0x0 0x530100>; | ||
85 | enable-method = "psci"; | ||
86 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
87 | }; | ||
88 | |||
89 | CPU5: cpu@530101 { | ||
90 | device_type = "cpu"; | ||
91 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
92 | reg = <0x0 0x530101>; | ||
93 | enable-method = "psci"; | ||
94 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
95 | }; | ||
96 | |||
97 | CPU6: cpu@530102 { | ||
98 | device_type = "cpu"; | ||
99 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
100 | reg = <0x0 0x530102>; | ||
101 | enable-method = "psci"; | ||
102 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
103 | }; | ||
104 | |||
105 | CPU7: cpu@530103 { | ||
106 | device_type = "cpu"; | ||
107 | compatible = "arm,cortex-a53", "arm,armv8"; | ||
108 | reg = <0x0 0x530103>; | ||
109 | enable-method = "psci"; | ||
110 | cpu-idle-states = <&CORE_PD &CLUSTER_PD>; | ||
111 | }; | ||
112 | }; | ||
113 | |||
114 | idle-states{ | ||
115 | entry-method = "arm,psci"; | ||
116 | |||
117 | CORE_PD: core_pd { | ||
118 | compatible = "arm,idle-state"; | ||
119 | entry-latency-us = <1000>; | ||
120 | exit-latency-us = <700>; | ||
121 | min-residency-us = <2500>; | ||
122 | local-timer-stop; | ||
123 | arm,psci-suspend-param = <0x00010002>; | ||
124 | }; | ||
125 | |||
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>; | ||
131 | local-timer-stop; | ||
132 | arm,psci-suspend-param = <0x01010003>; | ||
133 | }; | ||
134 | }; | ||
135 | |||
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)>; | ||
146 | }; | ||
147 | |||
148 | psci { | ||
149 | compatible = "arm,psci-0.2"; | ||
150 | method = "smc"; | ||
151 | }; | ||
152 | |||
153 | timer { | ||
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)>; | ||
163 | }; | ||
164 | |||
165 | pmu { | ||
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>, | ||
176 | <&CPU1>, | ||
177 | <&CPU2>, | ||
178 | <&CPU3>, | ||
179 | <&CPU4>, | ||
180 | <&CPU5>, | ||
181 | <&CPU6>, | ||
182 | <&CPU7>; | ||
183 | }; | ||
184 | |||
185 | soc { | ||
186 | funnel@10001000 { /* SoC Funnel */ | ||
187 | compatible = "arm,coresight-funnel", "arm,primecell"; | ||
188 | reg = <0 0x10001000 0 0x1000>; | ||
189 | clocks = <&ext_26m>; | ||
190 | clock-names = "apb_pclk"; | ||
191 | ports { | ||
192 | #address-cells = <1>; | ||
193 | #size-cells = <0>; | ||
194 | |||
195 | port@0 { | ||
196 | reg = <0>; | ||
197 | soc_funnel_out_port: endpoint { | ||
198 | remote-endpoint = <&etb_in>; | ||
199 | }; | ||
200 | }; | ||
201 | |||
202 | port@1 { | ||
203 | reg = <0>; | ||
204 | soc_funnel_in_port0: endpoint { | ||
205 | slave-mode; | ||
206 | remote-endpoint = | ||
207 | <&main_funnel_out_port>; | ||
208 | }; | ||
209 | }; | ||
210 | |||
211 | port@2 { | ||
212 | reg = <4>; | ||
213 | soc_funnel_in_port1: endpoint { | ||
214 | slave-mode; | ||
215 | remote-endpioint = | ||
216 | <&stm_out_port>; | ||
217 | }; | ||
218 | }; | ||
219 | }; | ||
220 | }; | ||
221 | |||
222 | etb@10003000 { | ||
223 | compatible = "arm,coresight-tmc", "arm,primecell"; | ||
224 | reg = <0 0x10003000 0 0x1000>; | ||
225 | clocks = <&ext_26m>; | ||
226 | clock-names = "apb_pclk"; | ||
227 | port { | ||
228 | etb_in: endpoint { | ||
229 | slave-mode; | ||
230 | remote-endpoint = | ||
231 | <&soc_funnel_out_port>; | ||
232 | }; | ||
233 | }; | ||
234 | }; | ||
235 | |||
236 | stm@10006000 { | ||
237 | compatible = "arm,coresight-stm", "arm,primecell"; | ||
238 | reg = <0 0x10006000 0 0x1000>, | ||
239 | <0 0x01000000 0 0x180000>; | ||
240 | reg-names = "stm-base", "stm-stimulus-base"; | ||
241 | clocks = <&ext_26m>; | ||
242 | clock-names = "apb_pclk"; | ||
243 | port { | ||
244 | stm_out_port: endpoint { | ||
245 | remote-endpoint = | ||
246 | <&soc_funnel_in_port1>; | ||
247 | }; | ||
248 | }; | ||
249 | }; | ||
250 | |||
251 | funnel@11001000 { /* Cluster0 Funnel */ | ||
252 | compatible = "arm,coresight-funnel", "arm,primecell"; | ||
253 | reg = <0 0x11001000 0 0x1000>; | ||
254 | clocks = <&ext_26m>; | ||
255 | clock-names = "apb_pclk"; | ||
256 | ports { | ||
257 | #address-cells = <1>; | ||
258 | #size-cells = <0>; | ||
259 | |||
260 | port@0 { | ||
261 | reg = <0>; | ||
262 | cluster0_funnel_out_port: endpoint { | ||
263 | remote-endpoint = | ||
264 | <&cluster0_etf_in>; | ||
265 | }; | ||
266 | }; | ||
267 | |||
268 | port@1 { | ||
269 | reg = <0>; | ||
270 | cluster0_funnel_in_port0: endpoint { | ||
271 | slave-mode; | ||
272 | remote-endpoint = <&etm0_out>; | ||
273 | }; | ||
274 | }; | ||
275 | |||
276 | port@2 { | ||
277 | reg = <1>; | ||
278 | cluster0_funnel_in_port1: endpoint { | ||
279 | slave-mode; | ||
280 | remote-endpoint = <&etm1_out>; | ||
281 | }; | ||
282 | }; | ||
283 | |||
284 | port@3 { | ||
285 | reg = <2>; | ||
286 | cluster0_funnel_in_port2: endpoint { | ||
287 | slave-mode; | ||
288 | remote-endpoint = <&etm2_out>; | ||
289 | }; | ||
290 | }; | ||
291 | |||
292 | port@4 { | ||
293 | reg = <4>; | ||
294 | cluster0_funnel_in_port3: endpoint { | ||
295 | slave-mode; | ||
296 | remote-endpoint = <&etm3_out>; | ||
297 | }; | ||
298 | }; | ||
299 | }; | ||
300 | }; | ||
301 | |||
302 | funnel@11002000 { /* Cluster1 Funnel */ | ||
303 | compatible = "arm,coresight-funnel", "arm,primecell"; | ||
304 | reg = <0 0x11002000 0 0x1000>; | ||
305 | clocks = <&ext_26m>; | ||
306 | clock-names = "apb_pclk"; | ||
307 | ports { | ||
308 | #address-cells = <1>; | ||
309 | #size-cells = <0>; | ||
310 | |||
311 | port@0 { | ||
312 | reg = <0>; | ||
313 | cluster1_funnel_out_port: endpoint { | ||
314 | remote-endpoint = | ||
315 | <&cluster1_etf_in>; | ||
316 | }; | ||
317 | }; | ||
318 | |||
319 | port@1 { | ||
320 | reg = <0>; | ||
321 | cluster1_funnel_in_port0: endpoint { | ||
322 | slave-mode; | ||
323 | remote-endpoint = <&etm4_out>; | ||
324 | }; | ||
325 | }; | ||
326 | |||
327 | port@2 { | ||
328 | reg = <1>; | ||
329 | cluster1_funnel_in_port1: endpoint { | ||
330 | slave-mode; | ||
331 | remote-endpoint = <&etm5_out>; | ||
332 | }; | ||
333 | }; | ||
334 | |||
335 | port@3 { | ||
336 | reg = <2>; | ||
337 | cluster1_funnel_in_port2: endpoint { | ||
338 | slave-mode; | ||
339 | remote-endpoint = <&etm6_out>; | ||
340 | }; | ||
341 | }; | ||
342 | |||
343 | port@4 { | ||
344 | reg = <3>; | ||
345 | cluster1_funnel_in_port3: endpoint { | ||
346 | slave-mode; | ||
347 | remote-endpoint = <&etm7_out>; | ||
348 | }; | ||
349 | }; | ||
350 | }; | ||
351 | }; | ||
352 | |||
353 | etf@11003000 { /* ETF on Cluster0 */ | ||
354 | compatible = "arm,coresight-tmc", "arm,primecell"; | ||
355 | reg = <0 0x11003000 0 0x1000>; | ||
356 | clocks = <&ext_26m>; | ||
357 | clock-names = "apb_pclk"; | ||
358 | |||
359 | ports { | ||
360 | #address-cells = <1>; | ||
361 | #size-cells = <0>; | ||
362 | |||
363 | port@0 { | ||
364 | reg = <0>; | ||
365 | cluster0_etf_out: endpoint { | ||
366 | remote-endpoint = | ||
367 | <&main_funnel_in_port0>; | ||
368 | }; | ||
369 | }; | ||
370 | |||
371 | port@1 { | ||
372 | reg = <0>; | ||
373 | cluster0_etf_in: endpoint { | ||
374 | slave-mode; | ||
375 | remote-endpoint = | ||
376 | <&cluster0_funnel_out_port>; | ||
377 | }; | ||
378 | }; | ||
379 | }; | ||
380 | }; | ||
381 | |||
382 | etf@11004000 { /* ETF on Cluster1 */ | ||
383 | compatible = "arm,coresight-tmc", "arm,primecell"; | ||
384 | reg = <0 0x11004000 0 0x1000>; | ||
385 | clocks = <&ext_26m>; | ||
386 | clock-names = "apb_pclk"; | ||
387 | |||
388 | ports { | ||
389 | #address-cells = <1>; | ||
390 | #size-cells = <0>; | ||
391 | |||
392 | port@0 { | ||
393 | reg = <0>; | ||
394 | cluster1_etf_out: endpoint { | ||
395 | remote-endpoint = | ||
396 | <&main_funnel_in_port1>; | ||
397 | }; | ||
398 | }; | ||
399 | |||
400 | port@1 { | ||
401 | reg = <0>; | ||
402 | cluster1_etf_in: endpoint { | ||
403 | slave-mode; | ||
404 | remote-endpoint = | ||
405 | <&cluster1_funnel_out_port>; | ||
406 | }; | ||
407 | }; | ||
408 | }; | ||
409 | }; | ||
410 | |||
411 | funnel@11005000 { /* Main Funnel */ | ||
412 | compatible = "arm,coresight-funnel", "arm,primecell"; | ||
413 | reg = <0 0x11005000 0 0x1000>; | ||
414 | clocks = <&ext_26m>; | ||
415 | clock-names = "apb_pclk"; | ||
416 | |||
417 | ports { | ||
418 | #address-cells = <1>; | ||
419 | #size-cells = <0>; | ||
420 | |||
421 | port@0 { | ||
422 | reg = <0>; | ||
423 | main_funnel_out_port: endpoint { | ||
424 | remote-endpoint = | ||
425 | <&soc_funnel_in_port0>; | ||
426 | }; | ||
427 | }; | ||
428 | |||
429 | port@1 { | ||
430 | reg = <0>; | ||
431 | main_funnel_in_port0: endpoint { | ||
432 | slave-mode; | ||
433 | remote-endpoint = | ||
434 | <&cluster0_etf_out>; | ||
435 | }; | ||
436 | }; | ||
437 | |||
438 | port@2 { | ||
439 | reg = <1>; | ||
440 | main_funnel_in_port1: endpoint { | ||
441 | slave-mode; | ||
442 | remote-endpoint = | ||
443 | <&cluster1_etf_out>; | ||
444 | }; | ||
445 | }; | ||
446 | }; | ||
447 | }; | ||
448 | |||
449 | etm@11440000 { | ||
450 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
451 | reg = <0 0x11440000 0 0x1000>; | ||
452 | cpu = <&CPU0>; | ||
453 | clocks = <&ext_26m>; | ||
454 | clock-names = "apb_pclk"; | ||
455 | |||
456 | port { | ||
457 | etm0_out: endpoint { | ||
458 | remote-endpoint = | ||
459 | <&cluster0_funnel_in_port0>; | ||
460 | }; | ||
461 | }; | ||
462 | }; | ||
463 | |||
464 | etm@11540000 { | ||
465 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
466 | reg = <0 0x11540000 0 0x1000>; | ||
467 | cpu = <&CPU1>; | ||
468 | clocks = <&ext_26m>; | ||
469 | clock-names = "apb_pclk"; | ||
470 | |||
471 | port { | ||
472 | etm1_out: endpoint { | ||
473 | remote-endpoint = | ||
474 | <&cluster0_funnel_in_port1>; | ||
475 | }; | ||
476 | }; | ||
477 | }; | ||
478 | |||
479 | etm@11640000 { | ||
480 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
481 | reg = <0 0x11640000 0 0x1000>; | ||
482 | cpu = <&CPU2>; | ||
483 | clocks = <&ext_26m>; | ||
484 | clock-names = "apb_pclk"; | ||
485 | |||
486 | port { | ||
487 | etm2_out: endpoint { | ||
488 | remote-endpoint = | ||
489 | <&cluster0_funnel_in_port2>; | ||
490 | }; | ||
491 | }; | ||
492 | }; | ||
493 | |||
494 | etm@11740000 { | ||
495 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
496 | reg = <0 0x11740000 0 0x1000>; | ||
497 | cpu = <&CPU3>; | ||
498 | clocks = <&ext_26m>; | ||
499 | clock-names = "apb_pclk"; | ||
500 | |||
501 | port { | ||
502 | etm3_out: endpoint { | ||
503 | remote-endpoint = | ||
504 | <&cluster0_funnel_in_port3>; | ||
505 | }; | ||
506 | }; | ||
507 | }; | ||
508 | |||
509 | etm@11840000 { | ||
510 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
511 | reg = <0 0x11840000 0 0x1000>; | ||
512 | cpu = <&CPU4>; | ||
513 | clocks = <&ext_26m>; | ||
514 | clock-names = "apb_pclk"; | ||
515 | |||
516 | port { | ||
517 | etm4_out: endpoint { | ||
518 | remote-endpoint = | ||
519 | <&cluster1_funnel_in_port0>; | ||
520 | }; | ||
521 | }; | ||
522 | }; | ||
523 | |||
524 | etm@11940000 { | ||
525 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
526 | reg = <0 0x11940000 0 0x1000>; | ||
527 | cpu = <&CPU5>; | ||
528 | clocks = <&ext_26m>; | ||
529 | clock-names = "apb_pclk"; | ||
530 | |||
531 | port { | ||
532 | etm5_out: endpoint { | ||
533 | remote-endpoint = | ||
534 | <&cluster1_funnel_in_port1>; | ||
535 | }; | ||
536 | }; | ||
537 | }; | ||
538 | |||
539 | etm@11a40000 { | ||
540 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
541 | reg = <0 0x11a40000 0 0x1000>; | ||
542 | cpu = <&CPU6>; | ||
543 | clocks = <&ext_26m>; | ||
544 | clock-names = "apb_pclk"; | ||
545 | |||
546 | port { | ||
547 | etm6_out: endpoint { | ||
548 | remote-endpoint = | ||
549 | <&cluster1_funnel_in_port2>; | ||
550 | }; | ||
551 | }; | ||
552 | }; | ||
553 | |||
554 | etm@11b40000 { | ||
555 | compatible = "arm,coresight-etm4x", "arm,primecell"; | ||
556 | reg = <0 0x11b40000 0 0x1000>; | ||
557 | cpu = <&CPU7>; | ||
558 | clocks = <&ext_26m>; | ||
559 | clock-names = "apb_pclk"; | ||
560 | |||
561 | port { | ||
562 | etm7_out: endpoint { | ||
563 | remote-endpoint = | ||
564 | <&cluster1_funnel_in_port3>; | ||
565 | }; | ||
566 | }; | ||
567 | }; | ||
568 | }; | ||
569 | }; | ||
diff --git a/arch/arm64/boot/dts/sprd/sp9860g-1h10.dts b/arch/arm64/boot/dts/sprd/sp9860g-1h10.dts new file mode 100644 index 000000000000..ae0b28ce6319 --- /dev/null +++ b/arch/arm64/boot/dts/sprd/sp9860g-1h10.dts | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Spreadtrum SP9860g board | ||
3 | * | ||
4 | * Copyright (C) 2017, Spreadtrum Communications Inc. | ||
5 | * | ||
6 | * SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
7 | */ | ||
8 | |||
9 | /dts-v1/; | ||
10 | |||
11 | #include "sc9860.dtsi" | ||
12 | |||
13 | / { | ||
14 | model = "Spreadtrum SP9860G 3GFHD Board"; | ||
15 | |||
16 | compatible = "sprd,sp9860g-1h10", "sprd,sc9860"; | ||
17 | |||
18 | aliases { | ||
19 | serial0 = &uart0; /* for Bluetooth */ | ||
20 | serial1 = &uart1; /* UART console */ | ||
21 | serial2 = &uart2; /* Reserved */ | ||
22 | serial3 = &uart3; /* for GPS */ | ||
23 | }; | ||
24 | |||
25 | memory{ | ||
26 | device_type = "memory"; | ||
27 | reg = <0x0 0x80000000 0 0x60000000>, | ||
28 | <0x1 0x80000000 0 0x60000000>; | ||
29 | }; | ||
30 | |||
31 | chosen { | ||
32 | stdout-path = "serial1:115200n8"; | ||
33 | }; | ||
34 | |||
35 | reserved-memory { | ||
36 | #address-cells = <2>; | ||
37 | #size-cells = <2>; | ||
38 | ranges; | ||
39 | }; | ||
40 | }; | ||
41 | |||
42 | &uart0 { | ||
43 | status = "okay"; | ||
44 | }; | ||
45 | |||
46 | &uart1 { | ||
47 | status = "okay"; | ||
48 | }; | ||
49 | |||
50 | &uart2 { | ||
51 | status = "okay"; | ||
52 | }; | ||
53 | |||
54 | &uart3 { | ||
55 | status = "okay"; | ||
56 | }; | ||
diff --git a/arch/arm64/boot/dts/sprd/whale2.dtsi b/arch/arm64/boot/dts/sprd/whale2.dtsi new file mode 100644 index 000000000000..7c217c547f85 --- /dev/null +++ b/arch/arm64/boot/dts/sprd/whale2.dtsi | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * Spreadtrum Whale2 platform peripherals | ||
3 | * | ||
4 | * Copyright (C) 2016, Spreadtrum Communications Inc. | ||
5 | * | ||
6 | * SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
7 | */ | ||
8 | |||
9 | / { | ||
10 | interrupt-parent = <&gic>; | ||
11 | #address-cells = <2>; | ||
12 | #size-cells = <2>; | ||
13 | |||
14 | soc: soc { | ||
15 | compatible = "simple-bus"; | ||
16 | #address-cells = <2>; | ||
17 | #size-cells = <2>; | ||
18 | ranges; | ||
19 | |||
20 | ap-apb { | ||
21 | compatible = "simple-bus"; | ||
22 | #address-cells = <1>; | ||
23 | #size-cells = <1>; | ||
24 | ranges = <0 0x0 0x70000000 0x10000000>; | ||
25 | |||
26 | uart0: serial@0 { | ||
27 | compatible = "sprd,sc9860-uart", | ||
28 | "sprd,sc9836-uart"; | ||
29 | reg = <0x0 0x100>; | ||
30 | interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; | ||
31 | clocks = <&ext_26m>; | ||
32 | status = "disabled"; | ||
33 | }; | ||
34 | |||
35 | uart1: serial@100000 { | ||
36 | compatible = "sprd,sc9860-uart", | ||
37 | "sprd,sc9836-uart"; | ||
38 | reg = <0x100000 0x100>; | ||
39 | interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; | ||
40 | clocks = <&ext_26m>; | ||
41 | status = "disabled"; | ||
42 | }; | ||
43 | |||
44 | uart2: serial@200000 { | ||
45 | compatible = "sprd,sc9860-uart", | ||
46 | "sprd,sc9836-uart"; | ||
47 | reg = <0x200000 0x100>; | ||
48 | interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; | ||
49 | clocks = <&ext_26m>; | ||
50 | status = "disabled"; | ||
51 | }; | ||
52 | |||
53 | uart3: serial@300000 { | ||
54 | compatible = "sprd,sc9860-uart", | ||
55 | "sprd,sc9836-uart"; | ||
56 | reg = <0x300000 0x100>; | ||
57 | interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; | ||
58 | clocks = <&ext_26m>; | ||
59 | status = "disabled"; | ||
60 | }; | ||
61 | }; | ||
62 | |||
63 | }; | ||
64 | |||
65 | ext_26m: ext-26m { | ||
66 | compatible = "fixed-clock"; | ||
67 | #clock-cells = <0>; | ||
68 | clock-frequency = <26000000>; | ||
69 | clock-output-names = "ext_26m"; | ||
70 | }; | ||
71 | }; | ||