xref: /linux/arch/riscv/boot/dts/sophgo/sg2042.dtsi (revision 021bc4b9)
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};
342