xref: /linux/arch/riscv/boot/dts/spacemit/k3.dtsi (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*56f37e39SGuodong Xu// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*56f37e39SGuodong Xu/*
3*56f37e39SGuodong Xu * Copyright (c) 2026 SpacemiT (Hangzhou) Technology Co. Ltd
4*56f37e39SGuodong Xu * Copyright (c) 2026 Guodong Xu <guodong@riscstar.com>
5*56f37e39SGuodong Xu */
6*56f37e39SGuodong Xu
7*56f37e39SGuodong Xu#include <dt-bindings/interrupt-controller/irq.h>
8*56f37e39SGuodong Xu
9*56f37e39SGuodong Xu/dts-v1/;
10*56f37e39SGuodong Xu
11*56f37e39SGuodong Xu/ {
12*56f37e39SGuodong Xu	#address-cells = <2>;
13*56f37e39SGuodong Xu	#size-cells = <2>;
14*56f37e39SGuodong Xu	model = "SpacemiT K3";
15*56f37e39SGuodong Xu	compatible = "spacemit,k3";
16*56f37e39SGuodong Xu
17*56f37e39SGuodong Xu	cpus: cpus {
18*56f37e39SGuodong Xu		#address-cells = <1>;
19*56f37e39SGuodong Xu		#size-cells = <0>;
20*56f37e39SGuodong Xu		timebase-frequency = <24000000>;
21*56f37e39SGuodong Xu
22*56f37e39SGuodong Xu		cpu_0: cpu@0 {
23*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
24*56f37e39SGuodong Xu			device_type = "cpu";
25*56f37e39SGuodong Xu			reg = <0>;
26*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
27*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
28*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
29*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
30*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
31*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
32*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
33*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
34*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
35*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
36*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
37*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
38*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
39*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
40*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
41*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
42*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
43*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
44*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
45*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
46*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
47*56f37e39SGuodong Xu			i-cache-block-size = <64>;
48*56f37e39SGuodong Xu			i-cache-size = <65536>;
49*56f37e39SGuodong Xu			i-cache-sets = <256>;
50*56f37e39SGuodong Xu			d-cache-block-size = <64>;
51*56f37e39SGuodong Xu			d-cache-size = <65536>;
52*56f37e39SGuodong Xu			d-cache-sets = <256>;
53*56f37e39SGuodong Xu			next-level-cache = <&l2_cache0>;
54*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
55*56f37e39SGuodong Xu
56*56f37e39SGuodong Xu			cpu0_intc: interrupt-controller {
57*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
58*56f37e39SGuodong Xu				#interrupt-cells = <1>;
59*56f37e39SGuodong Xu				interrupt-controller;
60*56f37e39SGuodong Xu			};
61*56f37e39SGuodong Xu		};
62*56f37e39SGuodong Xu
63*56f37e39SGuodong Xu		cpu_1: cpu@1 {
64*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
65*56f37e39SGuodong Xu			device_type = "cpu";
66*56f37e39SGuodong Xu			reg = <1>;
67*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
68*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
69*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
70*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
71*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
72*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
73*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
74*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
75*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
76*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
77*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
78*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
79*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
80*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
81*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
82*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
83*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
84*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
85*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
86*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
87*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
88*56f37e39SGuodong Xu			i-cache-block-size = <64>;
89*56f37e39SGuodong Xu			i-cache-size = <65536>;
90*56f37e39SGuodong Xu			i-cache-sets = <256>;
91*56f37e39SGuodong Xu			d-cache-block-size = <64>;
92*56f37e39SGuodong Xu			d-cache-size = <65536>;
93*56f37e39SGuodong Xu			d-cache-sets = <256>;
94*56f37e39SGuodong Xu			next-level-cache = <&l2_cache0>;
95*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
96*56f37e39SGuodong Xu
97*56f37e39SGuodong Xu			cpu1_intc: interrupt-controller {
98*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
99*56f37e39SGuodong Xu				#interrupt-cells = <1>;
100*56f37e39SGuodong Xu				interrupt-controller;
101*56f37e39SGuodong Xu			};
102*56f37e39SGuodong Xu		};
103*56f37e39SGuodong Xu
104*56f37e39SGuodong Xu		cpu_2: cpu@2 {
105*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
106*56f37e39SGuodong Xu			device_type = "cpu";
107*56f37e39SGuodong Xu			reg = <2>;
108*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
109*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
110*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
111*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
112*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
113*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
114*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
115*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
116*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
117*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
118*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
119*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
120*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
121*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
122*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
123*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
124*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
125*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
126*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
127*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
128*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
129*56f37e39SGuodong Xu			i-cache-block-size = <64>;
130*56f37e39SGuodong Xu			i-cache-size = <65536>;
131*56f37e39SGuodong Xu			i-cache-sets = <256>;
132*56f37e39SGuodong Xu			d-cache-block-size = <64>;
133*56f37e39SGuodong Xu			d-cache-size = <65536>;
134*56f37e39SGuodong Xu			d-cache-sets = <256>;
135*56f37e39SGuodong Xu			next-level-cache = <&l2_cache0>;
136*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
137*56f37e39SGuodong Xu
138*56f37e39SGuodong Xu			cpu2_intc: interrupt-controller {
139*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
140*56f37e39SGuodong Xu				#interrupt-cells = <1>;
141*56f37e39SGuodong Xu				interrupt-controller;
142*56f37e39SGuodong Xu			};
143*56f37e39SGuodong Xu		};
144*56f37e39SGuodong Xu
145*56f37e39SGuodong Xu		cpu_3: cpu@3 {
146*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
147*56f37e39SGuodong Xu			device_type = "cpu";
148*56f37e39SGuodong Xu			reg = <3>;
149*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
150*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
151*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
152*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
153*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
154*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
155*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
156*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
157*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
158*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
159*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
160*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
161*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
162*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
163*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
164*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
165*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
166*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
167*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
168*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
169*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
170*56f37e39SGuodong Xu			i-cache-block-size = <64>;
171*56f37e39SGuodong Xu			i-cache-size = <65536>;
172*56f37e39SGuodong Xu			i-cache-sets = <256>;
173*56f37e39SGuodong Xu			d-cache-block-size = <64>;
174*56f37e39SGuodong Xu			d-cache-size = <65536>;
175*56f37e39SGuodong Xu			d-cache-sets = <256>;
176*56f37e39SGuodong Xu			next-level-cache = <&l2_cache0>;
177*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
178*56f37e39SGuodong Xu
179*56f37e39SGuodong Xu			cpu3_intc: interrupt-controller {
180*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
181*56f37e39SGuodong Xu				#interrupt-cells = <1>;
182*56f37e39SGuodong Xu				interrupt-controller;
183*56f37e39SGuodong Xu			};
184*56f37e39SGuodong Xu		};
185*56f37e39SGuodong Xu
186*56f37e39SGuodong Xu		cpu_4: cpu@4 {
187*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
188*56f37e39SGuodong Xu			device_type = "cpu";
189*56f37e39SGuodong Xu			reg = <4>;
190*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
191*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
192*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
193*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
194*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
195*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
196*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
197*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
198*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
199*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
200*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
201*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
202*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
203*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
204*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
205*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
206*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
207*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
208*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
209*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
210*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
211*56f37e39SGuodong Xu			i-cache-block-size = <64>;
212*56f37e39SGuodong Xu			i-cache-size = <65536>;
213*56f37e39SGuodong Xu			i-cache-sets = <256>;
214*56f37e39SGuodong Xu			d-cache-block-size = <64>;
215*56f37e39SGuodong Xu			d-cache-size = <65536>;
216*56f37e39SGuodong Xu			d-cache-sets = <256>;
217*56f37e39SGuodong Xu			next-level-cache = <&l2_cache1>;
218*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
219*56f37e39SGuodong Xu
220*56f37e39SGuodong Xu			cpu4_intc: interrupt-controller {
221*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
222*56f37e39SGuodong Xu				#interrupt-cells = <1>;
223*56f37e39SGuodong Xu				interrupt-controller;
224*56f37e39SGuodong Xu			};
225*56f37e39SGuodong Xu		};
226*56f37e39SGuodong Xu
227*56f37e39SGuodong Xu		cpu_5: cpu@5 {
228*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
229*56f37e39SGuodong Xu			device_type = "cpu";
230*56f37e39SGuodong Xu			reg = <5>;
231*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
232*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
233*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
234*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
235*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
236*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
237*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
238*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
239*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
240*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
241*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
242*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
243*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
244*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
245*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
246*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
247*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
248*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
249*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
250*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
251*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
252*56f37e39SGuodong Xu			i-cache-block-size = <64>;
253*56f37e39SGuodong Xu			i-cache-size = <65536>;
254*56f37e39SGuodong Xu			i-cache-sets = <256>;
255*56f37e39SGuodong Xu			d-cache-block-size = <64>;
256*56f37e39SGuodong Xu			d-cache-size = <65536>;
257*56f37e39SGuodong Xu			d-cache-sets = <256>;
258*56f37e39SGuodong Xu			next-level-cache = <&l2_cache1>;
259*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
260*56f37e39SGuodong Xu
261*56f37e39SGuodong Xu			cpu5_intc: interrupt-controller {
262*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
263*56f37e39SGuodong Xu				#interrupt-cells = <1>;
264*56f37e39SGuodong Xu				interrupt-controller;
265*56f37e39SGuodong Xu			};
266*56f37e39SGuodong Xu		};
267*56f37e39SGuodong Xu
268*56f37e39SGuodong Xu		cpu_6: cpu@6 {
269*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
270*56f37e39SGuodong Xu			device_type = "cpu";
271*56f37e39SGuodong Xu			reg = <6>;
272*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
273*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
274*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
275*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
276*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
277*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
278*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
279*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
280*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
281*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
282*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
283*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
284*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
285*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
286*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
287*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
288*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
289*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
290*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
291*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
292*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
293*56f37e39SGuodong Xu			i-cache-block-size = <64>;
294*56f37e39SGuodong Xu			i-cache-size = <65536>;
295*56f37e39SGuodong Xu			i-cache-sets = <256>;
296*56f37e39SGuodong Xu			d-cache-block-size = <64>;
297*56f37e39SGuodong Xu			d-cache-size = <65536>;
298*56f37e39SGuodong Xu			d-cache-sets = <256>;
299*56f37e39SGuodong Xu			next-level-cache = <&l2_cache1>;
300*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
301*56f37e39SGuodong Xu
302*56f37e39SGuodong Xu			cpu6_intc: interrupt-controller {
303*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
304*56f37e39SGuodong Xu				#interrupt-cells = <1>;
305*56f37e39SGuodong Xu				interrupt-controller;
306*56f37e39SGuodong Xu			};
307*56f37e39SGuodong Xu		};
308*56f37e39SGuodong Xu
309*56f37e39SGuodong Xu		cpu_7: cpu@7 {
310*56f37e39SGuodong Xu			compatible = "spacemit,x100", "riscv";
311*56f37e39SGuodong Xu			device_type = "cpu";
312*56f37e39SGuodong Xu			reg = <7>;
313*56f37e39SGuodong Xu			riscv,isa-base = "rv64i";
314*56f37e39SGuodong Xu			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h",
315*56f37e39SGuodong Xu					       "sha", "shcounterenw", "shgatpa", "shtvala",
316*56f37e39SGuodong Xu					       "shvsatpa", "shvstvala", "shvstvecd", "smaia",
317*56f37e39SGuodong Xu					       "smstateen", "ssaia", "ssccptr", "sscofpmf",
318*56f37e39SGuodong Xu					       "sscounterenw", "ssnpm", "ssstateen", "sstc",
319*56f37e39SGuodong Xu					       "sstvala", "sstvecd", "ssu64xl", "svade",
320*56f37e39SGuodong Xu					       "svinval", "svnapot", "svpbmt", "za64rs",
321*56f37e39SGuodong Xu					       "zawrs", "zba", "zbb", "zbc", "zbs", "zca",
322*56f37e39SGuodong Xu					       "zcb", "zcd", "zcmop", "zfa", "zfbfmin",
323*56f37e39SGuodong Xu					       "zfh", "zfhmin", "zicbom", "zicbop", "zicboz",
324*56f37e39SGuodong Xu					       "ziccamoa", "ziccif", "zicclsm", "zicntr",
325*56f37e39SGuodong Xu					       "zicond", "zicsr", "zifencei", "zihintntl",
326*56f37e39SGuodong Xu					       "zihintpause", "zihpm", "zimop", "zkt", "zvbb",
327*56f37e39SGuodong Xu					       "zvbc", "zvfbfmin", "zvfbfwma", "zvfh",
328*56f37e39SGuodong Xu					       "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc",
329*56f37e39SGuodong Xu					       "zvkned", "zvkng", "zvknha", "zvknhb", "zvks",
330*56f37e39SGuodong Xu					       "zvksc", "zvksed", "zvksg", "zvksh", "zvkt";
331*56f37e39SGuodong Xu			riscv,cbom-block-size = <64>;
332*56f37e39SGuodong Xu			riscv,cbop-block-size = <64>;
333*56f37e39SGuodong Xu			riscv,cboz-block-size = <64>;
334*56f37e39SGuodong Xu			i-cache-block-size = <64>;
335*56f37e39SGuodong Xu			i-cache-size = <65536>;
336*56f37e39SGuodong Xu			i-cache-sets = <256>;
337*56f37e39SGuodong Xu			d-cache-block-size = <64>;
338*56f37e39SGuodong Xu			d-cache-size = <65536>;
339*56f37e39SGuodong Xu			d-cache-sets = <256>;
340*56f37e39SGuodong Xu			next-level-cache = <&l2_cache1>;
341*56f37e39SGuodong Xu			mmu-type = "riscv,sv39";
342*56f37e39SGuodong Xu
343*56f37e39SGuodong Xu			cpu7_intc: interrupt-controller {
344*56f37e39SGuodong Xu				compatible = "riscv,cpu-intc";
345*56f37e39SGuodong Xu				#interrupt-cells = <1>;
346*56f37e39SGuodong Xu				interrupt-controller;
347*56f37e39SGuodong Xu			};
348*56f37e39SGuodong Xu		};
349*56f37e39SGuodong Xu
350*56f37e39SGuodong Xu		l2_cache0: cache-controller-0 {
351*56f37e39SGuodong Xu			compatible = "cache";
352*56f37e39SGuodong Xu			cache-block-size = <64>;
353*56f37e39SGuodong Xu			cache-level = <2>;
354*56f37e39SGuodong Xu			cache-size = <4194304>;
355*56f37e39SGuodong Xu			cache-sets = <4096>;
356*56f37e39SGuodong Xu			cache-unified;
357*56f37e39SGuodong Xu		};
358*56f37e39SGuodong Xu
359*56f37e39SGuodong Xu		l2_cache1: cache-controller-1 {
360*56f37e39SGuodong Xu			compatible = "cache";
361*56f37e39SGuodong Xu			cache-block-size = <64>;
362*56f37e39SGuodong Xu			cache-level = <2>;
363*56f37e39SGuodong Xu			cache-size = <4194304>;
364*56f37e39SGuodong Xu			cache-sets = <4096>;
365*56f37e39SGuodong Xu			cache-unified;
366*56f37e39SGuodong Xu		};
367*56f37e39SGuodong Xu
368*56f37e39SGuodong Xu		cpu-map {
369*56f37e39SGuodong Xu			cluster0 {
370*56f37e39SGuodong Xu				core0 {
371*56f37e39SGuodong Xu					cpu = <&cpu_0>;
372*56f37e39SGuodong Xu				};
373*56f37e39SGuodong Xu				core1 {
374*56f37e39SGuodong Xu					cpu = <&cpu_1>;
375*56f37e39SGuodong Xu				};
376*56f37e39SGuodong Xu				core2 {
377*56f37e39SGuodong Xu					cpu = <&cpu_2>;
378*56f37e39SGuodong Xu				};
379*56f37e39SGuodong Xu				core3 {
380*56f37e39SGuodong Xu					cpu = <&cpu_3>;
381*56f37e39SGuodong Xu				};
382*56f37e39SGuodong Xu			};
383*56f37e39SGuodong Xu
384*56f37e39SGuodong Xu			cluster1 {
385*56f37e39SGuodong Xu				core0 {
386*56f37e39SGuodong Xu					cpu = <&cpu_4>;
387*56f37e39SGuodong Xu				};
388*56f37e39SGuodong Xu				core1 {
389*56f37e39SGuodong Xu					cpu = <&cpu_5>;
390*56f37e39SGuodong Xu				};
391*56f37e39SGuodong Xu				core2 {
392*56f37e39SGuodong Xu					cpu = <&cpu_6>;
393*56f37e39SGuodong Xu				};
394*56f37e39SGuodong Xu				core3 {
395*56f37e39SGuodong Xu					cpu = <&cpu_7>;
396*56f37e39SGuodong Xu				};
397*56f37e39SGuodong Xu			};
398*56f37e39SGuodong Xu		};
399*56f37e39SGuodong Xu	};
400*56f37e39SGuodong Xu
401*56f37e39SGuodong Xu	soc: soc {
402*56f37e39SGuodong Xu		compatible = "simple-bus";
403*56f37e39SGuodong Xu		interrupt-parent = <&saplic>;
404*56f37e39SGuodong Xu		#address-cells = <2>;
405*56f37e39SGuodong Xu		#size-cells = <2>;
406*56f37e39SGuodong Xu		dma-noncoherent;
407*56f37e39SGuodong Xu		ranges;
408*56f37e39SGuodong Xu
409*56f37e39SGuodong Xu		uart0: serial@d4017000 {
410*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
411*56f37e39SGuodong Xu			reg = <0x0 0xd4017000 0x0 0x100>;
412*56f37e39SGuodong Xu			reg-shift = <2>;
413*56f37e39SGuodong Xu			reg-io-width = <4>;
414*56f37e39SGuodong Xu			clock-frequency = <14700000>;
415*56f37e39SGuodong Xu			interrupts = <42 IRQ_TYPE_LEVEL_HIGH>;
416*56f37e39SGuodong Xu			status = "disabled";
417*56f37e39SGuodong Xu		};
418*56f37e39SGuodong Xu
419*56f37e39SGuodong Xu		uart2: serial@d4017100 {
420*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
421*56f37e39SGuodong Xu			reg = <0x0 0xd4017100 0x0 0x100>;
422*56f37e39SGuodong Xu			reg-shift = <2>;
423*56f37e39SGuodong Xu			reg-io-width = <4>;
424*56f37e39SGuodong Xu			clock-frequency = <14700000>;
425*56f37e39SGuodong Xu			interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
426*56f37e39SGuodong Xu			status = "disabled";
427*56f37e39SGuodong Xu		};
428*56f37e39SGuodong Xu
429*56f37e39SGuodong Xu		uart3: serial@d4017200 {
430*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
431*56f37e39SGuodong Xu			reg = <0x0 0xd4017200 0x0 0x100>;
432*56f37e39SGuodong Xu			reg-shift = <2>;
433*56f37e39SGuodong Xu			reg-io-width = <4>;
434*56f37e39SGuodong Xu			clock-frequency = <14700000>;
435*56f37e39SGuodong Xu			interrupts = <45 IRQ_TYPE_LEVEL_HIGH>;
436*56f37e39SGuodong Xu			status = "disabled";
437*56f37e39SGuodong Xu		};
438*56f37e39SGuodong Xu
439*56f37e39SGuodong Xu		uart4: serial@d4017300 {
440*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
441*56f37e39SGuodong Xu			reg = <0x0 0xd4017300 0x0 0x100>;
442*56f37e39SGuodong Xu			reg-shift = <2>;
443*56f37e39SGuodong Xu			reg-io-width = <4>;
444*56f37e39SGuodong Xu			clock-frequency = <14700000>;
445*56f37e39SGuodong Xu			interrupts = <46 IRQ_TYPE_LEVEL_HIGH>;
446*56f37e39SGuodong Xu			status = "disabled";
447*56f37e39SGuodong Xu		};
448*56f37e39SGuodong Xu
449*56f37e39SGuodong Xu		uart5: serial@d4017400 {
450*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
451*56f37e39SGuodong Xu			reg = <0x0 0xd4017400 0x0 0x100>;
452*56f37e39SGuodong Xu			reg-shift = <2>;
453*56f37e39SGuodong Xu			reg-io-width = <4>;
454*56f37e39SGuodong Xu			clock-frequency = <14700000>;
455*56f37e39SGuodong Xu			interrupts = <47 IRQ_TYPE_LEVEL_HIGH>;
456*56f37e39SGuodong Xu			status = "disabled";
457*56f37e39SGuodong Xu		};
458*56f37e39SGuodong Xu
459*56f37e39SGuodong Xu		uart6: serial@d4017500 {
460*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
461*56f37e39SGuodong Xu			reg = <0x0 0xd4017500 0x0 0x100>;
462*56f37e39SGuodong Xu			reg-shift = <2>;
463*56f37e39SGuodong Xu			reg-io-width = <4>;
464*56f37e39SGuodong Xu			clock-frequency = <14700000>;
465*56f37e39SGuodong Xu			interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
466*56f37e39SGuodong Xu			status = "disabled";
467*56f37e39SGuodong Xu		};
468*56f37e39SGuodong Xu
469*56f37e39SGuodong Xu		uart7: serial@d4017600 {
470*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
471*56f37e39SGuodong Xu			reg = <0x0 0xd4017600 0x0 0x100>;
472*56f37e39SGuodong Xu			reg-shift = <2>;
473*56f37e39SGuodong Xu			reg-io-width = <4>;
474*56f37e39SGuodong Xu			clock-frequency = <14700000>;
475*56f37e39SGuodong Xu			interrupts = <49 IRQ_TYPE_LEVEL_HIGH>;
476*56f37e39SGuodong Xu			status = "disabled";
477*56f37e39SGuodong Xu		};
478*56f37e39SGuodong Xu
479*56f37e39SGuodong Xu		uart8: serial@d4017700 {
480*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
481*56f37e39SGuodong Xu			reg = <0x0 0xd4017700 0x0 0x100>;
482*56f37e39SGuodong Xu			reg-shift = <2>;
483*56f37e39SGuodong Xu			reg-io-width = <4>;
484*56f37e39SGuodong Xu			clock-frequency = <14700000>;
485*56f37e39SGuodong Xu			interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
486*56f37e39SGuodong Xu			status = "disabled";
487*56f37e39SGuodong Xu		};
488*56f37e39SGuodong Xu
489*56f37e39SGuodong Xu		uart9: serial@d4017800 {
490*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
491*56f37e39SGuodong Xu			reg = <0x0 0xd4017800 0x0 0x100>;
492*56f37e39SGuodong Xu			reg-shift = <2>;
493*56f37e39SGuodong Xu			reg-io-width = <4>;
494*56f37e39SGuodong Xu			clock-frequency = <14700000>;
495*56f37e39SGuodong Xu			interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
496*56f37e39SGuodong Xu			status = "disabled";
497*56f37e39SGuodong Xu		};
498*56f37e39SGuodong Xu
499*56f37e39SGuodong Xu		uart10: serial@d401f000 {
500*56f37e39SGuodong Xu			compatible = "spacemit,k3-uart", "intel,xscale-uart";
501*56f37e39SGuodong Xu			reg = <0x0 0xd401f000 0x0 0x100>;
502*56f37e39SGuodong Xu			reg-shift = <2>;
503*56f37e39SGuodong Xu			reg-io-width = <4>;
504*56f37e39SGuodong Xu			clock-frequency = <14700000>;
505*56f37e39SGuodong Xu			interrupts = <281 IRQ_TYPE_LEVEL_HIGH>;
506*56f37e39SGuodong Xu			status = "disabled";
507*56f37e39SGuodong Xu		};
508*56f37e39SGuodong Xu
509*56f37e39SGuodong Xu		simsic: interrupt-controller@e0400000 {
510*56f37e39SGuodong Xu			compatible = "spacemit,k3-imsics", "riscv,imsics";
511*56f37e39SGuodong Xu			reg = <0x0 0xe0400000 0x0 0x200000>;
512*56f37e39SGuodong Xu			#interrupt-cells = <0>;
513*56f37e39SGuodong Xu			#msi-cells = <0>;
514*56f37e39SGuodong Xu			interrupt-controller;
515*56f37e39SGuodong Xu			interrupts-extended = <&cpu0_intc 9>, <&cpu1_intc 9>,
516*56f37e39SGuodong Xu					      <&cpu2_intc 9>, <&cpu3_intc 9>,
517*56f37e39SGuodong Xu					      <&cpu4_intc 9>, <&cpu5_intc 9>,
518*56f37e39SGuodong Xu					      <&cpu6_intc 9>, <&cpu7_intc 9>;
519*56f37e39SGuodong Xu			msi-controller;
520*56f37e39SGuodong Xu			riscv,guest-index-bits = <6>;
521*56f37e39SGuodong Xu			riscv,hart-index-bits = <4>;
522*56f37e39SGuodong Xu			riscv,num-guest-ids = <511>;
523*56f37e39SGuodong Xu			riscv,num-ids = <511>;
524*56f37e39SGuodong Xu		};
525*56f37e39SGuodong Xu
526*56f37e39SGuodong Xu		saplic: interrupt-controller@e0804000 {
527*56f37e39SGuodong Xu			compatible = "spacemit,k3-aplic", "riscv,aplic";
528*56f37e39SGuodong Xu			reg = <0x0 0xe0804000 0x0 0x4000>;
529*56f37e39SGuodong Xu			#interrupt-cells = <2>;
530*56f37e39SGuodong Xu			interrupt-controller;
531*56f37e39SGuodong Xu			msi-parent = <&simsic>;
532*56f37e39SGuodong Xu			riscv,num-sources = <512>;
533*56f37e39SGuodong Xu		};
534*56f37e39SGuodong Xu
535*56f37e39SGuodong Xu		clint: timer@e081c000 {
536*56f37e39SGuodong Xu			compatible = "spacemit,k3-clint", "sifive,clint0";
537*56f37e39SGuodong Xu			reg = <0x0 0xe081c000 0x0 0x4000>;
538*56f37e39SGuodong Xu			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
539*56f37e39SGuodong Xu					      <&cpu1_intc 3>, <&cpu1_intc 7>,
540*56f37e39SGuodong Xu					      <&cpu2_intc 3>, <&cpu2_intc 7>,
541*56f37e39SGuodong Xu					      <&cpu3_intc 3>, <&cpu3_intc 7>,
542*56f37e39SGuodong Xu					      <&cpu4_intc 3>, <&cpu4_intc 7>,
543*56f37e39SGuodong Xu					      <&cpu5_intc 3>, <&cpu5_intc 7>,
544*56f37e39SGuodong Xu					      <&cpu6_intc 3>, <&cpu6_intc 7>,
545*56f37e39SGuodong Xu					      <&cpu7_intc 3>, <&cpu7_intc 7>;
546*56f37e39SGuodong Xu		};
547*56f37e39SGuodong Xu
548*56f37e39SGuodong Xu		mimsic: interrupt-controller@f1000000 {
549*56f37e39SGuodong Xu			compatible = "spacemit,k3-imsics", "riscv,imsics";
550*56f37e39SGuodong Xu			reg = <0x0 0xf1000000 0x0 0x10000>;
551*56f37e39SGuodong Xu			#interrupt-cells = <0>;
552*56f37e39SGuodong Xu			#msi-cells = <0>;
553*56f37e39SGuodong Xu			interrupt-controller;
554*56f37e39SGuodong Xu			interrupts-extended = <&cpu0_intc 11>, <&cpu1_intc 11>,
555*56f37e39SGuodong Xu					      <&cpu2_intc 11>, <&cpu3_intc 11>,
556*56f37e39SGuodong Xu					      <&cpu4_intc 11>, <&cpu5_intc 11>,
557*56f37e39SGuodong Xu					      <&cpu6_intc 11>, <&cpu7_intc 11>;
558*56f37e39SGuodong Xu			msi-controller;
559*56f37e39SGuodong Xu			riscv,guest-index-bits = <6>;
560*56f37e39SGuodong Xu			riscv,hart-index-bits = <4>;
561*56f37e39SGuodong Xu			riscv,num-guest-ids = <511>;
562*56f37e39SGuodong Xu			riscv,num-ids = <511>;
563*56f37e39SGuodong Xu			status = "reserved";
564*56f37e39SGuodong Xu		};
565*56f37e39SGuodong Xu
566*56f37e39SGuodong Xu		maplic: interrupt-controller@f1800000 {
567*56f37e39SGuodong Xu			compatible = "spacemit,k3-aplic", "riscv,aplic";
568*56f37e39SGuodong Xu			reg = <0x0 0xf1800000 0x0 0x4000>;
569*56f37e39SGuodong Xu			#interrupt-cells = <2>;
570*56f37e39SGuodong Xu			interrupt-controller;
571*56f37e39SGuodong Xu			msi-parent = <&mimsic>;
572*56f37e39SGuodong Xu			riscv,children = <&saplic>;
573*56f37e39SGuodong Xu			riscv,delegation = <&saplic 1 512>;
574*56f37e39SGuodong Xu			riscv,num-sources = <512>;
575*56f37e39SGuodong Xu			status = "reserved";
576*56f37e39SGuodong Xu		};
577*56f37e39SGuodong Xu	};
578*56f37e39SGuodong Xu};
579