Merge tag 'vfs-6.7.misc' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs
[linux-block.git] / arch / riscv / boot / dts / thead / th1520.dtsi
CommitLineData
a3ce3ff2 1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
8e396880
JZ
2/*
3 * Copyright (C) 2021 Alibaba Group Holding Limited.
4 * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
5 */
6
7#include <dt-bindings/interrupt-controller/irq.h>
8
9/ {
10 compatible = "thead,th1520";
11 #address-cells = <2>;
12 #size-cells = <2>;
13
14 cpus: cpus {
15 #address-cells = <1>;
16 #size-cells = <0>;
17 timebase-frequency = <3000000>;
18
19 c910_0: cpu@0 {
20 compatible = "thead,c910", "riscv";
21 device_type = "cpu";
22 riscv,isa = "rv64imafdc";
23 reg = <0>;
24 i-cache-block-size = <64>;
25 i-cache-size = <65536>;
26 i-cache-sets = <512>;
27 d-cache-block-size = <64>;
28 d-cache-size = <65536>;
29 d-cache-sets = <512>;
30 next-level-cache = <&l2_cache>;
31 mmu-type = "riscv,sv39";
32
33 cpu0_intc: interrupt-controller {
34 compatible = "riscv,cpu-intc";
35 interrupt-controller;
36 #interrupt-cells = <1>;
37 };
38 };
39
40 c910_1: cpu@1 {
41 compatible = "thead,c910", "riscv";
42 device_type = "cpu";
43 riscv,isa = "rv64imafdc";
44 reg = <1>;
45 i-cache-block-size = <64>;
46 i-cache-size = <65536>;
47 i-cache-sets = <512>;
48 d-cache-block-size = <64>;
49 d-cache-size = <65536>;
50 d-cache-sets = <512>;
51 next-level-cache = <&l2_cache>;
52 mmu-type = "riscv,sv39";
53
54 cpu1_intc: interrupt-controller {
55 compatible = "riscv,cpu-intc";
56 interrupt-controller;
57 #interrupt-cells = <1>;
58 };
59 };
60
61 c910_2: cpu@2 {
62 compatible = "thead,c910", "riscv";
63 device_type = "cpu";
64 riscv,isa = "rv64imafdc";
65 reg = <2>;
66 i-cache-block-size = <64>;
67 i-cache-size = <65536>;
68 i-cache-sets = <512>;
69 d-cache-block-size = <64>;
70 d-cache-size = <65536>;
71 d-cache-sets = <512>;
72 next-level-cache = <&l2_cache>;
73 mmu-type = "riscv,sv39";
74
75 cpu2_intc: interrupt-controller {
76 compatible = "riscv,cpu-intc";
77 interrupt-controller;
78 #interrupt-cells = <1>;
79 };
80 };
81
82 c910_3: cpu@3 {
83 compatible = "thead,c910", "riscv";
84 device_type = "cpu";
85 riscv,isa = "rv64imafdc";
86 reg = <3>;
87 i-cache-block-size = <64>;
88 i-cache-size = <65536>;
89 i-cache-sets = <512>;
90 d-cache-block-size = <64>;
91 d-cache-size = <65536>;
92 d-cache-sets = <512>;
93 next-level-cache = <&l2_cache>;
94 mmu-type = "riscv,sv39";
95
96 cpu3_intc: interrupt-controller {
97 compatible = "riscv,cpu-intc";
98 interrupt-controller;
99 #interrupt-cells = <1>;
100 };
101 };
102
103 l2_cache: l2-cache {
104 compatible = "cache";
105 cache-block-size = <64>;
106 cache-level = <2>;
107 cache-size = <1048576>;
108 cache-sets = <1024>;
109 cache-unified;
110 };
111 };
112
113 osc: oscillator {
114 compatible = "fixed-clock";
115 clock-output-names = "osc_24m";
116 #clock-cells = <0>;
117 };
118
119 osc_32k: 32k-oscillator {
120 compatible = "fixed-clock";
121 clock-output-names = "osc_32k";
122 #clock-cells = <0>;
123 };
124
125 apb_clk: apb-clk-clock {
126 compatible = "fixed-clock";
127 clock-output-names = "apb_clk";
128 #clock-cells = <0>;
129 };
130
131 uart_sclk: uart-sclk-clock {
132 compatible = "fixed-clock";
133 clock-output-names = "uart_sclk";
134 #clock-cells = <0>;
135 };
136
137 soc {
138 compatible = "simple-bus";
139 interrupt-parent = <&plic>;
140 #address-cells = <2>;
141 #size-cells = <2>;
759426c7 142 dma-noncoherent;
8e396880
JZ
143 ranges;
144
145 plic: interrupt-controller@ffd8000000 {
146 compatible = "thead,th1520-plic", "thead,c900-plic";
147 reg = <0xff 0xd8000000 0x0 0x01000000>;
148 interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
149 <&cpu1_intc 11>, <&cpu1_intc 9>,
150 <&cpu2_intc 11>, <&cpu2_intc 9>,
151 <&cpu3_intc 11>, <&cpu3_intc 9>;
152 interrupt-controller;
153 #address-cells = <0>;
154 #interrupt-cells = <2>;
155 riscv,ndev = <240>;
156 };
157
158 clint: timer@ffdc000000 {
159 compatible = "thead,th1520-clint", "thead,c900-clint";
160 reg = <0xff 0xdc000000 0x0 0x00010000>;
161 interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
162 <&cpu1_intc 3>, <&cpu1_intc 7>,
163 <&cpu2_intc 3>, <&cpu2_intc 7>,
164 <&cpu3_intc 3>, <&cpu3_intc 7>;
165 };
166
167 uart0: serial@ffe7014000 {
168 compatible = "snps,dw-apb-uart";
169 reg = <0xff 0xe7014000 0x0 0x100>;
170 interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
171 clocks = <&uart_sclk>;
172 reg-shift = <2>;
173 reg-io-width = <4>;
174 status = "disabled";
175 };
176
177 uart1: serial@ffe7f00000 {
178 compatible = "snps,dw-apb-uart";
179 reg = <0xff 0xe7f00000 0x0 0x100>;
180 interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
181 clocks = <&uart_sclk>;
182 reg-shift = <2>;
183 reg-io-width = <4>;
184 status = "disabled";
185 };
186
187 uart3: serial@ffe7f04000 {
188 compatible = "snps,dw-apb-uart";
189 reg = <0xff 0xe7f04000 0x0 0x100>;
190 interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
191 clocks = <&uart_sclk>;
192 reg-shift = <2>;
193 reg-io-width = <4>;
194 status = "disabled";
195 };
196
197 gpio2: gpio@ffe7f34000 {
198 compatible = "snps,dw-apb-gpio";
199 reg = <0xff 0xe7f34000 0x0 0x1000>;
200 #address-cells = <1>;
201 #size-cells = <0>;
202
203 portc: gpio-controller@0 {
204 compatible = "snps,dw-apb-gpio-port";
205 gpio-controller;
206 #gpio-cells = <2>;
207 ngpios = <32>;
208 reg = <0>;
209 interrupt-controller;
210 #interrupt-cells = <2>;
211 interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
212 };
213 };
214
215 gpio3: gpio@ffe7f38000 {
216 compatible = "snps,dw-apb-gpio";
217 reg = <0xff 0xe7f38000 0x0 0x1000>;
218 #address-cells = <1>;
219 #size-cells = <0>;
220
221 portd: gpio-controller@0 {
222 compatible = "snps,dw-apb-gpio-port";
223 gpio-controller;
224 #gpio-cells = <2>;
225 ngpios = <32>;
226 reg = <0>;
227 interrupt-controller;
228 #interrupt-cells = <2>;
229 interrupts = <59 IRQ_TYPE_LEVEL_HIGH>;
230 };
231 };
232
233 gpio0: gpio@ffec005000 {
234 compatible = "snps,dw-apb-gpio";
235 reg = <0xff 0xec005000 0x0 0x1000>;
236 #address-cells = <1>;
237 #size-cells = <0>;
238
239 porta: gpio-controller@0 {
240 compatible = "snps,dw-apb-gpio-port";
241 gpio-controller;
242 #gpio-cells = <2>;
243 ngpios = <32>;
244 reg = <0>;
245 interrupt-controller;
246 #interrupt-cells = <2>;
247 interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
248 };
249 };
250
251 gpio1: gpio@ffec006000 {
252 compatible = "snps,dw-apb-gpio";
253 reg = <0xff 0xec006000 0x0 0x1000>;
254 #address-cells = <1>;
255 #size-cells = <0>;
256
257 portb: gpio-controller@0 {
258 compatible = "snps,dw-apb-gpio-port";
259 gpio-controller;
260 #gpio-cells = <2>;
261 ngpios = <32>;
262 reg = <0>;
263 interrupt-controller;
264 #interrupt-cells = <2>;
265 interrupts = <57 IRQ_TYPE_LEVEL_HIGH>;
266 };
267 };
268
269 uart2: serial@ffec010000 {
270 compatible = "snps,dw-apb-uart";
271 reg = <0xff 0xec010000 0x0 0x4000>;
272 interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
273 clocks = <&uart_sclk>;
274 reg-shift = <2>;
275 reg-io-width = <4>;
276 status = "disabled";
277 };
278
279 dmac0: dma-controller@ffefc00000 {
280 compatible = "snps,axi-dma-1.01a";
281 reg = <0xff 0xefc00000 0x0 0x1000>;
282 interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
283 clocks = <&apb_clk>, <&apb_clk>;
284 clock-names = "core-clk", "cfgr-clk";
285 #dma-cells = <1>;
286 dma-channels = <4>;
287 snps,block-size = <65536 65536 65536 65536>;
288 snps,priority = <0 1 2 3>;
289 snps,dma-masters = <1>;
290 snps,data-width = <4>;
291 snps,axi-max-burst-len = <16>;
292 status = "disabled";
293 };
294
295 timer0: timer@ffefc32000 {
296 compatible = "snps,dw-apb-timer";
297 reg = <0xff 0xefc32000 0x0 0x14>;
298 clocks = <&apb_clk>;
299 clock-names = "timer";
300 interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
301 status = "disabled";
302 };
303
304 timer1: timer@ffefc32014 {
305 compatible = "snps,dw-apb-timer";
306 reg = <0xff 0xefc32014 0x0 0x14>;
307 clocks = <&apb_clk>;
308 clock-names = "timer";
309 interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
310 status = "disabled";
311 };
312
313 timer2: timer@ffefc32028 {
314 compatible = "snps,dw-apb-timer";
315 reg = <0xff 0xefc32028 0x0 0x14>;
316 clocks = <&apb_clk>;
317 clock-names = "timer";
318 interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
319 status = "disabled";
320 };
321
322 timer3: timer@ffefc3203c {
323 compatible = "snps,dw-apb-timer";
324 reg = <0xff 0xefc3203c 0x0 0x14>;
325 clocks = <&apb_clk>;
326 clock-names = "timer";
327 interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
328 status = "disabled";
329 };
330
331 uart4: serial@fff7f08000 {
332 compatible = "snps,dw-apb-uart";
333 reg = <0xff 0xf7f08000 0x0 0x4000>;
334 interrupts = <40 IRQ_TYPE_LEVEL_HIGH>;
335 clocks = <&uart_sclk>;
336 reg-shift = <2>;
337 reg-io-width = <4>;
338 status = "disabled";
339 };
340
341 uart5: serial@fff7f0c000 {
342 compatible = "snps,dw-apb-uart";
343 reg = <0xff 0xf7f0c000 0x0 0x4000>;
344 interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
345 clocks = <&uart_sclk>;
346 reg-shift = <2>;
347 reg-io-width = <4>;
348 status = "disabled";
349 };
350
351 timer4: timer@ffffc33000 {
352 compatible = "snps,dw-apb-timer";
353 reg = <0xff 0xffc33000 0x0 0x14>;
354 clocks = <&apb_clk>;
355 clock-names = "timer";
356 interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
357 status = "disabled";
358 };
359
360 timer5: timer@ffffc33014 {
361 compatible = "snps,dw-apb-timer";
362 reg = <0xff 0xffc33014 0x0 0x14>;
363 clocks = <&apb_clk>;
364 clock-names = "timer";
365 interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;
366 status = "disabled";
367 };
368
369 timer6: timer@ffffc33028 {
370 compatible = "snps,dw-apb-timer";
371 reg = <0xff 0xffc33028 0x0 0x14>;
372 clocks = <&apb_clk>;
373 clock-names = "timer";
374 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
375 status = "disabled";
376 };
377
378 timer7: timer@ffffc3303c {
379 compatible = "snps,dw-apb-timer";
380 reg = <0xff 0xffc3303c 0x0 0x14>;
381 clocks = <&apb_clk>;
382 clock-names = "timer";
383 interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
384 status = "disabled";
385 };
386
387 ao_gpio0: gpio@fffff41000 {
388 compatible = "snps,dw-apb-gpio";
389 reg = <0xff 0xfff41000 0x0 0x1000>;
390 #address-cells = <1>;
391 #size-cells = <0>;
392
393 porte: gpio-controller@0 {
394 compatible = "snps,dw-apb-gpio-port";
395 gpio-controller;
396 #gpio-cells = <2>;
397 ngpios = <32>;
398 reg = <0>;
399 interrupt-controller;
400 #interrupt-cells = <2>;
401 interrupts = <76 IRQ_TYPE_LEVEL_HIGH>;
402 };
403 };
404
405 ao_gpio1: gpio@fffff52000 {
406 compatible = "snps,dw-apb-gpio";
407 reg = <0xff 0xfff52000 0x0 0x1000>;
408 #address-cells = <1>;
409 #size-cells = <0>;
410
411 portf: gpio-controller@0 {
412 compatible = "snps,dw-apb-gpio-port";
413 gpio-controller;
414 #gpio-cells = <2>;
415 ngpios = <32>;
416 reg = <0>;
417 interrupt-controller;
418 #interrupt-cells = <2>;
419 interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
420 };
421 };
422 };
423};