xref: /linux/scripts/dtc/include-prefixes/riscv/eswin/eic7700.dtsi (revision a8253f807760e9c80eada9e5354e1240ccf325f9)
1*3329e2f3SMin Lin// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*3329e2f3SMin Lin/*
3*3329e2f3SMin Lin * Copyright (c) 2024 Beijing ESWIN Computing Technology Co., Ltd.
4*3329e2f3SMin Lin */
5*3329e2f3SMin Lin
6*3329e2f3SMin Lin/dts-v1/;
7*3329e2f3SMin Lin
8*3329e2f3SMin Lin/ {
9*3329e2f3SMin Lin	#address-cells = <2>;
10*3329e2f3SMin Lin	#size-cells = <2>;
11*3329e2f3SMin Lin
12*3329e2f3SMin Lin	cpus {
13*3329e2f3SMin Lin		#address-cells = <1>;
14*3329e2f3SMin Lin		#size-cells = <0>;
15*3329e2f3SMin Lin		timebase-frequency = <1000000>;
16*3329e2f3SMin Lin
17*3329e2f3SMin Lin		cpu0: cpu@0 {
18*3329e2f3SMin Lin			compatible = "sifive,p550", "riscv";
19*3329e2f3SMin Lin			device_type = "cpu";
20*3329e2f3SMin Lin			d-cache-block-size = <64>;
21*3329e2f3SMin Lin			d-cache-sets = <128>;
22*3329e2f3SMin Lin			d-cache-size = <32768>;
23*3329e2f3SMin Lin			d-tlb-sets = <1>;
24*3329e2f3SMin Lin			d-tlb-size = <32>;
25*3329e2f3SMin Lin			i-cache-block-size = <64>;
26*3329e2f3SMin Lin			i-cache-sets = <128>;
27*3329e2f3SMin Lin			i-cache-size = <32768>;
28*3329e2f3SMin Lin			i-tlb-sets = <1>;
29*3329e2f3SMin Lin			i-tlb-size = <32>;
30*3329e2f3SMin Lin			mmu-type = "riscv,sv48";
31*3329e2f3SMin Lin			next-level-cache = <&l2_cache_0>;
32*3329e2f3SMin Lin			reg = <0x0>;
33*3329e2f3SMin Lin			riscv,isa-base = "rv64i";
34*3329e2f3SMin Lin			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "sscofpmf",
35*3329e2f3SMin Lin					       "zba", "zbb", "zicsr", "zifencei";
36*3329e2f3SMin Lin			tlb-split;
37*3329e2f3SMin Lin
38*3329e2f3SMin Lin			cpu0_intc: interrupt-controller {
39*3329e2f3SMin Lin				compatible = "riscv,cpu-intc";
40*3329e2f3SMin Lin				#interrupt-cells = <1>;
41*3329e2f3SMin Lin				interrupt-controller;
42*3329e2f3SMin Lin			};
43*3329e2f3SMin Lin		};
44*3329e2f3SMin Lin
45*3329e2f3SMin Lin		cpu1: cpu@1 {
46*3329e2f3SMin Lin			compatible = "sifive,p550", "riscv";
47*3329e2f3SMin Lin			d-cache-block-size = <64>;
48*3329e2f3SMin Lin			d-cache-sets = <128>;
49*3329e2f3SMin Lin			d-cache-size = <32768>;
50*3329e2f3SMin Lin			d-tlb-sets = <1>;
51*3329e2f3SMin Lin			d-tlb-size = <32>;
52*3329e2f3SMin Lin			device_type = "cpu";
53*3329e2f3SMin Lin			i-cache-block-size = <64>;
54*3329e2f3SMin Lin			i-cache-sets = <128>;
55*3329e2f3SMin Lin			i-cache-size = <32768>;
56*3329e2f3SMin Lin			i-tlb-sets = <1>;
57*3329e2f3SMin Lin			i-tlb-size = <32>;
58*3329e2f3SMin Lin			mmu-type = "riscv,sv48";
59*3329e2f3SMin Lin			next-level-cache = <&l2_cache_1>;
60*3329e2f3SMin Lin			reg = <0x1>;
61*3329e2f3SMin Lin			riscv,isa-base = "rv64i";
62*3329e2f3SMin Lin			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "sscofpmf",
63*3329e2f3SMin Lin					       "zba", "zbb", "zicsr", "zifencei";
64*3329e2f3SMin Lin			tlb-split;
65*3329e2f3SMin Lin
66*3329e2f3SMin Lin			cpu1_intc: interrupt-controller {
67*3329e2f3SMin Lin				compatible = "riscv,cpu-intc";
68*3329e2f3SMin Lin				#interrupt-cells = <1>;
69*3329e2f3SMin Lin				interrupt-controller;
70*3329e2f3SMin Lin			};
71*3329e2f3SMin Lin		};
72*3329e2f3SMin Lin
73*3329e2f3SMin Lin		cpu2: cpu@2 {
74*3329e2f3SMin Lin			compatible = "sifive,p550", "riscv";
75*3329e2f3SMin Lin			d-cache-block-size = <64>;
76*3329e2f3SMin Lin			d-cache-sets = <128>;
77*3329e2f3SMin Lin			d-cache-size = <32768>;
78*3329e2f3SMin Lin			d-tlb-sets = <1>;
79*3329e2f3SMin Lin			d-tlb-size = <32>;
80*3329e2f3SMin Lin			device_type = "cpu";
81*3329e2f3SMin Lin			i-cache-block-size = <64>;
82*3329e2f3SMin Lin			i-cache-sets = <128>;
83*3329e2f3SMin Lin			i-cache-size = <32768>;
84*3329e2f3SMin Lin			i-tlb-sets = <1>;
85*3329e2f3SMin Lin			i-tlb-size = <32>;
86*3329e2f3SMin Lin			mmu-type = "riscv,sv48";
87*3329e2f3SMin Lin			next-level-cache = <&l2_cache_2>;
88*3329e2f3SMin Lin			reg = <0x2>;
89*3329e2f3SMin Lin			riscv,isa-base = "rv64i";
90*3329e2f3SMin Lin			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "sscofpmf",
91*3329e2f3SMin Lin					       "zba", "zbb", "zicsr", "zifencei";
92*3329e2f3SMin Lin			tlb-split;
93*3329e2f3SMin Lin
94*3329e2f3SMin Lin			cpu2_intc: interrupt-controller {
95*3329e2f3SMin Lin				compatible = "riscv,cpu-intc";
96*3329e2f3SMin Lin				#interrupt-cells = <1>;
97*3329e2f3SMin Lin				interrupt-controller;
98*3329e2f3SMin Lin			};
99*3329e2f3SMin Lin		};
100*3329e2f3SMin Lin
101*3329e2f3SMin Lin		cpu3: cpu@3 {
102*3329e2f3SMin Lin			compatible = "sifive,p550", "riscv";
103*3329e2f3SMin Lin			d-cache-block-size = <64>;
104*3329e2f3SMin Lin			d-cache-sets = <128>;
105*3329e2f3SMin Lin			d-cache-size = <32768>;
106*3329e2f3SMin Lin			d-tlb-sets = <1>;
107*3329e2f3SMin Lin			d-tlb-size = <32>;
108*3329e2f3SMin Lin			device_type = "cpu";
109*3329e2f3SMin Lin			i-cache-block-size = <64>;
110*3329e2f3SMin Lin			i-cache-sets = <128>;
111*3329e2f3SMin Lin			i-cache-size = <32768>;
112*3329e2f3SMin Lin			i-tlb-sets = <1>;
113*3329e2f3SMin Lin			i-tlb-size = <32>;
114*3329e2f3SMin Lin			mmu-type = "riscv,sv48";
115*3329e2f3SMin Lin			next-level-cache = <&l2_cache_3>;
116*3329e2f3SMin Lin			reg = <0x3>;
117*3329e2f3SMin Lin			riscv,isa-base = "rv64i";
118*3329e2f3SMin Lin			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "sscofpmf",
119*3329e2f3SMin Lin					       "zba", "zbb", "zicsr", "zifencei";
120*3329e2f3SMin Lin			tlb-split;
121*3329e2f3SMin Lin
122*3329e2f3SMin Lin			cpu3_intc: interrupt-controller {
123*3329e2f3SMin Lin				compatible = "riscv,cpu-intc";
124*3329e2f3SMin Lin				#interrupt-cells = <1>;
125*3329e2f3SMin Lin				interrupt-controller;
126*3329e2f3SMin Lin			};
127*3329e2f3SMin Lin		};
128*3329e2f3SMin Lin
129*3329e2f3SMin Lin		l2_cache_0: l2-cache0 {
130*3329e2f3SMin Lin			compatible = "cache";
131*3329e2f3SMin Lin			cache-block-size = <64>;
132*3329e2f3SMin Lin			cache-level = <2>;
133*3329e2f3SMin Lin			cache-sets = <512>;
134*3329e2f3SMin Lin			cache-size = <262144>;
135*3329e2f3SMin Lin			cache-unified;
136*3329e2f3SMin Lin			next-level-cache = <&ccache>;
137*3329e2f3SMin Lin		};
138*3329e2f3SMin Lin
139*3329e2f3SMin Lin		l2_cache_1: l2-cache1 {
140*3329e2f3SMin Lin			compatible = "cache";
141*3329e2f3SMin Lin			cache-block-size = <64>;
142*3329e2f3SMin Lin			cache-level = <2>;
143*3329e2f3SMin Lin			cache-sets = <512>;
144*3329e2f3SMin Lin			cache-size = <262144>;
145*3329e2f3SMin Lin			cache-unified;
146*3329e2f3SMin Lin			next-level-cache = <&ccache>;
147*3329e2f3SMin Lin		};
148*3329e2f3SMin Lin
149*3329e2f3SMin Lin		l2_cache_2: l2-cache2 {
150*3329e2f3SMin Lin			compatible = "cache";
151*3329e2f3SMin Lin			cache-block-size = <64>;
152*3329e2f3SMin Lin			cache-level = <2>;
153*3329e2f3SMin Lin			cache-sets = <512>;
154*3329e2f3SMin Lin			cache-size = <262144>;
155*3329e2f3SMin Lin			cache-unified;
156*3329e2f3SMin Lin			next-level-cache = <&ccache>;
157*3329e2f3SMin Lin		};
158*3329e2f3SMin Lin
159*3329e2f3SMin Lin		l2_cache_3: l2-cache3 {
160*3329e2f3SMin Lin			compatible = "cache";
161*3329e2f3SMin Lin			cache-block-size = <64>;
162*3329e2f3SMin Lin			cache-level = <2>;
163*3329e2f3SMin Lin			cache-sets = <512>;
164*3329e2f3SMin Lin			cache-size = <262144>;
165*3329e2f3SMin Lin			cache-unified;
166*3329e2f3SMin Lin			next-level-cache = <&ccache>;
167*3329e2f3SMin Lin		};
168*3329e2f3SMin Lin	};
169*3329e2f3SMin Lin
170*3329e2f3SMin Lin	pmu {
171*3329e2f3SMin Lin		compatible = "riscv,pmu";
172*3329e2f3SMin Lin		riscv,event-to-mhpmcounters =
173*3329e2f3SMin Lin				<0x00001 0x00001 0x00000001>,
174*3329e2f3SMin Lin				<0x00002 0x00002 0x00000004>,
175*3329e2f3SMin Lin				<0x00004 0x00006 0x00000078>,
176*3329e2f3SMin Lin				<0x10009 0x10009 0x00000078>,
177*3329e2f3SMin Lin				<0x10019 0x10019 0x00000078>,
178*3329e2f3SMin Lin				<0x10021 0x10021 0x00000078>;
179*3329e2f3SMin Lin		riscv,event-to-mhpmevent =
180*3329e2f3SMin Lin				<0x00004 0x00000000 0x00000202>,
181*3329e2f3SMin Lin				<0x00005 0x00000000 0x00004000>,
182*3329e2f3SMin Lin				<0x00006 0x00000000 0x00002001>,
183*3329e2f3SMin Lin				<0x10009 0x00000000 0x00000102>,
184*3329e2f3SMin Lin				<0x10019 0x00000000 0x00001002>,
185*3329e2f3SMin Lin				<0x10021 0x00000000 0x00000802>;
186*3329e2f3SMin Lin		riscv,raw-event-to-mhpmcounters =
187*3329e2f3SMin Lin				<0x00000000 0x00000000 0xffffffff 0xfc0000ff 0x00000078>,
188*3329e2f3SMin Lin				<0x00000000 0x00000001 0xffffffff 0xfffe07ff 0x00000078>,
189*3329e2f3SMin Lin				<0x00000000 0x00000002 0xffffffff 0xfffe00ff 0x00000078>,
190*3329e2f3SMin Lin				<0x00000000 0x00000003 0xfffffffc 0x000000ff 0x00000078>,
191*3329e2f3SMin Lin				<0x00000000 0x00000004 0xffffffc0 0x000000ff 0x00000078>,
192*3329e2f3SMin Lin				<0x00000000 0x00000005 0xffffffff 0xfffffdff 0x00000078>,
193*3329e2f3SMin Lin				<0x00000000 0x00000006 0xfffffe00 0x110204ff 0x00000078>,
194*3329e2f3SMin Lin				<0x00000000 0x00000007 0xffffffff 0xf00000ff 0x00000078>,
195*3329e2f3SMin Lin				<0x00000000 0x00000008 0xfffffe04 0x000000ff 0x00000078>,
196*3329e2f3SMin Lin				<0x00000000 0x00000009 0xffffffff 0xffffc0ff 0x00000078>,
197*3329e2f3SMin Lin				<0x00000000 0x0000000a 0xffffffff 0xf00000ff 0x00000078>,
198*3329e2f3SMin Lin				<0x00000000 0x0000000b 0xffffffff 0xfffffcff 0x00000078>,
199*3329e2f3SMin Lin				<0x00000000 0x0000000c 0xfffffff0 0x000000ff 0x00000078>,
200*3329e2f3SMin Lin				<0x00000000 0x0000000d 0xffffffff 0x800000ff 0x00000078>,
201*3329e2f3SMin Lin				<0x00000000 0x0000000e 0xffffffff 0xf80000ff 0x00000078>,
202*3329e2f3SMin Lin				<0x00000000 0x0000000f 0xfffffffc 0x000000ff 0x00000078>;
203*3329e2f3SMin Lin	};
204*3329e2f3SMin Lin
205*3329e2f3SMin Lin	soc {
206*3329e2f3SMin Lin		compatible = "simple-bus";
207*3329e2f3SMin Lin		ranges;
208*3329e2f3SMin Lin		interrupt-parent = <&plic>;
209*3329e2f3SMin Lin		#address-cells = <2>;
210*3329e2f3SMin Lin		#size-cells = <2>;
211*3329e2f3SMin Lin		dma-noncoherent;
212*3329e2f3SMin Lin
213*3329e2f3SMin Lin		clint: timer@2000000 {
214*3329e2f3SMin Lin			compatible = "eswin,eic7700-clint", "sifive,clint0";
215*3329e2f3SMin Lin			reg = <0x0 0x02000000 0x0 0x10000>;
216*3329e2f3SMin Lin			interrupts-extended =
217*3329e2f3SMin Lin				<&cpu0_intc 3>, <&cpu0_intc 7>,
218*3329e2f3SMin Lin				<&cpu1_intc 3>, <&cpu1_intc 7>,
219*3329e2f3SMin Lin				<&cpu2_intc 3>, <&cpu2_intc 7>,
220*3329e2f3SMin Lin				<&cpu3_intc 3>, <&cpu3_intc 7>;
221*3329e2f3SMin Lin		};
222*3329e2f3SMin Lin
223*3329e2f3SMin Lin		ccache: cache-controller@2010000 {
224*3329e2f3SMin Lin			compatible = "eswin,eic7700-l3-cache", "sifive,ccache0", "cache";
225*3329e2f3SMin Lin			reg = <0x0 0x2010000 0x0 0x4000>;
226*3329e2f3SMin Lin			interrupts = <1>, <3>, <4>, <2>;
227*3329e2f3SMin Lin			cache-block-size = <64>;
228*3329e2f3SMin Lin			cache-level = <3>;
229*3329e2f3SMin Lin			cache-sets = <4096>;
230*3329e2f3SMin Lin			cache-size = <4194304>;
231*3329e2f3SMin Lin			cache-unified;
232*3329e2f3SMin Lin		};
233*3329e2f3SMin Lin
234*3329e2f3SMin Lin		plic: interrupt-controller@c000000 {
235*3329e2f3SMin Lin			compatible = "eswin,eic7700-plic", "sifive,plic-1.0.0";
236*3329e2f3SMin Lin			reg = <0x0 0xc000000 0x0 0x4000000>;
237*3329e2f3SMin Lin			interrupt-controller;
238*3329e2f3SMin Lin			interrupts-extended =
239*3329e2f3SMin Lin				<&cpu0_intc 11>, <&cpu0_intc 9>,
240*3329e2f3SMin Lin				<&cpu1_intc 11>, <&cpu1_intc 9>,
241*3329e2f3SMin Lin				<&cpu2_intc 11>, <&cpu2_intc 9>,
242*3329e2f3SMin Lin				<&cpu3_intc 11>, <&cpu3_intc 9>;
243*3329e2f3SMin Lin			riscv,ndev = <520>;
244*3329e2f3SMin Lin			#address-cells = <0>;
245*3329e2f3SMin Lin			#interrupt-cells = <1>;
246*3329e2f3SMin Lin		};
247*3329e2f3SMin Lin
248*3329e2f3SMin Lin		uart0: serial@50900000 {
249*3329e2f3SMin Lin			compatible = "snps,dw-apb-uart";
250*3329e2f3SMin Lin			reg = <0x0 0x50900000 0x0 0x10000>;
251*3329e2f3SMin Lin			interrupts = <100>;
252*3329e2f3SMin Lin			clock-frequency = <200000000>;
253*3329e2f3SMin Lin			reg-io-width = <4>;
254*3329e2f3SMin Lin			reg-shift = <2>;
255*3329e2f3SMin Lin			status = "disabled";
256*3329e2f3SMin Lin		};
257*3329e2f3SMin Lin
258*3329e2f3SMin Lin		uart1: serial@50910000 {
259*3329e2f3SMin Lin			compatible = "snps,dw-apb-uart";
260*3329e2f3SMin Lin			reg = <0x0 0x50910000 0x0 0x10000>;
261*3329e2f3SMin Lin			interrupts = <101>;
262*3329e2f3SMin Lin			clock-frequency = <200000000>;
263*3329e2f3SMin Lin			reg-io-width = <4>;
264*3329e2f3SMin Lin			reg-shift = <2>;
265*3329e2f3SMin Lin			status = "disabled";
266*3329e2f3SMin Lin		};
267*3329e2f3SMin Lin
268*3329e2f3SMin Lin		uart2: serial@50920000 {
269*3329e2f3SMin Lin			compatible = "snps,dw-apb-uart";
270*3329e2f3SMin Lin			reg = <0x0 0x50920000 0x0 0x10000>;
271*3329e2f3SMin Lin			interrupts = <102>;
272*3329e2f3SMin Lin			clock-frequency = <200000000>;
273*3329e2f3SMin Lin			reg-io-width = <4>;
274*3329e2f3SMin Lin			reg-shift = <2>;
275*3329e2f3SMin Lin			status = "disabled";
276*3329e2f3SMin Lin		};
277*3329e2f3SMin Lin
278*3329e2f3SMin Lin		uart3: serial@50930000 {
279*3329e2f3SMin Lin			compatible = "snps,dw-apb-uart";
280*3329e2f3SMin Lin			reg = <0x0 0x50930000 0x0 0x10000>;
281*3329e2f3SMin Lin			interrupts = <103>;
282*3329e2f3SMin Lin			clock-frequency = <200000000>;
283*3329e2f3SMin Lin			reg-io-width = <4>;
284*3329e2f3SMin Lin			reg-shift = <2>;
285*3329e2f3SMin Lin			status = "disabled";
286*3329e2f3SMin Lin		};
287*3329e2f3SMin Lin
288*3329e2f3SMin Lin		uart4: serial@50940000 {
289*3329e2f3SMin Lin			compatible = "snps,dw-apb-uart";
290*3329e2f3SMin Lin			reg = <0x0 0x50940000 0x0 0x10000>;
291*3329e2f3SMin Lin			interrupts = <104>;
292*3329e2f3SMin Lin			clock-frequency = <200000000>;
293*3329e2f3SMin Lin			reg-io-width = <4>;
294*3329e2f3SMin Lin			reg-shift = <2>;
295*3329e2f3SMin Lin			status = "disabled";
296*3329e2f3SMin Lin		};
297*3329e2f3SMin Lin
298*3329e2f3SMin Lin		gpio@51600000 {
299*3329e2f3SMin Lin			compatible = "snps,dw-apb-gpio";
300*3329e2f3SMin Lin			reg = <0x0 0x51600000 0x0 0x80>;
301*3329e2f3SMin Lin			#address-cells = <1>;
302*3329e2f3SMin Lin			#size-cells = <0>;
303*3329e2f3SMin Lin
304*3329e2f3SMin Lin			gpioA: gpio-port@0 {
305*3329e2f3SMin Lin				compatible = "snps,dw-apb-gpio-port";
306*3329e2f3SMin Lin				reg = <0>;
307*3329e2f3SMin Lin				interrupt-controller;
308*3329e2f3SMin Lin				#interrupt-cells = <2>;
309*3329e2f3SMin Lin				interrupts =
310*3329e2f3SMin Lin					<303>, <304>, <305>, <306>, <307>, <308>, <309>,
311*3329e2f3SMin Lin					<310>, <311>, <312>, <313>, <314>, <315>, <316>,
312*3329e2f3SMin Lin					<317>, <318>, <319>, <320>, <321>, <322>, <323>,
313*3329e2f3SMin Lin					<324>, <325>, <326>, <327>, <328>, <329>, <330>,
314*3329e2f3SMin Lin					<331>, <332>, <333>, <334>;
315*3329e2f3SMin Lin				gpio-controller;
316*3329e2f3SMin Lin				ngpios = <32>;
317*3329e2f3SMin Lin				#gpio-cells = <2>;
318*3329e2f3SMin Lin			};
319*3329e2f3SMin Lin
320*3329e2f3SMin Lin			gpioB: gpio-port@1 {
321*3329e2f3SMin Lin				compatible = "snps,dw-apb-gpio-port";
322*3329e2f3SMin Lin				reg = <1>;
323*3329e2f3SMin Lin				gpio-controller;
324*3329e2f3SMin Lin				ngpios = <32>;
325*3329e2f3SMin Lin				#gpio-cells = <2>;
326*3329e2f3SMin Lin			};
327*3329e2f3SMin Lin
328*3329e2f3SMin Lin			gpioC: gpio-port@2 {
329*3329e2f3SMin Lin				compatible = "snps,dw-apb-gpio-port";
330*3329e2f3SMin Lin				reg = <2>;
331*3329e2f3SMin Lin				gpio-controller;
332*3329e2f3SMin Lin				ngpios = <32>;
333*3329e2f3SMin Lin				#gpio-cells = <2>;
334*3329e2f3SMin Lin			};
335*3329e2f3SMin Lin
336*3329e2f3SMin Lin			gpioD: gpio-port@3 {
337*3329e2f3SMin Lin				compatible = "snps,dw-apb-gpio-port";
338*3329e2f3SMin Lin				reg = <3>;
339*3329e2f3SMin Lin				gpio-controller;
340*3329e2f3SMin Lin				ngpios = <16>;
341*3329e2f3SMin Lin				#gpio-cells = <2>;
342*3329e2f3SMin Lin			};
343*3329e2f3SMin Lin		};
344*3329e2f3SMin Lin	};
345*3329e2f3SMin Lin};
346