1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Copyright (C) 2021 Alibaba Group Holding Limited.
4 * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
7 #include <dt-bindings/interrupt-controller/irq.h>
10 compatible = "thead,th1520";
17 timebase-frequency = <3000000>;
20 compatible = "thead,c910", "riscv";
22 riscv,isa = "rv64imafdc";
24 i-cache-block-size = <64>;
25 i-cache-size = <65536>;
27 d-cache-block-size = <64>;
28 d-cache-size = <65536>;
30 next-level-cache = <&l2_cache>;
31 mmu-type = "riscv,sv39";
33 cpu0_intc: interrupt-controller {
34 compatible = "riscv,cpu-intc";
36 #interrupt-cells = <1>;
41 compatible = "thead,c910", "riscv";
43 riscv,isa = "rv64imafdc";
45 i-cache-block-size = <64>;
46 i-cache-size = <65536>;
48 d-cache-block-size = <64>;
49 d-cache-size = <65536>;
51 next-level-cache = <&l2_cache>;
52 mmu-type = "riscv,sv39";
54 cpu1_intc: interrupt-controller {
55 compatible = "riscv,cpu-intc";
57 #interrupt-cells = <1>;
62 compatible = "thead,c910", "riscv";
64 riscv,isa = "rv64imafdc";
66 i-cache-block-size = <64>;
67 i-cache-size = <65536>;
69 d-cache-block-size = <64>;
70 d-cache-size = <65536>;
72 next-level-cache = <&l2_cache>;
73 mmu-type = "riscv,sv39";
75 cpu2_intc: interrupt-controller {
76 compatible = "riscv,cpu-intc";
78 #interrupt-cells = <1>;
83 compatible = "thead,c910", "riscv";
85 riscv,isa = "rv64imafdc";
87 i-cache-block-size = <64>;
88 i-cache-size = <65536>;
90 d-cache-block-size = <64>;
91 d-cache-size = <65536>;
93 next-level-cache = <&l2_cache>;
94 mmu-type = "riscv,sv39";
96 cpu3_intc: interrupt-controller {
97 compatible = "riscv,cpu-intc";
99 #interrupt-cells = <1>;
104 compatible = "cache";
105 cache-block-size = <64>;
107 cache-size = <1048576>;
114 compatible = "fixed-clock";
115 clock-output-names = "osc_24m";
119 osc_32k: 32k-oscillator {
120 compatible = "fixed-clock";
121 clock-output-names = "osc_32k";
125 apb_clk: apb-clk-clock {
126 compatible = "fixed-clock";
127 clock-output-names = "apb_clk";
131 uart_sclk: uart-sclk-clock {
132 compatible = "fixed-clock";
133 clock-output-names = "uart_sclk";
138 compatible = "simple-bus";
139 interrupt-parent = <&plic>;
140 #address-cells = <2>;
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>;
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>;
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>;
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>;
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>;
197 gpio2: gpio@ffe7f34000 {
198 compatible = "snps,dw-apb-gpio";
199 reg = <0xff 0xe7f34000 0x0 0x1000>;
200 #address-cells = <1>;
203 portc: gpio-controller@0 {
204 compatible = "snps,dw-apb-gpio-port";
209 interrupt-controller;
210 #interrupt-cells = <2>;
211 interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
215 gpio3: gpio@ffe7f38000 {
216 compatible = "snps,dw-apb-gpio";
217 reg = <0xff 0xe7f38000 0x0 0x1000>;
218 #address-cells = <1>;
221 portd: gpio-controller@0 {
222 compatible = "snps,dw-apb-gpio-port";
227 interrupt-controller;
228 #interrupt-cells = <2>;
229 interrupts = <59 IRQ_TYPE_LEVEL_HIGH>;
233 gpio0: gpio@ffec005000 {
234 compatible = "snps,dw-apb-gpio";
235 reg = <0xff 0xec005000 0x0 0x1000>;
236 #address-cells = <1>;
239 porta: gpio-controller@0 {
240 compatible = "snps,dw-apb-gpio-port";
245 interrupt-controller;
246 #interrupt-cells = <2>;
247 interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
251 gpio1: gpio@ffec006000 {
252 compatible = "snps,dw-apb-gpio";
253 reg = <0xff 0xec006000 0x0 0x1000>;
254 #address-cells = <1>;
257 portb: gpio-controller@0 {
258 compatible = "snps,dw-apb-gpio-port";
263 interrupt-controller;
264 #interrupt-cells = <2>;
265 interrupts = <57 IRQ_TYPE_LEVEL_HIGH>;
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>;
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";
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>;
295 timer0: timer@ffefc32000 {
296 compatible = "snps,dw-apb-timer";
297 reg = <0xff 0xefc32000 0x0 0x14>;
299 clock-names = "timer";
300 interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
304 timer1: timer@ffefc32014 {
305 compatible = "snps,dw-apb-timer";
306 reg = <0xff 0xefc32014 0x0 0x14>;
308 clock-names = "timer";
309 interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
313 timer2: timer@ffefc32028 {
314 compatible = "snps,dw-apb-timer";
315 reg = <0xff 0xefc32028 0x0 0x14>;
317 clock-names = "timer";
318 interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
322 timer3: timer@ffefc3203c {
323 compatible = "snps,dw-apb-timer";
324 reg = <0xff 0xefc3203c 0x0 0x14>;
326 clock-names = "timer";
327 interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
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>;
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>;
351 timer4: timer@ffffc33000 {
352 compatible = "snps,dw-apb-timer";
353 reg = <0xff 0xffc33000 0x0 0x14>;
355 clock-names = "timer";
356 interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
360 timer5: timer@ffffc33014 {
361 compatible = "snps,dw-apb-timer";
362 reg = <0xff 0xffc33014 0x0 0x14>;
364 clock-names = "timer";
365 interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;
369 timer6: timer@ffffc33028 {
370 compatible = "snps,dw-apb-timer";
371 reg = <0xff 0xffc33028 0x0 0x14>;
373 clock-names = "timer";
374 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
378 timer7: timer@ffffc3303c {
379 compatible = "snps,dw-apb-timer";
380 reg = <0xff 0xffc3303c 0x0 0x14>;
382 clock-names = "timer";
383 interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
387 ao_gpio0: gpio@fffff41000 {
388 compatible = "snps,dw-apb-gpio";
389 reg = <0xff 0xfff41000 0x0 0x1000>;
390 #address-cells = <1>;
393 porte: gpio-controller@0 {
394 compatible = "snps,dw-apb-gpio-port";
399 interrupt-controller;
400 #interrupt-cells = <2>;
401 interrupts = <76 IRQ_TYPE_LEVEL_HIGH>;
405 ao_gpio1: gpio@fffff52000 {
406 compatible = "snps,dw-apb-gpio";
407 reg = <0xff 0xfff52000 0x0 0x1000>;
408 #address-cells = <1>;
411 portf: gpio-controller@0 {
412 compatible = "snps,dw-apb-gpio-port";
417 interrupt-controller;
418 #interrupt-cells = <2>;
419 interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;