Loading...
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2022 Sophgo Technology Inc. All rights reserved.
4 */
5
6/dts-v1/;
7#include <dt-bindings/interrupt-controller/irq.h>
8
9#include "sg2042-cpus.dtsi"
10
11/ {
12 compatible = "sophgo,sg2042";
13 #address-cells = <2>;
14 #size-cells = <2>;
15 dma-noncoherent;
16
17 aliases {
18 serial0 = &uart0;
19 };
20
21 soc: soc {
22 compatible = "simple-bus";
23 #address-cells = <2>;
24 #size-cells = <2>;
25 ranges;
26
27 clint_mswi: interrupt-controller@7094000000 {
28 compatible = "sophgo,sg2042-aclint-mswi", "thead,c900-aclint-mswi";
29 reg = <0x00000070 0x94000000 0x00000000 0x00004000>;
30 interrupts-extended = <&cpu0_intc 3>,
31 <&cpu1_intc 3>,
32 <&cpu2_intc 3>,
33 <&cpu3_intc 3>,
34 <&cpu4_intc 3>,
35 <&cpu5_intc 3>,
36 <&cpu6_intc 3>,
37 <&cpu7_intc 3>,
38 <&cpu8_intc 3>,
39 <&cpu9_intc 3>,
40 <&cpu10_intc 3>,
41 <&cpu11_intc 3>,
42 <&cpu12_intc 3>,
43 <&cpu13_intc 3>,
44 <&cpu14_intc 3>,
45 <&cpu15_intc 3>,
46 <&cpu16_intc 3>,
47 <&cpu17_intc 3>,
48 <&cpu18_intc 3>,
49 <&cpu19_intc 3>,
50 <&cpu20_intc 3>,
51 <&cpu21_intc 3>,
52 <&cpu22_intc 3>,
53 <&cpu23_intc 3>,
54 <&cpu24_intc 3>,
55 <&cpu25_intc 3>,
56 <&cpu26_intc 3>,
57 <&cpu27_intc 3>,
58 <&cpu28_intc 3>,
59 <&cpu29_intc 3>,
60 <&cpu30_intc 3>,
61 <&cpu31_intc 3>,
62 <&cpu32_intc 3>,
63 <&cpu33_intc 3>,
64 <&cpu34_intc 3>,
65 <&cpu35_intc 3>,
66 <&cpu36_intc 3>,
67 <&cpu37_intc 3>,
68 <&cpu38_intc 3>,
69 <&cpu39_intc 3>,
70 <&cpu40_intc 3>,
71 <&cpu41_intc 3>,
72 <&cpu42_intc 3>,
73 <&cpu43_intc 3>,
74 <&cpu44_intc 3>,
75 <&cpu45_intc 3>,
76 <&cpu46_intc 3>,
77 <&cpu47_intc 3>,
78 <&cpu48_intc 3>,
79 <&cpu49_intc 3>,
80 <&cpu50_intc 3>,
81 <&cpu51_intc 3>,
82 <&cpu52_intc 3>,
83 <&cpu53_intc 3>,
84 <&cpu54_intc 3>,
85 <&cpu55_intc 3>,
86 <&cpu56_intc 3>,
87 <&cpu57_intc 3>,
88 <&cpu58_intc 3>,
89 <&cpu59_intc 3>,
90 <&cpu60_intc 3>,
91 <&cpu61_intc 3>,
92 <&cpu62_intc 3>,
93 <&cpu63_intc 3>;
94 };
95
96 clint_mtimer0: timer@70ac004000 {
97 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
98 reg = <0x00000070 0xac004000 0x00000000 0x0000c000>;
99 reg-names = "mtimecmp";
100 interrupts-extended = <&cpu0_intc 7>,
101 <&cpu1_intc 7>,
102 <&cpu2_intc 7>,
103 <&cpu3_intc 7>;
104 };
105
106 clint_mtimer1: timer@70ac014000 {
107 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
108 reg = <0x00000070 0xac014000 0x00000000 0x0000c000>;
109 reg-names = "mtimecmp";
110 interrupts-extended = <&cpu4_intc 7>,
111 <&cpu5_intc 7>,
112 <&cpu6_intc 7>,
113 <&cpu7_intc 7>;
114 };
115
116 clint_mtimer2: timer@70ac024000 {
117 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
118 reg = <0x00000070 0xac024000 0x00000000 0x0000c000>;
119 reg-names = "mtimecmp";
120 interrupts-extended = <&cpu8_intc 7>,
121 <&cpu9_intc 7>,
122 <&cpu10_intc 7>,
123 <&cpu11_intc 7>;
124 };
125
126 clint_mtimer3: timer@70ac034000 {
127 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
128 reg = <0x00000070 0xac034000 0x00000000 0x0000c000>;
129 reg-names = "mtimecmp";
130 interrupts-extended = <&cpu12_intc 7>,
131 <&cpu13_intc 7>,
132 <&cpu14_intc 7>,
133 <&cpu15_intc 7>;
134 };
135
136 clint_mtimer4: timer@70ac044000 {
137 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
138 reg = <0x00000070 0xac044000 0x00000000 0x0000c000>;
139 reg-names = "mtimecmp";
140 interrupts-extended = <&cpu16_intc 7>,
141 <&cpu17_intc 7>,
142 <&cpu18_intc 7>,
143 <&cpu19_intc 7>;
144 };
145
146 clint_mtimer5: timer@70ac054000 {
147 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
148 reg = <0x00000070 0xac054000 0x00000000 0x0000c000>;
149 reg-names = "mtimecmp";
150 interrupts-extended = <&cpu20_intc 7>,
151 <&cpu21_intc 7>,
152 <&cpu22_intc 7>,
153 <&cpu23_intc 7>;
154 };
155
156 clint_mtimer6: timer@70ac064000 {
157 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
158 reg = <0x00000070 0xac064000 0x00000000 0x0000c000>;
159 reg-names = "mtimecmp";
160 interrupts-extended = <&cpu24_intc 7>,
161 <&cpu25_intc 7>,
162 <&cpu26_intc 7>,
163 <&cpu27_intc 7>;
164 };
165
166 clint_mtimer7: timer@70ac074000 {
167 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
168 reg = <0x00000070 0xac074000 0x00000000 0x0000c000>;
169 reg-names = "mtimecmp";
170 interrupts-extended = <&cpu28_intc 7>,
171 <&cpu29_intc 7>,
172 <&cpu30_intc 7>,
173 <&cpu31_intc 7>;
174 };
175
176 clint_mtimer8: timer@70ac084000 {
177 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
178 reg = <0x00000070 0xac084000 0x00000000 0x0000c000>;
179 reg-names = "mtimecmp";
180 interrupts-extended = <&cpu32_intc 7>,
181 <&cpu33_intc 7>,
182 <&cpu34_intc 7>,
183 <&cpu35_intc 7>;
184 };
185
186 clint_mtimer9: timer@70ac094000 {
187 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
188 reg = <0x00000070 0xac094000 0x00000000 0x0000c000>;
189 reg-names = "mtimecmp";
190 interrupts-extended = <&cpu36_intc 7>,
191 <&cpu37_intc 7>,
192 <&cpu38_intc 7>,
193 <&cpu39_intc 7>;
194 };
195
196 clint_mtimer10: timer@70ac0a4000 {
197 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
198 reg = <0x00000070 0xac0a4000 0x00000000 0x0000c000>;
199 reg-names = "mtimecmp";
200 interrupts-extended = <&cpu40_intc 7>,
201 <&cpu41_intc 7>,
202 <&cpu42_intc 7>,
203 <&cpu43_intc 7>;
204 };
205
206 clint_mtimer11: timer@70ac0b4000 {
207 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
208 reg = <0x00000070 0xac0b4000 0x00000000 0x0000c000>;
209 reg-names = "mtimecmp";
210 interrupts-extended = <&cpu44_intc 7>,
211 <&cpu45_intc 7>,
212 <&cpu46_intc 7>,
213 <&cpu47_intc 7>;
214 };
215
216 clint_mtimer12: timer@70ac0c4000 {
217 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
218 reg = <0x00000070 0xac0c4000 0x00000000 0x0000c000>;
219 reg-names = "mtimecmp";
220 interrupts-extended = <&cpu48_intc 7>,
221 <&cpu49_intc 7>,
222 <&cpu50_intc 7>,
223 <&cpu51_intc 7>;
224 };
225
226 clint_mtimer13: timer@70ac0d4000 {
227 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
228 reg = <0x00000070 0xac0d4000 0x00000000 0x0000c000>;
229 reg-names = "mtimecmp";
230 interrupts-extended = <&cpu52_intc 7>,
231 <&cpu53_intc 7>,
232 <&cpu54_intc 7>,
233 <&cpu55_intc 7>;
234 };
235
236 clint_mtimer14: timer@70ac0e4000 {
237 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
238 reg = <0x00000070 0xac0e4000 0x00000000 0x0000c000>;
239 reg-names = "mtimecmp";
240 interrupts-extended = <&cpu56_intc 7>,
241 <&cpu57_intc 7>,
242 <&cpu58_intc 7>,
243 <&cpu59_intc 7>;
244 };
245
246 clint_mtimer15: timer@70ac0f4000 {
247 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
248 reg = <0x00000070 0xac0f4000 0x00000000 0x0000c000>;
249 reg-names = "mtimecmp";
250 interrupts-extended = <&cpu60_intc 7>,
251 <&cpu61_intc 7>,
252 <&cpu62_intc 7>,
253 <&cpu63_intc 7>;
254 };
255
256 intc: interrupt-controller@7090000000 {
257 compatible = "sophgo,sg2042-plic", "thead,c900-plic";
258 #address-cells = <0>;
259 #interrupt-cells = <2>;
260 reg = <0x00000070 0x90000000 0x00000000 0x04000000>;
261 interrupt-controller;
262 interrupts-extended =
263 <&cpu0_intc 11>, <&cpu0_intc 9>,
264 <&cpu1_intc 11>, <&cpu1_intc 9>,
265 <&cpu2_intc 11>, <&cpu2_intc 9>,
266 <&cpu3_intc 11>, <&cpu3_intc 9>,
267 <&cpu4_intc 11>, <&cpu4_intc 9>,
268 <&cpu5_intc 11>, <&cpu5_intc 9>,
269 <&cpu6_intc 11>, <&cpu6_intc 9>,
270 <&cpu7_intc 11>, <&cpu7_intc 9>,
271 <&cpu8_intc 11>, <&cpu8_intc 9>,
272 <&cpu9_intc 11>, <&cpu9_intc 9>,
273 <&cpu10_intc 11>, <&cpu10_intc 9>,
274 <&cpu11_intc 11>, <&cpu11_intc 9>,
275 <&cpu12_intc 11>, <&cpu12_intc 9>,
276 <&cpu13_intc 11>, <&cpu13_intc 9>,
277 <&cpu14_intc 11>, <&cpu14_intc 9>,
278 <&cpu15_intc 11>, <&cpu15_intc 9>,
279 <&cpu16_intc 11>, <&cpu16_intc 9>,
280 <&cpu17_intc 11>, <&cpu17_intc 9>,
281 <&cpu18_intc 11>, <&cpu18_intc 9>,
282 <&cpu19_intc 11>, <&cpu19_intc 9>,
283 <&cpu20_intc 11>, <&cpu20_intc 9>,
284 <&cpu21_intc 11>, <&cpu21_intc 9>,
285 <&cpu22_intc 11>, <&cpu22_intc 9>,
286 <&cpu23_intc 11>, <&cpu23_intc 9>,
287 <&cpu24_intc 11>, <&cpu24_intc 9>,
288 <&cpu25_intc 11>, <&cpu25_intc 9>,
289 <&cpu26_intc 11>, <&cpu26_intc 9>,
290 <&cpu27_intc 11>, <&cpu27_intc 9>,
291 <&cpu28_intc 11>, <&cpu28_intc 9>,
292 <&cpu29_intc 11>, <&cpu29_intc 9>,
293 <&cpu30_intc 11>, <&cpu30_intc 9>,
294 <&cpu31_intc 11>, <&cpu31_intc 9>,
295 <&cpu32_intc 11>, <&cpu32_intc 9>,
296 <&cpu33_intc 11>, <&cpu33_intc 9>,
297 <&cpu34_intc 11>, <&cpu34_intc 9>,
298 <&cpu35_intc 11>, <&cpu35_intc 9>,
299 <&cpu36_intc 11>, <&cpu36_intc 9>,
300 <&cpu37_intc 11>, <&cpu37_intc 9>,
301 <&cpu38_intc 11>, <&cpu38_intc 9>,
302 <&cpu39_intc 11>, <&cpu39_intc 9>,
303 <&cpu40_intc 11>, <&cpu40_intc 9>,
304 <&cpu41_intc 11>, <&cpu41_intc 9>,
305 <&cpu42_intc 11>, <&cpu42_intc 9>,
306 <&cpu43_intc 11>, <&cpu43_intc 9>,
307 <&cpu44_intc 11>, <&cpu44_intc 9>,
308 <&cpu45_intc 11>, <&cpu45_intc 9>,
309 <&cpu46_intc 11>, <&cpu46_intc 9>,
310 <&cpu47_intc 11>, <&cpu47_intc 9>,
311 <&cpu48_intc 11>, <&cpu48_intc 9>,
312 <&cpu49_intc 11>, <&cpu49_intc 9>,
313 <&cpu50_intc 11>, <&cpu50_intc 9>,
314 <&cpu51_intc 11>, <&cpu51_intc 9>,
315 <&cpu52_intc 11>, <&cpu52_intc 9>,
316 <&cpu53_intc 11>, <&cpu53_intc 9>,
317 <&cpu54_intc 11>, <&cpu54_intc 9>,
318 <&cpu55_intc 11>, <&cpu55_intc 9>,
319 <&cpu56_intc 11>, <&cpu56_intc 9>,
320 <&cpu57_intc 11>, <&cpu57_intc 9>,
321 <&cpu58_intc 11>, <&cpu58_intc 9>,
322 <&cpu59_intc 11>, <&cpu59_intc 9>,
323 <&cpu60_intc 11>, <&cpu60_intc 9>,
324 <&cpu61_intc 11>, <&cpu61_intc 9>,
325 <&cpu62_intc 11>, <&cpu62_intc 9>,
326 <&cpu63_intc 11>, <&cpu63_intc 9>;
327 riscv,ndev = <224>;
328 };
329
330 uart0: serial@7040000000 {
331 compatible = "snps,dw-apb-uart";
332 reg = <0x00000070 0x40000000 0x00000000 0x00001000>;
333 interrupt-parent = <&intc>;
334 interrupts = <112 IRQ_TYPE_LEVEL_HIGH>;
335 clock-frequency = <500000000>;
336 reg-shift = <2>;
337 reg-io-width = <4>;
338 status = "disabled";
339 };
340 };
341};
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2022 Sophgo Technology Inc. All rights reserved.
4 */
5
6/dts-v1/;
7#include <dt-bindings/clock/sophgo,sg2042-clkgen.h>
8#include <dt-bindings/clock/sophgo,sg2042-pll.h>
9#include <dt-bindings/clock/sophgo,sg2042-rpgate.h>
10#include <dt-bindings/interrupt-controller/irq.h>
11#include <dt-bindings/reset/sophgo,sg2042-reset.h>
12
13#include "sg2042-cpus.dtsi"
14
15/ {
16 compatible = "sophgo,sg2042";
17 #address-cells = <2>;
18 #size-cells = <2>;
19 dma-noncoherent;
20
21 aliases {
22 serial0 = &uart0;
23 };
24
25 cgi_main: oscillator0 {
26 compatible = "fixed-clock";
27 clock-output-names = "cgi_main";
28 #clock-cells = <0>;
29 };
30
31 cgi_dpll0: oscillator1 {
32 compatible = "fixed-clock";
33 clock-output-names = "cgi_dpll0";
34 #clock-cells = <0>;
35 };
36
37 cgi_dpll1: oscillator2 {
38 compatible = "fixed-clock";
39 clock-output-names = "cgi_dpll1";
40 #clock-cells = <0>;
41 };
42
43 soc: soc {
44 compatible = "simple-bus";
45 #address-cells = <2>;
46 #size-cells = <2>;
47 interrupt-parent = <&intc>;
48 ranges;
49
50 i2c0: i2c@7030005000 {
51 compatible = "snps,designware-i2c";
52 reg = <0x70 0x30005000 0x0 0x1000>;
53 #address-cells = <1>;
54 #size-cells = <0>;
55 clocks = <&clkgen GATE_CLK_APB_I2C>;
56 clock-names = "ref";
57 clock-frequency = <100000>;
58 interrupts = <101 IRQ_TYPE_LEVEL_HIGH>;
59 resets = <&rstgen RST_I2C0>;
60 status = "disabled";
61 };
62
63 i2c1: i2c@7030006000 {
64 compatible = "snps,designware-i2c";
65 reg = <0x70 0x30006000 0x0 0x1000>;
66 #address-cells = <1>;
67 #size-cells = <0>;
68 clocks = <&clkgen GATE_CLK_APB_I2C>;
69 clock-names = "ref";
70 clock-frequency = <100000>;
71 interrupts = <102 IRQ_TYPE_LEVEL_HIGH>;
72 resets = <&rstgen RST_I2C1>;
73 status = "disabled";
74 };
75
76 i2c2: i2c@7030007000 {
77 compatible = "snps,designware-i2c";
78 reg = <0x70 0x30007000 0x0 0x1000>;
79 #address-cells = <1>;
80 #size-cells = <0>;
81 clocks = <&clkgen GATE_CLK_APB_I2C>;
82 clock-names = "ref";
83 clock-frequency = <100000>;
84 interrupts = <103 IRQ_TYPE_LEVEL_HIGH>;
85 resets = <&rstgen RST_I2C2>;
86 status = "disabled";
87 };
88
89 i2c3: i2c@7030008000 {
90 compatible = "snps,designware-i2c";
91 reg = <0x70 0x30008000 0x0 0x1000>;
92 #address-cells = <1>;
93 #size-cells = <0>;
94 clocks = <&clkgen GATE_CLK_APB_I2C>;
95 clock-names = "ref";
96 clock-frequency = <100000>;
97 interrupts = <104 IRQ_TYPE_LEVEL_HIGH>;
98 resets = <&rstgen RST_I2C3>;
99 status = "disabled";
100 };
101
102 gpio0: gpio@7030009000 {
103 compatible = "snps,dw-apb-gpio";
104 reg = <0x70 0x30009000 0x0 0x400>;
105 #address-cells = <1>;
106 #size-cells = <0>;
107 clocks = <&clkgen GATE_CLK_APB_GPIO>,
108 <&clkgen GATE_CLK_GPIO_DB>;
109 clock-names = "bus", "db";
110
111 port0a: gpio-controller@0 {
112 compatible = "snps,dw-apb-gpio-port";
113 gpio-controller;
114 #gpio-cells = <2>;
115 ngpios = <32>;
116 reg = <0>;
117 interrupt-controller;
118 #interrupt-cells = <2>;
119 interrupt-parent = <&intc>;
120 interrupts = <96 IRQ_TYPE_LEVEL_HIGH>;
121 };
122 };
123
124 gpio1: gpio@703000a000 {
125 compatible = "snps,dw-apb-gpio";
126 reg = <0x70 0x3000a000 0x0 0x400>;
127 #address-cells = <1>;
128 #size-cells = <0>;
129 clocks = <&clkgen GATE_CLK_APB_GPIO>,
130 <&clkgen GATE_CLK_GPIO_DB>;
131 clock-names = "bus", "db";
132
133 port1a: gpio-controller@0 {
134 compatible = "snps,dw-apb-gpio-port";
135 gpio-controller;
136 #gpio-cells = <2>;
137 ngpios = <32>;
138 reg = <0>;
139 interrupt-controller;
140 #interrupt-cells = <2>;
141 interrupt-parent = <&intc>;
142 interrupts = <97 IRQ_TYPE_LEVEL_HIGH>;
143 };
144 };
145
146 gpio2: gpio@703000b000 {
147 compatible = "snps,dw-apb-gpio";
148 reg = <0x70 0x3000b000 0x0 0x400>;
149 #address-cells = <1>;
150 #size-cells = <0>;
151 clocks = <&clkgen GATE_CLK_APB_GPIO>,
152 <&clkgen GATE_CLK_GPIO_DB>;
153 clock-names = "bus", "db";
154
155 port2a: gpio-controller@0 {
156 compatible = "snps,dw-apb-gpio-port";
157 gpio-controller;
158 #gpio-cells = <2>;
159 ngpios = <32>;
160 reg = <0>;
161 interrupt-controller;
162 #interrupt-cells = <2>;
163 interrupt-parent = <&intc>;
164 interrupts = <98 IRQ_TYPE_LEVEL_HIGH>;
165 };
166 };
167
168 pllclk: clock-controller@70300100c0 {
169 compatible = "sophgo,sg2042-pll";
170 reg = <0x70 0x300100c0 0x0 0x40>;
171 clocks = <&cgi_main>, <&cgi_dpll0>, <&cgi_dpll1>;
172 clock-names = "cgi_main", "cgi_dpll0", "cgi_dpll1";
173 #clock-cells = <1>;
174 };
175
176 rpgate: clock-controller@7030010368 {
177 compatible = "sophgo,sg2042-rpgate";
178 reg = <0x70 0x30010368 0x0 0x98>;
179 clocks = <&clkgen GATE_CLK_RP_CPU_NORMAL>;
180 clock-names = "rpgate";
181 #clock-cells = <1>;
182 };
183
184 clkgen: clock-controller@7030012000 {
185 compatible = "sophgo,sg2042-clkgen";
186 reg = <0x70 0x30012000 0x0 0x1000>;
187 clocks = <&pllclk MPLL_CLK>,
188 <&pllclk FPLL_CLK>,
189 <&pllclk DPLL0_CLK>,
190 <&pllclk DPLL1_CLK>;
191 clock-names = "mpll",
192 "fpll",
193 "dpll0",
194 "dpll1";
195 #clock-cells = <1>;
196 };
197
198 clint_mswi: interrupt-controller@7094000000 {
199 compatible = "sophgo,sg2042-aclint-mswi", "thead,c900-aclint-mswi";
200 reg = <0x00000070 0x94000000 0x00000000 0x00004000>;
201 interrupts-extended = <&cpu0_intc 3>,
202 <&cpu1_intc 3>,
203 <&cpu2_intc 3>,
204 <&cpu3_intc 3>,
205 <&cpu4_intc 3>,
206 <&cpu5_intc 3>,
207 <&cpu6_intc 3>,
208 <&cpu7_intc 3>,
209 <&cpu8_intc 3>,
210 <&cpu9_intc 3>,
211 <&cpu10_intc 3>,
212 <&cpu11_intc 3>,
213 <&cpu12_intc 3>,
214 <&cpu13_intc 3>,
215 <&cpu14_intc 3>,
216 <&cpu15_intc 3>,
217 <&cpu16_intc 3>,
218 <&cpu17_intc 3>,
219 <&cpu18_intc 3>,
220 <&cpu19_intc 3>,
221 <&cpu20_intc 3>,
222 <&cpu21_intc 3>,
223 <&cpu22_intc 3>,
224 <&cpu23_intc 3>,
225 <&cpu24_intc 3>,
226 <&cpu25_intc 3>,
227 <&cpu26_intc 3>,
228 <&cpu27_intc 3>,
229 <&cpu28_intc 3>,
230 <&cpu29_intc 3>,
231 <&cpu30_intc 3>,
232 <&cpu31_intc 3>,
233 <&cpu32_intc 3>,
234 <&cpu33_intc 3>,
235 <&cpu34_intc 3>,
236 <&cpu35_intc 3>,
237 <&cpu36_intc 3>,
238 <&cpu37_intc 3>,
239 <&cpu38_intc 3>,
240 <&cpu39_intc 3>,
241 <&cpu40_intc 3>,
242 <&cpu41_intc 3>,
243 <&cpu42_intc 3>,
244 <&cpu43_intc 3>,
245 <&cpu44_intc 3>,
246 <&cpu45_intc 3>,
247 <&cpu46_intc 3>,
248 <&cpu47_intc 3>,
249 <&cpu48_intc 3>,
250 <&cpu49_intc 3>,
251 <&cpu50_intc 3>,
252 <&cpu51_intc 3>,
253 <&cpu52_intc 3>,
254 <&cpu53_intc 3>,
255 <&cpu54_intc 3>,
256 <&cpu55_intc 3>,
257 <&cpu56_intc 3>,
258 <&cpu57_intc 3>,
259 <&cpu58_intc 3>,
260 <&cpu59_intc 3>,
261 <&cpu60_intc 3>,
262 <&cpu61_intc 3>,
263 <&cpu62_intc 3>,
264 <&cpu63_intc 3>;
265 };
266
267 clint_mtimer0: timer@70ac004000 {
268 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
269 reg = <0x00000070 0xac004000 0x00000000 0x0000c000>;
270 reg-names = "mtimecmp";
271 interrupts-extended = <&cpu0_intc 7>,
272 <&cpu1_intc 7>,
273 <&cpu2_intc 7>,
274 <&cpu3_intc 7>;
275 };
276
277 clint_mtimer1: timer@70ac014000 {
278 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
279 reg = <0x00000070 0xac014000 0x00000000 0x0000c000>;
280 reg-names = "mtimecmp";
281 interrupts-extended = <&cpu4_intc 7>,
282 <&cpu5_intc 7>,
283 <&cpu6_intc 7>,
284 <&cpu7_intc 7>;
285 };
286
287 clint_mtimer2: timer@70ac024000 {
288 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
289 reg = <0x00000070 0xac024000 0x00000000 0x0000c000>;
290 reg-names = "mtimecmp";
291 interrupts-extended = <&cpu8_intc 7>,
292 <&cpu9_intc 7>,
293 <&cpu10_intc 7>,
294 <&cpu11_intc 7>;
295 };
296
297 clint_mtimer3: timer@70ac034000 {
298 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
299 reg = <0x00000070 0xac034000 0x00000000 0x0000c000>;
300 reg-names = "mtimecmp";
301 interrupts-extended = <&cpu12_intc 7>,
302 <&cpu13_intc 7>,
303 <&cpu14_intc 7>,
304 <&cpu15_intc 7>;
305 };
306
307 clint_mtimer4: timer@70ac044000 {
308 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
309 reg = <0x00000070 0xac044000 0x00000000 0x0000c000>;
310 reg-names = "mtimecmp";
311 interrupts-extended = <&cpu16_intc 7>,
312 <&cpu17_intc 7>,
313 <&cpu18_intc 7>,
314 <&cpu19_intc 7>;
315 };
316
317 clint_mtimer5: timer@70ac054000 {
318 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
319 reg = <0x00000070 0xac054000 0x00000000 0x0000c000>;
320 reg-names = "mtimecmp";
321 interrupts-extended = <&cpu20_intc 7>,
322 <&cpu21_intc 7>,
323 <&cpu22_intc 7>,
324 <&cpu23_intc 7>;
325 };
326
327 clint_mtimer6: timer@70ac064000 {
328 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
329 reg = <0x00000070 0xac064000 0x00000000 0x0000c000>;
330 reg-names = "mtimecmp";
331 interrupts-extended = <&cpu24_intc 7>,
332 <&cpu25_intc 7>,
333 <&cpu26_intc 7>,
334 <&cpu27_intc 7>;
335 };
336
337 clint_mtimer7: timer@70ac074000 {
338 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
339 reg = <0x00000070 0xac074000 0x00000000 0x0000c000>;
340 reg-names = "mtimecmp";
341 interrupts-extended = <&cpu28_intc 7>,
342 <&cpu29_intc 7>,
343 <&cpu30_intc 7>,
344 <&cpu31_intc 7>;
345 };
346
347 clint_mtimer8: timer@70ac084000 {
348 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
349 reg = <0x00000070 0xac084000 0x00000000 0x0000c000>;
350 reg-names = "mtimecmp";
351 interrupts-extended = <&cpu32_intc 7>,
352 <&cpu33_intc 7>,
353 <&cpu34_intc 7>,
354 <&cpu35_intc 7>;
355 };
356
357 clint_mtimer9: timer@70ac094000 {
358 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
359 reg = <0x00000070 0xac094000 0x00000000 0x0000c000>;
360 reg-names = "mtimecmp";
361 interrupts-extended = <&cpu36_intc 7>,
362 <&cpu37_intc 7>,
363 <&cpu38_intc 7>,
364 <&cpu39_intc 7>;
365 };
366
367 clint_mtimer10: timer@70ac0a4000 {
368 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
369 reg = <0x00000070 0xac0a4000 0x00000000 0x0000c000>;
370 reg-names = "mtimecmp";
371 interrupts-extended = <&cpu40_intc 7>,
372 <&cpu41_intc 7>,
373 <&cpu42_intc 7>,
374 <&cpu43_intc 7>;
375 };
376
377 clint_mtimer11: timer@70ac0b4000 {
378 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
379 reg = <0x00000070 0xac0b4000 0x00000000 0x0000c000>;
380 reg-names = "mtimecmp";
381 interrupts-extended = <&cpu44_intc 7>,
382 <&cpu45_intc 7>,
383 <&cpu46_intc 7>,
384 <&cpu47_intc 7>;
385 };
386
387 clint_mtimer12: timer@70ac0c4000 {
388 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
389 reg = <0x00000070 0xac0c4000 0x00000000 0x0000c000>;
390 reg-names = "mtimecmp";
391 interrupts-extended = <&cpu48_intc 7>,
392 <&cpu49_intc 7>,
393 <&cpu50_intc 7>,
394 <&cpu51_intc 7>;
395 };
396
397 clint_mtimer13: timer@70ac0d4000 {
398 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
399 reg = <0x00000070 0xac0d4000 0x00000000 0x0000c000>;
400 reg-names = "mtimecmp";
401 interrupts-extended = <&cpu52_intc 7>,
402 <&cpu53_intc 7>,
403 <&cpu54_intc 7>,
404 <&cpu55_intc 7>;
405 };
406
407 clint_mtimer14: timer@70ac0e4000 {
408 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
409 reg = <0x00000070 0xac0e4000 0x00000000 0x0000c000>;
410 reg-names = "mtimecmp";
411 interrupts-extended = <&cpu56_intc 7>,
412 <&cpu57_intc 7>,
413 <&cpu58_intc 7>,
414 <&cpu59_intc 7>;
415 };
416
417 clint_mtimer15: timer@70ac0f4000 {
418 compatible = "sophgo,sg2042-aclint-mtimer", "thead,c900-aclint-mtimer";
419 reg = <0x00000070 0xac0f4000 0x00000000 0x0000c000>;
420 reg-names = "mtimecmp";
421 interrupts-extended = <&cpu60_intc 7>,
422 <&cpu61_intc 7>,
423 <&cpu62_intc 7>,
424 <&cpu63_intc 7>;
425 };
426
427 intc: interrupt-controller@7090000000 {
428 compatible = "sophgo,sg2042-plic", "thead,c900-plic";
429 #address-cells = <0>;
430 #interrupt-cells = <2>;
431 reg = <0x00000070 0x90000000 0x00000000 0x04000000>;
432 interrupt-controller;
433 interrupts-extended =
434 <&cpu0_intc 11>, <&cpu0_intc 9>,
435 <&cpu1_intc 11>, <&cpu1_intc 9>,
436 <&cpu2_intc 11>, <&cpu2_intc 9>,
437 <&cpu3_intc 11>, <&cpu3_intc 9>,
438 <&cpu4_intc 11>, <&cpu4_intc 9>,
439 <&cpu5_intc 11>, <&cpu5_intc 9>,
440 <&cpu6_intc 11>, <&cpu6_intc 9>,
441 <&cpu7_intc 11>, <&cpu7_intc 9>,
442 <&cpu8_intc 11>, <&cpu8_intc 9>,
443 <&cpu9_intc 11>, <&cpu9_intc 9>,
444 <&cpu10_intc 11>, <&cpu10_intc 9>,
445 <&cpu11_intc 11>, <&cpu11_intc 9>,
446 <&cpu12_intc 11>, <&cpu12_intc 9>,
447 <&cpu13_intc 11>, <&cpu13_intc 9>,
448 <&cpu14_intc 11>, <&cpu14_intc 9>,
449 <&cpu15_intc 11>, <&cpu15_intc 9>,
450 <&cpu16_intc 11>, <&cpu16_intc 9>,
451 <&cpu17_intc 11>, <&cpu17_intc 9>,
452 <&cpu18_intc 11>, <&cpu18_intc 9>,
453 <&cpu19_intc 11>, <&cpu19_intc 9>,
454 <&cpu20_intc 11>, <&cpu20_intc 9>,
455 <&cpu21_intc 11>, <&cpu21_intc 9>,
456 <&cpu22_intc 11>, <&cpu22_intc 9>,
457 <&cpu23_intc 11>, <&cpu23_intc 9>,
458 <&cpu24_intc 11>, <&cpu24_intc 9>,
459 <&cpu25_intc 11>, <&cpu25_intc 9>,
460 <&cpu26_intc 11>, <&cpu26_intc 9>,
461 <&cpu27_intc 11>, <&cpu27_intc 9>,
462 <&cpu28_intc 11>, <&cpu28_intc 9>,
463 <&cpu29_intc 11>, <&cpu29_intc 9>,
464 <&cpu30_intc 11>, <&cpu30_intc 9>,
465 <&cpu31_intc 11>, <&cpu31_intc 9>,
466 <&cpu32_intc 11>, <&cpu32_intc 9>,
467 <&cpu33_intc 11>, <&cpu33_intc 9>,
468 <&cpu34_intc 11>, <&cpu34_intc 9>,
469 <&cpu35_intc 11>, <&cpu35_intc 9>,
470 <&cpu36_intc 11>, <&cpu36_intc 9>,
471 <&cpu37_intc 11>, <&cpu37_intc 9>,
472 <&cpu38_intc 11>, <&cpu38_intc 9>,
473 <&cpu39_intc 11>, <&cpu39_intc 9>,
474 <&cpu40_intc 11>, <&cpu40_intc 9>,
475 <&cpu41_intc 11>, <&cpu41_intc 9>,
476 <&cpu42_intc 11>, <&cpu42_intc 9>,
477 <&cpu43_intc 11>, <&cpu43_intc 9>,
478 <&cpu44_intc 11>, <&cpu44_intc 9>,
479 <&cpu45_intc 11>, <&cpu45_intc 9>,
480 <&cpu46_intc 11>, <&cpu46_intc 9>,
481 <&cpu47_intc 11>, <&cpu47_intc 9>,
482 <&cpu48_intc 11>, <&cpu48_intc 9>,
483 <&cpu49_intc 11>, <&cpu49_intc 9>,
484 <&cpu50_intc 11>, <&cpu50_intc 9>,
485 <&cpu51_intc 11>, <&cpu51_intc 9>,
486 <&cpu52_intc 11>, <&cpu52_intc 9>,
487 <&cpu53_intc 11>, <&cpu53_intc 9>,
488 <&cpu54_intc 11>, <&cpu54_intc 9>,
489 <&cpu55_intc 11>, <&cpu55_intc 9>,
490 <&cpu56_intc 11>, <&cpu56_intc 9>,
491 <&cpu57_intc 11>, <&cpu57_intc 9>,
492 <&cpu58_intc 11>, <&cpu58_intc 9>,
493 <&cpu59_intc 11>, <&cpu59_intc 9>,
494 <&cpu60_intc 11>, <&cpu60_intc 9>,
495 <&cpu61_intc 11>, <&cpu61_intc 9>,
496 <&cpu62_intc 11>, <&cpu62_intc 9>,
497 <&cpu63_intc 11>, <&cpu63_intc 9>;
498 riscv,ndev = <224>;
499 };
500
501 rstgen: reset-controller@7030013000 {
502 compatible = "sophgo,sg2042-reset";
503 reg = <0x00000070 0x30013000 0x00000000 0x0000000c>;
504 #reset-cells = <1>;
505 };
506
507 uart0: serial@7040000000 {
508 compatible = "snps,dw-apb-uart";
509 reg = <0x00000070 0x40000000 0x00000000 0x00001000>;
510 interrupts = <112 IRQ_TYPE_LEVEL_HIGH>;
511 clock-frequency = <500000000>;
512 clocks = <&clkgen GATE_CLK_UART_500M>,
513 <&clkgen GATE_CLK_APB_UART>;
514 clock-names = "baudclk", "apb_pclk";
515 reg-shift = <2>;
516 reg-io-width = <4>;
517 resets = <&rstgen RST_UART0>;
518 status = "disabled";
519 };
520
521 emmc: mmc@704002a000 {
522 compatible = "sophgo,sg2042-dwcmshc";
523 reg = <0x70 0x4002a000 0x0 0x1000>;
524 interrupt-parent = <&intc>;
525 interrupts = <134 IRQ_TYPE_LEVEL_HIGH>;
526 clocks = <&clkgen GATE_CLK_EMMC_100M>,
527 <&clkgen GATE_CLK_AXI_EMMC>,
528 <&clkgen GATE_CLK_100K_EMMC>;
529 clock-names = "core",
530 "bus",
531 "timer";
532 status = "disabled";
533 };
534
535 sd: mmc@704002b000 {
536 compatible = "sophgo,sg2042-dwcmshc";
537 reg = <0x70 0x4002b000 0x0 0x1000>;
538 interrupt-parent = <&intc>;
539 interrupts = <136 IRQ_TYPE_LEVEL_HIGH>;
540 clocks = <&clkgen GATE_CLK_SD_100M>,
541 <&clkgen GATE_CLK_AXI_SD>,
542 <&clkgen GATE_CLK_100K_SD>;
543 clock-names = "core",
544 "bus",
545 "timer";
546 status = "disabled";
547 };
548 };
549};