Skip to content

Commit bb8551c

Browse files
author
Chunyan Zhang
committed
arm64: dts: sprd: Add support for Unisoc's UMS9620
Add basic support for Unisoc's UMS9620, with this patch, the board ums9620-2h10 can run into console. Link: https://lore.kernel.org/r/20231218100234.1102916-4-chunyan.zhang@unisoc.com Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
1 parent 07bc243 commit bb8551c

3 files changed

Lines changed: 285 additions & 1 deletion

File tree

arch/arm64/boot/dts/sprd/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
dtb-$(CONFIG_ARCH_SPRD) += sc9836-openphone.dtb \
33
sp9860g-1h10.dtb \
44
sp9863a-1h10.dtb \
5-
ums512-1h10.dtb
5+
ums512-1h10.dtb \
6+
ums9620-2h10.dtb
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2+
/*
3+
* Unisoc UMS9620-2h10 board DTS file
4+
*
5+
* Copyright (C) 2023, Unisoc Inc.
6+
*/
7+
8+
/dts-v1/;
9+
10+
#include "ums9620.dtsi"
11+
12+
/ {
13+
model = "Unisoc UMS9620-2H10 Board";
14+
15+
compatible = "sprd,ums9620-2h10", "sprd,ums9620";
16+
17+
aliases {
18+
serial0 = &uart0;
19+
serial1 = &uart1;
20+
};
21+
22+
memory@80000000 {
23+
device_type = "memory";
24+
reg = <0x0 0x80000000 0x2 0x00000000>;
25+
};
26+
27+
chosen {
28+
stdout-path = "serial1:921600n8";
29+
};
30+
};
31+
32+
&uart0 {
33+
status = "okay";
34+
};
35+
36+
&uart1 {
37+
status = "okay";
38+
};
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2+
/*
3+
* Unisoc UMS9620 DTS file
4+
*
5+
* Copyright (C) 2023, Unisoc Inc.
6+
*/
7+
8+
#include <dt-bindings/interrupt-controller/arm-gic.h>
9+
10+
/ {
11+
interrupt-parent = <&gic>;
12+
#address-cells = <2>;
13+
#size-cells = <2>;
14+
15+
cpus {
16+
#address-cells = <2>;
17+
#size-cells = <0>;
18+
19+
cpu-map {
20+
cluster0 {
21+
core0 {
22+
cpu = <&CPU0>;
23+
};
24+
core1 {
25+
cpu = <&CPU1>;
26+
};
27+
core2 {
28+
cpu = <&CPU2>;
29+
};
30+
core3 {
31+
cpu = <&CPU3>;
32+
};
33+
core4 {
34+
cpu = <&CPU4>;
35+
};
36+
core5 {
37+
cpu = <&CPU5>;
38+
};
39+
core6 {
40+
cpu = <&CPU6>;
41+
};
42+
core7 {
43+
cpu = <&CPU7>;
44+
};
45+
};
46+
};
47+
48+
CPU0: cpu@0 {
49+
device_type = "cpu";
50+
compatible = "arm,cortex-a55";
51+
reg = <0x0 0x0>;
52+
enable-method = "psci";
53+
cpu-idle-states = <&LIT_CORE_PD>;
54+
};
55+
56+
CPU1: cpu@100 {
57+
device_type = "cpu";
58+
compatible = "arm,cortex-a55";
59+
reg = <0x0 0x100>;
60+
enable-method = "psci";
61+
cpu-idle-states = <&LIT_CORE_PD>;
62+
};
63+
64+
CPU2: cpu@200 {
65+
device_type = "cpu";
66+
compatible = "arm,cortex-a55";
67+
reg = <0x0 0x200>;
68+
enable-method = "psci";
69+
cpu-idle-states = <&LIT_CORE_PD>;
70+
};
71+
72+
CPU3: cpu@300 {
73+
device_type = "cpu";
74+
compatible = "arm,cortex-a55";
75+
reg = <0x0 0x300>;
76+
enable-method = "psci";
77+
cpu-idle-states = <&LIT_CORE_PD>;
78+
};
79+
80+
CPU4: cpu@400 {
81+
device_type = "cpu";
82+
compatible = "arm,cortex-a76";
83+
reg = <0x0 0x400>;
84+
enable-method = "psci";
85+
cpu-idle-states = <&BIG_CORE_PD>;
86+
};
87+
88+
CPU5: cpu@500 {
89+
device_type = "cpu";
90+
compatible = "arm,cortex-a76";
91+
reg = <0x0 0x500>;
92+
enable-method = "psci";
93+
cpu-idle-states = <&BIG_CORE_PD>;
94+
};
95+
96+
CPU6: cpu@600 {
97+
device_type = "cpu";
98+
compatible = "arm,cortex-a76";
99+
reg = <0x0 0x600>;
100+
enable-method = "psci";
101+
cpu-idle-states = <&BIG_CORE_PD>;
102+
};
103+
104+
CPU7: cpu@700 {
105+
device_type = "cpu";
106+
compatible = "arm,cortex-a76";
107+
reg = <0x0 0x700>;
108+
enable-method = "psci";
109+
cpu-idle-states = <&BIG_CORE_PD>;
110+
};
111+
};
112+
113+
idle-states {
114+
entry-method = "psci";
115+
LIT_CORE_PD: cpu-pd-lit {
116+
compatible = "arm,idle-state";
117+
entry-latency-us = <1000>;
118+
exit-latency-us = <500>;
119+
min-residency-us = <2500>;
120+
local-timer-stop;
121+
arm,psci-suspend-param = <0x00010000>;
122+
};
123+
124+
BIG_CORE_PD: cpu-pd-big {
125+
compatible = "arm,idle-state";
126+
entry-latency-us = <4000>;
127+
exit-latency-us = <4000>;
128+
min-residency-us = <10000>;
129+
local-timer-stop;
130+
arm,psci-suspend-param = <0x00010000>;
131+
};
132+
};
133+
134+
psci {
135+
compatible = "arm,psci-0.2";
136+
method = "smc";
137+
};
138+
139+
timer {
140+
compatible = "arm,armv8-timer";
141+
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */
142+
<GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */
143+
<GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */
144+
<GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */
145+
};
146+
147+
pmu {
148+
compatible = "arm,armv8-pmuv3";
149+
interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>,
150+
<GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>,
151+
<GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>,
152+
<GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
153+
<GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,
154+
<GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>,
155+
<GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>,
156+
<GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
157+
};
158+
159+
soc: soc {
160+
compatible = "simple-bus";
161+
ranges;
162+
#address-cells = <2>;
163+
#size-cells = <2>;
164+
165+
gic: interrupt-controller@12000000 {
166+
compatible = "arm,gic-v3";
167+
reg = <0x0 0x12000000 0 0x20000>, /* GICD */
168+
<0x0 0x12040000 0 0x100000>; /* GICR */
169+
#interrupt-cells = <3>;
170+
#address-cells = <2>;
171+
#size-cells = <2>;
172+
redistributor-stride = <0x0 0x20000>; /* 128KB stride */
173+
#redistributor-regions = <1>;
174+
interrupt-controller;
175+
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
176+
};
177+
178+
apb@20200000 {
179+
compatible = "simple-bus";
180+
ranges = <0 0 0x20200000 0x100000>;
181+
#address-cells = <1>;
182+
#size-cells = <1>;
183+
184+
uart0: serial@0 {
185+
compatible = "sprd,ums9620-uart",
186+
"sprd,sc9836-uart";
187+
reg = <0 0x100>;
188+
interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
189+
clocks = <&ext_26m>;
190+
status = "disabled";
191+
};
192+
193+
uart1: serial@10000 {
194+
compatible = "sprd,ums9620-uart",
195+
"sprd,sc9836-uart";
196+
reg = <0x10000 0x100>;
197+
interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
198+
clocks = <&ext_26m>;
199+
status = "disabled";
200+
};
201+
};
202+
};
203+
204+
ext_26m: clk-26m {
205+
compatible = "fixed-clock";
206+
#clock-cells = <0>;
207+
clock-frequency = <26000000>;
208+
clock-output-names = "ext-26m";
209+
};
210+
211+
ext_4m: clk-4m {
212+
compatible = "fixed-clock";
213+
#clock-cells = <0>;
214+
clock-frequency = <4000000>;
215+
clock-output-names = "ext-4m";
216+
};
217+
218+
ext_32k: clk-32k {
219+
compatible = "fixed-clock";
220+
#clock-cells = <0>;
221+
clock-frequency = <32768>;
222+
clock-output-names = "ext-32k";
223+
};
224+
225+
rco_100m: clk-100m {
226+
compatible = "fixed-clock";
227+
#clock-cells = <0>;
228+
clock-frequency = <100000000>;
229+
clock-output-names = "rco-100m";
230+
};
231+
232+
dphy_312m5: dphy-312m5 {
233+
compatible = "fixed-clock";
234+
#clock-cells = <0>;
235+
clock-frequency = <312500000>;
236+
clock-output-names = "dphy-312m5";
237+
};
238+
239+
dphy_416m7: dphy-416m7 {
240+
compatible = "fixed-clock";
241+
#clock-cells = <0>;
242+
clock-frequency = <416700000>;
243+
clock-output-names = "dphy-416m7";
244+
};
245+
};

0 commit comments

Comments
 (0)