xref: /linux/arch/riscv/boot/dts/sifive/fu740-c000.dtsi (revision 57985788158a5a6b77612e531b9d89bcad06e47c)
1*57985788SYash Shah// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*57985788SYash Shah/* Copyright (c) 2020 SiFive, Inc */
3*57985788SYash Shah
4*57985788SYash Shah/dts-v1/;
5*57985788SYash Shah
6*57985788SYash Shah#include <dt-bindings/clock/sifive-fu740-prci.h>
7*57985788SYash Shah
8*57985788SYash Shah/ {
9*57985788SYash Shah	#address-cells = <2>;
10*57985788SYash Shah	#size-cells = <2>;
11*57985788SYash Shah	compatible = "sifive,fu740-c000", "sifive,fu740";
12*57985788SYash Shah
13*57985788SYash Shah	aliases {
14*57985788SYash Shah		serial0 = &uart0;
15*57985788SYash Shah		serial1 = &uart1;
16*57985788SYash Shah		ethernet0 = &eth0;
17*57985788SYash Shah	};
18*57985788SYash Shah
19*57985788SYash Shah	chosen {
20*57985788SYash Shah	};
21*57985788SYash Shah
22*57985788SYash Shah	cpus {
23*57985788SYash Shah		#address-cells = <1>;
24*57985788SYash Shah		#size-cells = <0>;
25*57985788SYash Shah		cpu0: cpu@0 {
26*57985788SYash Shah			compatible = "sifive,bullet0", "riscv";
27*57985788SYash Shah			device_type = "cpu";
28*57985788SYash Shah			i-cache-block-size = <64>;
29*57985788SYash Shah			i-cache-sets = <128>;
30*57985788SYash Shah			i-cache-size = <16384>;
31*57985788SYash Shah			next-level-cache = <&ccache>;
32*57985788SYash Shah			reg = <0x0>;
33*57985788SYash Shah			riscv,isa = "rv64imac";
34*57985788SYash Shah			status = "disabled";
35*57985788SYash Shah			cpu0_intc: interrupt-controller {
36*57985788SYash Shah				#interrupt-cells = <1>;
37*57985788SYash Shah				compatible = "riscv,cpu-intc";
38*57985788SYash Shah				interrupt-controller;
39*57985788SYash Shah			};
40*57985788SYash Shah		};
41*57985788SYash Shah		cpu1: cpu@1 {
42*57985788SYash Shah			compatible = "sifive,bullet0", "riscv";
43*57985788SYash Shah			d-cache-block-size = <64>;
44*57985788SYash Shah			d-cache-sets = <64>;
45*57985788SYash Shah			d-cache-size = <32768>;
46*57985788SYash Shah			d-tlb-sets = <1>;
47*57985788SYash Shah			d-tlb-size = <40>;
48*57985788SYash Shah			device_type = "cpu";
49*57985788SYash Shah			i-cache-block-size = <64>;
50*57985788SYash Shah			i-cache-sets = <128>;
51*57985788SYash Shah			i-cache-size = <32768>;
52*57985788SYash Shah			i-tlb-sets = <1>;
53*57985788SYash Shah			i-tlb-size = <40>;
54*57985788SYash Shah			mmu-type = "riscv,sv39";
55*57985788SYash Shah			next-level-cache = <&ccache>;
56*57985788SYash Shah			reg = <0x1>;
57*57985788SYash Shah			riscv,isa = "rv64imafdc";
58*57985788SYash Shah			tlb-split;
59*57985788SYash Shah			cpu1_intc: interrupt-controller {
60*57985788SYash Shah				#interrupt-cells = <1>;
61*57985788SYash Shah				compatible = "riscv,cpu-intc";
62*57985788SYash Shah				interrupt-controller;
63*57985788SYash Shah			};
64*57985788SYash Shah		};
65*57985788SYash Shah		cpu2: cpu@2 {
66*57985788SYash Shah			compatible = "sifive,bullet0", "riscv";
67*57985788SYash Shah			d-cache-block-size = <64>;
68*57985788SYash Shah			d-cache-sets = <64>;
69*57985788SYash Shah			d-cache-size = <32768>;
70*57985788SYash Shah			d-tlb-sets = <1>;
71*57985788SYash Shah			d-tlb-size = <40>;
72*57985788SYash Shah			device_type = "cpu";
73*57985788SYash Shah			i-cache-block-size = <64>;
74*57985788SYash Shah			i-cache-sets = <128>;
75*57985788SYash Shah			i-cache-size = <32768>;
76*57985788SYash Shah			i-tlb-sets = <1>;
77*57985788SYash Shah			i-tlb-size = <40>;
78*57985788SYash Shah			mmu-type = "riscv,sv39";
79*57985788SYash Shah			next-level-cache = <&ccache>;
80*57985788SYash Shah			reg = <0x2>;
81*57985788SYash Shah			riscv,isa = "rv64imafdc";
82*57985788SYash Shah			tlb-split;
83*57985788SYash Shah			cpu2_intc: interrupt-controller {
84*57985788SYash Shah				#interrupt-cells = <1>;
85*57985788SYash Shah				compatible = "riscv,cpu-intc";
86*57985788SYash Shah				interrupt-controller;
87*57985788SYash Shah			};
88*57985788SYash Shah		};
89*57985788SYash Shah		cpu3: cpu@3 {
90*57985788SYash Shah			compatible = "sifive,bullet0", "riscv";
91*57985788SYash Shah			d-cache-block-size = <64>;
92*57985788SYash Shah			d-cache-sets = <64>;
93*57985788SYash Shah			d-cache-size = <32768>;
94*57985788SYash Shah			d-tlb-sets = <1>;
95*57985788SYash Shah			d-tlb-size = <40>;
96*57985788SYash Shah			device_type = "cpu";
97*57985788SYash Shah			i-cache-block-size = <64>;
98*57985788SYash Shah			i-cache-sets = <128>;
99*57985788SYash Shah			i-cache-size = <32768>;
100*57985788SYash Shah			i-tlb-sets = <1>;
101*57985788SYash Shah			i-tlb-size = <40>;
102*57985788SYash Shah			mmu-type = "riscv,sv39";
103*57985788SYash Shah			next-level-cache = <&ccache>;
104*57985788SYash Shah			reg = <0x3>;
105*57985788SYash Shah			riscv,isa = "rv64imafdc";
106*57985788SYash Shah			tlb-split;
107*57985788SYash Shah			cpu3_intc: interrupt-controller {
108*57985788SYash Shah				#interrupt-cells = <1>;
109*57985788SYash Shah				compatible = "riscv,cpu-intc";
110*57985788SYash Shah				interrupt-controller;
111*57985788SYash Shah			};
112*57985788SYash Shah		};
113*57985788SYash Shah		cpu4: cpu@4 {
114*57985788SYash Shah			compatible = "sifive,bullet0", "riscv";
115*57985788SYash Shah			d-cache-block-size = <64>;
116*57985788SYash Shah			d-cache-sets = <64>;
117*57985788SYash Shah			d-cache-size = <32768>;
118*57985788SYash Shah			d-tlb-sets = <1>;
119*57985788SYash Shah			d-tlb-size = <40>;
120*57985788SYash Shah			device_type = "cpu";
121*57985788SYash Shah			i-cache-block-size = <64>;
122*57985788SYash Shah			i-cache-sets = <128>;
123*57985788SYash Shah			i-cache-size = <32768>;
124*57985788SYash Shah			i-tlb-sets = <1>;
125*57985788SYash Shah			i-tlb-size = <40>;
126*57985788SYash Shah			mmu-type = "riscv,sv39";
127*57985788SYash Shah			next-level-cache = <&ccache>;
128*57985788SYash Shah			reg = <0x4>;
129*57985788SYash Shah			riscv,isa = "rv64imafdc";
130*57985788SYash Shah			tlb-split;
131*57985788SYash Shah			cpu4_intc: interrupt-controller {
132*57985788SYash Shah				#interrupt-cells = <1>;
133*57985788SYash Shah				compatible = "riscv,cpu-intc";
134*57985788SYash Shah				interrupt-controller;
135*57985788SYash Shah			};
136*57985788SYash Shah		};
137*57985788SYash Shah	};
138*57985788SYash Shah	soc {
139*57985788SYash Shah		#address-cells = <2>;
140*57985788SYash Shah		#size-cells = <2>;
141*57985788SYash Shah		compatible = "simple-bus";
142*57985788SYash Shah		ranges;
143*57985788SYash Shah		plic0: interrupt-controller@c000000 {
144*57985788SYash Shah			#interrupt-cells = <1>;
145*57985788SYash Shah			#address-cells = <0>;
146*57985788SYash Shah			compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0";
147*57985788SYash Shah			reg = <0x0 0xc000000 0x0 0x4000000>;
148*57985788SYash Shah			riscv,ndev = <69>;
149*57985788SYash Shah			interrupt-controller;
150*57985788SYash Shah			interrupts-extended = <
151*57985788SYash Shah				&cpu0_intc 0xffffffff
152*57985788SYash Shah				&cpu1_intc 0xffffffff &cpu1_intc 9
153*57985788SYash Shah				&cpu2_intc 0xffffffff &cpu2_intc 9
154*57985788SYash Shah				&cpu3_intc 0xffffffff &cpu3_intc 9
155*57985788SYash Shah				&cpu4_intc 0xffffffff &cpu4_intc 9>;
156*57985788SYash Shah		};
157*57985788SYash Shah		prci: clock-controller@10000000 {
158*57985788SYash Shah			compatible = "sifive,fu740-c000-prci";
159*57985788SYash Shah			reg = <0x0 0x10000000 0x0 0x1000>;
160*57985788SYash Shah			clocks = <&hfclk>, <&rtcclk>;
161*57985788SYash Shah			#clock-cells = <1>;
162*57985788SYash Shah		};
163*57985788SYash Shah		uart0: serial@10010000 {
164*57985788SYash Shah			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
165*57985788SYash Shah			reg = <0x0 0x10010000 0x0 0x1000>;
166*57985788SYash Shah			interrupt-parent = <&plic0>;
167*57985788SYash Shah			interrupts = <39>;
168*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
169*57985788SYash Shah			status = "disabled";
170*57985788SYash Shah		};
171*57985788SYash Shah		uart1: serial@10011000 {
172*57985788SYash Shah			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
173*57985788SYash Shah			reg = <0x0 0x10011000 0x0 0x1000>;
174*57985788SYash Shah			interrupt-parent = <&plic0>;
175*57985788SYash Shah			interrupts = <40>;
176*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
177*57985788SYash Shah			status = "disabled";
178*57985788SYash Shah		};
179*57985788SYash Shah		i2c0: i2c@10030000 {
180*57985788SYash Shah			compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
181*57985788SYash Shah			reg = <0x0 0x10030000 0x0 0x1000>;
182*57985788SYash Shah			interrupt-parent = <&plic0>;
183*57985788SYash Shah			interrupts = <52>;
184*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
185*57985788SYash Shah			reg-shift = <2>;
186*57985788SYash Shah			reg-io-width = <1>;
187*57985788SYash Shah			#address-cells = <1>;
188*57985788SYash Shah			#size-cells = <0>;
189*57985788SYash Shah			status = "disabled";
190*57985788SYash Shah		};
191*57985788SYash Shah		i2c1: i2c@10031000 {
192*57985788SYash Shah			compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
193*57985788SYash Shah			reg = <0x0 0x10031000 0x0 0x1000>;
194*57985788SYash Shah			interrupt-parent = <&plic0>;
195*57985788SYash Shah			interrupts = <53>;
196*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
197*57985788SYash Shah			reg-shift = <2>;
198*57985788SYash Shah			reg-io-width = <1>;
199*57985788SYash Shah			#address-cells = <1>;
200*57985788SYash Shah			#size-cells = <0>;
201*57985788SYash Shah			status = "disabled";
202*57985788SYash Shah		};
203*57985788SYash Shah		qspi0: spi@10040000 {
204*57985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
205*57985788SYash Shah			reg = <0x0 0x10040000 0x0 0x1000>,
206*57985788SYash Shah			      <0x0 0x20000000 0x0 0x10000000>;
207*57985788SYash Shah			interrupt-parent = <&plic0>;
208*57985788SYash Shah			interrupts = <41>;
209*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
210*57985788SYash Shah			#address-cells = <1>;
211*57985788SYash Shah			#size-cells = <0>;
212*57985788SYash Shah			status = "disabled";
213*57985788SYash Shah		};
214*57985788SYash Shah		qspi1: spi@10041000 {
215*57985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
216*57985788SYash Shah			reg = <0x0 0x10041000 0x0 0x1000>,
217*57985788SYash Shah			      <0x0 0x30000000 0x0 0x10000000>;
218*57985788SYash Shah			interrupt-parent = <&plic0>;
219*57985788SYash Shah			interrupts = <42>;
220*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
221*57985788SYash Shah			#address-cells = <1>;
222*57985788SYash Shah			#size-cells = <0>;
223*57985788SYash Shah			status = "disabled";
224*57985788SYash Shah		};
225*57985788SYash Shah		spi0: spi@10050000 {
226*57985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
227*57985788SYash Shah			reg = <0x0 0x10050000 0x0 0x1000>;
228*57985788SYash Shah			interrupt-parent = <&plic0>;
229*57985788SYash Shah			interrupts = <43>;
230*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
231*57985788SYash Shah			#address-cells = <1>;
232*57985788SYash Shah			#size-cells = <0>;
233*57985788SYash Shah			status = "disabled";
234*57985788SYash Shah		};
235*57985788SYash Shah		eth0: ethernet@10090000 {
236*57985788SYash Shah			compatible = "sifive,fu540-c000-gem";
237*57985788SYash Shah			interrupt-parent = <&plic0>;
238*57985788SYash Shah			interrupts = <55>;
239*57985788SYash Shah			reg = <0x0 0x10090000 0x0 0x2000>,
240*57985788SYash Shah			      <0x0 0x100a0000 0x0 0x1000>;
241*57985788SYash Shah			local-mac-address = [00 00 00 00 00 00];
242*57985788SYash Shah			clock-names = "pclk", "hclk";
243*57985788SYash Shah			clocks = <&prci PRCI_CLK_GEMGXLPLL>,
244*57985788SYash Shah				 <&prci PRCI_CLK_GEMGXLPLL>;
245*57985788SYash Shah			#address-cells = <1>;
246*57985788SYash Shah			#size-cells = <0>;
247*57985788SYash Shah			status = "disabled";
248*57985788SYash Shah		};
249*57985788SYash Shah		pwm0: pwm@10020000 {
250*57985788SYash Shah			compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
251*57985788SYash Shah			reg = <0x0 0x10020000 0x0 0x1000>;
252*57985788SYash Shah			interrupt-parent = <&plic0>;
253*57985788SYash Shah			interrupts = <44>, <45>, <46>, <47>;
254*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
255*57985788SYash Shah			#pwm-cells = <3>;
256*57985788SYash Shah			status = "disabled";
257*57985788SYash Shah		};
258*57985788SYash Shah		pwm1: pwm@10021000 {
259*57985788SYash Shah			compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
260*57985788SYash Shah			reg = <0x0 0x10021000 0x0 0x1000>;
261*57985788SYash Shah			interrupt-parent = <&plic0>;
262*57985788SYash Shah			interrupts = <48>, <49>, <50>, <51>;
263*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
264*57985788SYash Shah			#pwm-cells = <3>;
265*57985788SYash Shah			status = "disabled";
266*57985788SYash Shah		};
267*57985788SYash Shah		ccache: cache-controller@2010000 {
268*57985788SYash Shah			compatible = "sifive,fu740-c000-ccache", "cache";
269*57985788SYash Shah			cache-block-size = <64>;
270*57985788SYash Shah			cache-level = <2>;
271*57985788SYash Shah			cache-sets = <2048>;
272*57985788SYash Shah			cache-size = <2097152>;
273*57985788SYash Shah			cache-unified;
274*57985788SYash Shah			interrupt-parent = <&plic0>;
275*57985788SYash Shah			interrupts = <19 20 21 22>;
276*57985788SYash Shah			reg = <0x0 0x2010000 0x0 0x1000>;
277*57985788SYash Shah		};
278*57985788SYash Shah		gpio: gpio@10060000 {
279*57985788SYash Shah			compatible = "sifive,fu740-c000-gpio", "sifive,gpio0";
280*57985788SYash Shah			interrupt-parent = <&plic0>;
281*57985788SYash Shah			interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
282*57985788SYash Shah				     <30>, <31>, <32>, <33>, <34>, <35>, <36>,
283*57985788SYash Shah				     <37>, <38>;
284*57985788SYash Shah			reg = <0x0 0x10060000 0x0 0x1000>;
285*57985788SYash Shah			gpio-controller;
286*57985788SYash Shah			#gpio-cells = <2>;
287*57985788SYash Shah			interrupt-controller;
288*57985788SYash Shah			#interrupt-cells = <2>;
289*57985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
290*57985788SYash Shah			status = "disabled";
291*57985788SYash Shah		};
292*57985788SYash Shah	};
293*57985788SYash Shah};
294