Skip to content

Commit 77874eb

Browse files
pigmoralConchuOD
authored andcommitted
riscv: dts: Add initial Anlogic DR1V90 SoC device tree
DR1V90 is a FPSoC from Anlogic, which features a RISC-V core as the PS part and 94,464 LUTs for the PL part. The PS part integrates a Nuclei UX900 RISC-V core with 32KB L1 icache and 32KB L1 dcache. It also provides two "snps,dw-apb-uart" compatible UART controllers. Some basic information of the processor can be obtained by running a simple application from nuclei-sdk [1]: -----Nuclei RISC-V CPU Configuration Information----- MARCHID: 0xc900 MIMPID: 0x20300 ISA: RV64 A B C D F I M P S U MCFG: TEE ECC ECLIC PLIC PPI ILM DLM ICACHE DCACHE IREGION No-Safety-Mechanism DLEN=VLEN/2 ILM: 256 KB has-ecc DLM: 256 KB has-ecc ICACHE: 32 KB(set=256,way=2,lsize=64,ecc=1) DCACHE: 32 KB(set=256,way=2,lsize=64,ecc=1) TLB: MainTLB(set=32,way=2,entry=1,ecc=1) ITLB(entry=8) DTLB(entry=8) IREGION: 0x68000000 128 MB Unit Size Address INFO 64KB 0x68000000 DEBUG 64KB 0x68010000 ECLIC 64KB 0x68020000 TIMER 64KB 0x68030000 PLIC 64MB 0x6c000000 INFO-Detail: mpasize : 0 PPI: 0xf8000000 128 MB -----End of Nuclei CPU INFO----- Link: https://github.com/Nuclei-Software/nuclei-sdk/blob/master/application/baremetal/cpuinfo/main.c [1] Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
1 parent 9c96219 commit 77874eb

1 file changed

Lines changed: 100 additions & 0 deletions

File tree

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// SPDX-License-Identifier: GPL-2.0 OR MIT
2+
/*
3+
* Copyright (C) 2025 Junhui Liu <junhui.liu@pigmoral.tech>
4+
*/
5+
6+
/dts-v1/;
7+
/ {
8+
#address-cells = <2>;
9+
#size-cells = <2>;
10+
model = "Anlogic DR1V90";
11+
compatible = "anlogic,dr1v90";
12+
13+
cpus {
14+
#address-cells = <1>;
15+
#size-cells = <0>;
16+
timebase-frequency = <800000000>;
17+
18+
cpu@0 {
19+
compatible = "nuclei,ux900", "riscv";
20+
d-cache-block-size = <64>;
21+
d-cache-sets = <256>;
22+
d-cache-size = <32768>;
23+
device_type = "cpu";
24+
i-cache-block-size = <64>;
25+
i-cache-sets = <256>;
26+
i-cache-size = <32768>;
27+
mmu-type = "riscv,sv39";
28+
reg = <0>;
29+
riscv,isa-base = "rv64i";
30+
riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zbc",
31+
"zbkc", "zbs", "zicntr", "zicsr", "zifencei",
32+
"zihintpause", "zihpm";
33+
34+
cpu0_intc: interrupt-controller {
35+
compatible = "riscv,cpu-intc";
36+
#interrupt-cells = <1>;
37+
interrupt-controller;
38+
};
39+
};
40+
};
41+
42+
soc {
43+
compatible = "simple-bus";
44+
interrupt-parent = <&plic>;
45+
#address-cells = <2>;
46+
#size-cells = <2>;
47+
ranges;
48+
49+
aclint_mswi: interrupt-controller@68031000 {
50+
compatible = "anlogic,dr1v90-aclint-mswi", "nuclei,ux900-aclint-mswi";
51+
reg = <0x0 0x68031000 0x0 0x4000>;
52+
interrupts-extended = <&cpu0_intc 3>;
53+
};
54+
55+
aclint_mtimer: timer@68035000 {
56+
compatible = "anlogic,dr1v90-aclint-mtimer", "nuclei,ux900-aclint-mtimer";
57+
reg = <0x0 0x68035000 0x0 0x8000>;
58+
reg-names = "mtimecmp";
59+
interrupts-extended = <&cpu0_intc 7>;
60+
};
61+
62+
aclint_sswi: interrupt-controller@6803d000 {
63+
compatible = "anlogic,dr1v90-aclint-sswi", "nuclei,ux900-aclint-sswi";
64+
reg = <0x0 0x6803d000 0x0 0x3000>;
65+
#interrupt-cells = <0>;
66+
interrupt-controller;
67+
interrupts-extended = <&cpu0_intc 1>;
68+
};
69+
70+
plic: interrupt-controller@6c000000 {
71+
compatible = "anlogic,dr1v90-plic", "sifive,plic-1.0.0";
72+
reg = <0x0 0x6c000000 0x0 0x4000000>;
73+
#address-cells = <0>;
74+
#interrupt-cells = <1>;
75+
interrupt-controller;
76+
interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
77+
riscv,ndev = <150>;
78+
};
79+
80+
uart0: serial@f8400000 {
81+
compatible = "anlogic,dr1v90-uart", "snps,dw-apb-uart";
82+
reg = <0x0 0xf8400000 0x0 0x1000>;
83+
clock-frequency = <50000000>;
84+
interrupts = <71>;
85+
reg-io-width = <4>;
86+
reg-shift = <2>;
87+
status = "disabled";
88+
};
89+
90+
uart1: serial@f8401000 {
91+
compatible = "anlogic,dr1v90-uart", "snps,dw-apb-uart";
92+
reg = <0x0 0xf8401000 0x0 0x1000>;
93+
clock-frequency = <50000000>;
94+
interrupts = <72>;
95+
reg-io-width = <4>;
96+
reg-shift = <2>;
97+
status = "disabled";
98+
};
99+
};
100+
};

0 commit comments

Comments
 (0)