xref: /linux/arch/riscv/boot/dts/sifive/fu540-c000.dtsi (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
172296bdeSPaul Walmsley// SPDX-License-Identifier: (GPL-2.0 OR MIT)
272296bdeSPaul Walmsley/* Copyright (c) 2018-2019 SiFive, Inc */
372296bdeSPaul Walmsley
472296bdeSPaul Walmsley/dts-v1/;
572296bdeSPaul Walmsley
672296bdeSPaul Walmsley#include <dt-bindings/clock/sifive-fu540-prci.h>
772296bdeSPaul Walmsley
872296bdeSPaul Walmsley/ {
972296bdeSPaul Walmsley	#address-cells = <2>;
1072296bdeSPaul Walmsley	#size-cells = <2>;
1172296bdeSPaul Walmsley	compatible = "sifive,fu540-c000", "sifive,fu540";
1272296bdeSPaul Walmsley
1372296bdeSPaul Walmsley	aliases {
1472296bdeSPaul Walmsley		serial0 = &uart0;
1572296bdeSPaul Walmsley		serial1 = &uart1;
163bcca2a5SBin Meng		ethernet0 = &eth0;
1772296bdeSPaul Walmsley	};
1872296bdeSPaul Walmsley
1972296bdeSPaul Walmsley	chosen {
2072296bdeSPaul Walmsley	};
2172296bdeSPaul Walmsley
2272296bdeSPaul Walmsley	cpus {
2372296bdeSPaul Walmsley		#address-cells = <1>;
2472296bdeSPaul Walmsley		#size-cells = <0>;
2572296bdeSPaul Walmsley		cpu0: cpu@0 {
2672296bdeSPaul Walmsley			compatible = "sifive,e51", "sifive,rocket0", "riscv";
2772296bdeSPaul Walmsley			device_type = "cpu";
2872296bdeSPaul Walmsley			i-cache-block-size = <64>;
2972296bdeSPaul Walmsley			i-cache-sets = <128>;
3072296bdeSPaul Walmsley			i-cache-size = <16384>;
3172296bdeSPaul Walmsley			reg = <0>;
3272296bdeSPaul Walmsley			riscv,isa = "rv64imac";
33*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
34*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "c", "zicntr", "zicsr", "zifencei",
35*a54f4272SConor Dooley					       "zihpm";
3672296bdeSPaul Walmsley			status = "disabled";
3772296bdeSPaul Walmsley			cpu0_intc: interrupt-controller {
3872296bdeSPaul Walmsley				#interrupt-cells = <1>;
3972296bdeSPaul Walmsley				compatible = "riscv,cpu-intc";
4072296bdeSPaul Walmsley				interrupt-controller;
4172296bdeSPaul Walmsley			};
4272296bdeSPaul Walmsley		};
4372296bdeSPaul Walmsley		cpu1: cpu@1 {
4472296bdeSPaul Walmsley			compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
4572296bdeSPaul Walmsley			d-cache-block-size = <64>;
4672296bdeSPaul Walmsley			d-cache-sets = <64>;
4772296bdeSPaul Walmsley			d-cache-size = <32768>;
4872296bdeSPaul Walmsley			d-tlb-sets = <1>;
4972296bdeSPaul Walmsley			d-tlb-size = <32>;
5072296bdeSPaul Walmsley			device_type = "cpu";
5172296bdeSPaul Walmsley			i-cache-block-size = <64>;
5272296bdeSPaul Walmsley			i-cache-sets = <64>;
5372296bdeSPaul Walmsley			i-cache-size = <32768>;
5472296bdeSPaul Walmsley			i-tlb-sets = <1>;
5572296bdeSPaul Walmsley			i-tlb-size = <32>;
5672296bdeSPaul Walmsley			mmu-type = "riscv,sv39";
5772296bdeSPaul Walmsley			reg = <1>;
5872296bdeSPaul Walmsley			riscv,isa = "rv64imafdc";
59*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
60*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
61*a54f4272SConor Dooley					       "zifencei", "zihpm";
6272296bdeSPaul Walmsley			tlb-split;
63cfda8617SYash Shah			next-level-cache = <&l2cache>;
6472296bdeSPaul Walmsley			cpu1_intc: interrupt-controller {
6572296bdeSPaul Walmsley				#interrupt-cells = <1>;
6672296bdeSPaul Walmsley				compatible = "riscv,cpu-intc";
6772296bdeSPaul Walmsley				interrupt-controller;
6872296bdeSPaul Walmsley			};
6972296bdeSPaul Walmsley		};
7072296bdeSPaul Walmsley		cpu2: cpu@2 {
7172296bdeSPaul Walmsley			compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
7272296bdeSPaul Walmsley			d-cache-block-size = <64>;
7372296bdeSPaul Walmsley			d-cache-sets = <64>;
7472296bdeSPaul Walmsley			d-cache-size = <32768>;
7572296bdeSPaul Walmsley			d-tlb-sets = <1>;
7672296bdeSPaul Walmsley			d-tlb-size = <32>;
7772296bdeSPaul Walmsley			device_type = "cpu";
7872296bdeSPaul Walmsley			i-cache-block-size = <64>;
7972296bdeSPaul Walmsley			i-cache-sets = <64>;
8072296bdeSPaul Walmsley			i-cache-size = <32768>;
8172296bdeSPaul Walmsley			i-tlb-sets = <1>;
8272296bdeSPaul Walmsley			i-tlb-size = <32>;
8372296bdeSPaul Walmsley			mmu-type = "riscv,sv39";
8472296bdeSPaul Walmsley			reg = <2>;
8572296bdeSPaul Walmsley			riscv,isa = "rv64imafdc";
86*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
87*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
88*a54f4272SConor Dooley					       "zifencei", "zihpm";
8972296bdeSPaul Walmsley			tlb-split;
90cfda8617SYash Shah			next-level-cache = <&l2cache>;
9172296bdeSPaul Walmsley			cpu2_intc: interrupt-controller {
9272296bdeSPaul Walmsley				#interrupt-cells = <1>;
9372296bdeSPaul Walmsley				compatible = "riscv,cpu-intc";
9472296bdeSPaul Walmsley				interrupt-controller;
9572296bdeSPaul Walmsley			};
9672296bdeSPaul Walmsley		};
9772296bdeSPaul Walmsley		cpu3: cpu@3 {
9872296bdeSPaul Walmsley			compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
9972296bdeSPaul Walmsley			d-cache-block-size = <64>;
10072296bdeSPaul Walmsley			d-cache-sets = <64>;
10172296bdeSPaul Walmsley			d-cache-size = <32768>;
10272296bdeSPaul Walmsley			d-tlb-sets = <1>;
10372296bdeSPaul Walmsley			d-tlb-size = <32>;
10472296bdeSPaul Walmsley			device_type = "cpu";
10572296bdeSPaul Walmsley			i-cache-block-size = <64>;
10672296bdeSPaul Walmsley			i-cache-sets = <64>;
10772296bdeSPaul Walmsley			i-cache-size = <32768>;
10872296bdeSPaul Walmsley			i-tlb-sets = <1>;
10972296bdeSPaul Walmsley			i-tlb-size = <32>;
11072296bdeSPaul Walmsley			mmu-type = "riscv,sv39";
11172296bdeSPaul Walmsley			reg = <3>;
11272296bdeSPaul Walmsley			riscv,isa = "rv64imafdc";
113*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
114*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
115*a54f4272SConor Dooley					       "zifencei", "zihpm";
11672296bdeSPaul Walmsley			tlb-split;
117cfda8617SYash Shah			next-level-cache = <&l2cache>;
11872296bdeSPaul Walmsley			cpu3_intc: interrupt-controller {
11972296bdeSPaul Walmsley				#interrupt-cells = <1>;
12072296bdeSPaul Walmsley				compatible = "riscv,cpu-intc";
12172296bdeSPaul Walmsley				interrupt-controller;
12272296bdeSPaul Walmsley			};
12372296bdeSPaul Walmsley		};
12472296bdeSPaul Walmsley		cpu4: cpu@4 {
12572296bdeSPaul Walmsley			compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
12672296bdeSPaul Walmsley			d-cache-block-size = <64>;
12772296bdeSPaul Walmsley			d-cache-sets = <64>;
12872296bdeSPaul Walmsley			d-cache-size = <32768>;
12972296bdeSPaul Walmsley			d-tlb-sets = <1>;
13072296bdeSPaul Walmsley			d-tlb-size = <32>;
13172296bdeSPaul Walmsley			device_type = "cpu";
13272296bdeSPaul Walmsley			i-cache-block-size = <64>;
13372296bdeSPaul Walmsley			i-cache-sets = <64>;
13472296bdeSPaul Walmsley			i-cache-size = <32768>;
13572296bdeSPaul Walmsley			i-tlb-sets = <1>;
13672296bdeSPaul Walmsley			i-tlb-size = <32>;
13772296bdeSPaul Walmsley			mmu-type = "riscv,sv39";
13872296bdeSPaul Walmsley			reg = <4>;
13972296bdeSPaul Walmsley			riscv,isa = "rv64imafdc";
140*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
141*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
142*a54f4272SConor Dooley					       "zifencei", "zihpm";
14372296bdeSPaul Walmsley			tlb-split;
144cfda8617SYash Shah			next-level-cache = <&l2cache>;
14572296bdeSPaul Walmsley			cpu4_intc: interrupt-controller {
14672296bdeSPaul Walmsley				#interrupt-cells = <1>;
14772296bdeSPaul Walmsley				compatible = "riscv,cpu-intc";
14872296bdeSPaul Walmsley				interrupt-controller;
14972296bdeSPaul Walmsley			};
15072296bdeSPaul Walmsley		};
151af8f260aSConor Dooley
152af8f260aSConor Dooley		cpu-map {
153af8f260aSConor Dooley			cluster0 {
154af8f260aSConor Dooley				core0 {
155af8f260aSConor Dooley					cpu = <&cpu0>;
156af8f260aSConor Dooley				};
157af8f260aSConor Dooley
158af8f260aSConor Dooley				core1 {
159af8f260aSConor Dooley					cpu = <&cpu1>;
160af8f260aSConor Dooley				};
161af8f260aSConor Dooley
162af8f260aSConor Dooley				core2 {
163af8f260aSConor Dooley					cpu = <&cpu2>;
164af8f260aSConor Dooley				};
165af8f260aSConor Dooley
166af8f260aSConor Dooley				core3 {
167af8f260aSConor Dooley					cpu = <&cpu3>;
168af8f260aSConor Dooley				};
169af8f260aSConor Dooley
170af8f260aSConor Dooley				core4 {
171af8f260aSConor Dooley					cpu = <&cpu4>;
172af8f260aSConor Dooley				};
173af8f260aSConor Dooley			};
174af8f260aSConor Dooley		};
17572296bdeSPaul Walmsley	};
17672296bdeSPaul Walmsley	soc {
17772296bdeSPaul Walmsley		#address-cells = <2>;
17872296bdeSPaul Walmsley		#size-cells = <2>;
1798fc6e62aSGeert Uytterhoeven		compatible = "simple-bus";
18072296bdeSPaul Walmsley		ranges;
18172296bdeSPaul Walmsley		plic0: interrupt-controller@c000000 {
1829962a066SKrzysztof Kozlowski			compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0";
18372296bdeSPaul Walmsley			reg = <0x0 0xc000000 0x0 0x4000000>;
184893eae9aSGeert Uytterhoeven			#address-cells = <0>;
185893eae9aSGeert Uytterhoeven			#interrupt-cells = <1>;
18672296bdeSPaul Walmsley			interrupt-controller;
187cc79be0eSGeert Uytterhoeven			interrupts-extended =
188cc79be0eSGeert Uytterhoeven				<&cpu0_intc 0xffffffff>,
189cc79be0eSGeert Uytterhoeven				<&cpu1_intc 0xffffffff>, <&cpu1_intc 9>,
190cc79be0eSGeert Uytterhoeven				<&cpu2_intc 0xffffffff>, <&cpu2_intc 9>,
191cc79be0eSGeert Uytterhoeven				<&cpu3_intc 0xffffffff>, <&cpu3_intc 9>,
192cc79be0eSGeert Uytterhoeven				<&cpu4_intc 0xffffffff>, <&cpu4_intc 9>;
193893eae9aSGeert Uytterhoeven			riscv,ndev = <53>;
19472296bdeSPaul Walmsley		};
19572296bdeSPaul Walmsley		prci: clock-controller@10000000 {
19672296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-prci";
19772296bdeSPaul Walmsley			reg = <0x0 0x10000000 0x0 0x1000>;
19872296bdeSPaul Walmsley			clocks = <&hfclk>, <&rtcclk>;
19972296bdeSPaul Walmsley			#clock-cells = <1>;
20072296bdeSPaul Walmsley		};
20172296bdeSPaul Walmsley		uart0: serial@10010000 {
20272296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-uart", "sifive,uart0";
20372296bdeSPaul Walmsley			reg = <0x0 0x10010000 0x0 0x1000>;
20472296bdeSPaul Walmsley			interrupt-parent = <&plic0>;
20572296bdeSPaul Walmsley			interrupts = <4>;
206990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
20745b03df2SYash Shah			status = "disabled";
20872296bdeSPaul Walmsley		};
209d26eee72SZong Li		dma: dma-controller@3000000 {
2106f6fa9ceSZong Li			compatible = "sifive,fu540-c000-pdma", "sifive,pdma0";
211c5ab54e9SGreen Wan			reg = <0x0 0x3000000 0x0 0x8000>;
212c5ab54e9SGreen Wan			interrupt-parent = <&plic0>;
213cc79be0eSGeert Uytterhoeven			interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
214cc79be0eSGeert Uytterhoeven				     <30>;
2156f6fa9ceSZong Li			dma-channels = <4>;
216c5ab54e9SGreen Wan			#dma-cells = <1>;
217c5ab54e9SGreen Wan		};
21872296bdeSPaul Walmsley		uart1: serial@10011000 {
21972296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-uart", "sifive,uart0";
22072296bdeSPaul Walmsley			reg = <0x0 0x10011000 0x0 0x1000>;
22172296bdeSPaul Walmsley			interrupt-parent = <&plic0>;
22272296bdeSPaul Walmsley			interrupts = <5>;
223990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
22445b03df2SYash Shah			status = "disabled";
22572296bdeSPaul Walmsley		};
22672296bdeSPaul Walmsley		i2c0: i2c@10030000 {
22772296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-i2c", "sifive,i2c0";
22872296bdeSPaul Walmsley			reg = <0x0 0x10030000 0x0 0x1000>;
22972296bdeSPaul Walmsley			interrupt-parent = <&plic0>;
23072296bdeSPaul Walmsley			interrupts = <50>;
231990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
23272296bdeSPaul Walmsley			reg-shift = <2>;
23372296bdeSPaul Walmsley			reg-io-width = <1>;
23472296bdeSPaul Walmsley			#address-cells = <1>;
23572296bdeSPaul Walmsley			#size-cells = <0>;
23645b03df2SYash Shah			status = "disabled";
23772296bdeSPaul Walmsley		};
23872296bdeSPaul Walmsley		qspi0: spi@10040000 {
23972296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-spi", "sifive,spi0";
2408e9b1c95SGeert Uytterhoeven			reg = <0x0 0x10040000 0x0 0x1000>,
2418e9b1c95SGeert Uytterhoeven			      <0x0 0x20000000 0x0 0x10000000>;
24272296bdeSPaul Walmsley			interrupt-parent = <&plic0>;
24372296bdeSPaul Walmsley			interrupts = <51>;
244990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
24572296bdeSPaul Walmsley			#address-cells = <1>;
24672296bdeSPaul Walmsley			#size-cells = <0>;
24745b03df2SYash Shah			status = "disabled";
24872296bdeSPaul Walmsley		};
24972296bdeSPaul Walmsley		qspi1: spi@10041000 {
25072296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-spi", "sifive,spi0";
2518e9b1c95SGeert Uytterhoeven			reg = <0x0 0x10041000 0x0 0x1000>,
2528e9b1c95SGeert Uytterhoeven			      <0x0 0x30000000 0x0 0x10000000>;
25372296bdeSPaul Walmsley			interrupt-parent = <&plic0>;
25472296bdeSPaul Walmsley			interrupts = <52>;
255990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
25672296bdeSPaul Walmsley			#address-cells = <1>;
25772296bdeSPaul Walmsley			#size-cells = <0>;
25845b03df2SYash Shah			status = "disabled";
25972296bdeSPaul Walmsley		};
26072296bdeSPaul Walmsley		qspi2: spi@10050000 {
26172296bdeSPaul Walmsley			compatible = "sifive,fu540-c000-spi", "sifive,spi0";
26272296bdeSPaul Walmsley			reg = <0x0 0x10050000 0x0 0x1000>;
26372296bdeSPaul Walmsley			interrupt-parent = <&plic0>;
26472296bdeSPaul Walmsley			interrupts = <6>;
265990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
26672296bdeSPaul Walmsley			#address-cells = <1>;
26772296bdeSPaul Walmsley			#size-cells = <0>;
26845b03df2SYash Shah			status = "disabled";
26972296bdeSPaul Walmsley		};
27026091eefSYash Shah		eth0: ethernet@10090000 {
27126091eefSYash Shah			compatible = "sifive,fu540-c000-gem";
27226091eefSYash Shah			interrupt-parent = <&plic0>;
27326091eefSYash Shah			interrupts = <53>;
2748e9b1c95SGeert Uytterhoeven			reg = <0x0 0x10090000 0x0 0x2000>,
2758e9b1c95SGeert Uytterhoeven			      <0x0 0x100a0000 0x0 0x1000>;
27626091eefSYash Shah			local-mac-address = [00 00 00 00 00 00];
27726091eefSYash Shah			clock-names = "pclk", "hclk";
278990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_GEMGXLPLL>,
279990d627fSZong Li				 <&prci FU540_PRCI_CLK_GEMGXLPLL>;
28026091eefSYash Shah			#address-cells = <1>;
28126091eefSYash Shah			#size-cells = <0>;
28226091eefSYash Shah			status = "disabled";
28326091eefSYash Shah		};
284b45e0c30SYash Shah		pwm0: pwm@10020000 {
285b45e0c30SYash Shah			compatible = "sifive,fu540-c000-pwm", "sifive,pwm0";
286b45e0c30SYash Shah			reg = <0x0 0x10020000 0x0 0x1000>;
287b45e0c30SYash Shah			interrupt-parent = <&plic0>;
288cc79be0eSGeert Uytterhoeven			interrupts = <42>, <43>, <44>, <45>;
289990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
290b45e0c30SYash Shah			#pwm-cells = <3>;
291b45e0c30SYash Shah			status = "disabled";
292b45e0c30SYash Shah		};
293b45e0c30SYash Shah		pwm1: pwm@10021000 {
294b45e0c30SYash Shah			compatible = "sifive,fu540-c000-pwm", "sifive,pwm0";
295b45e0c30SYash Shah			reg = <0x0 0x10021000 0x0 0x1000>;
296b45e0c30SYash Shah			interrupt-parent = <&plic0>;
297cc79be0eSGeert Uytterhoeven			interrupts = <46>, <47>, <48>, <49>;
298990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
299b45e0c30SYash Shah			#pwm-cells = <3>;
300b45e0c30SYash Shah			status = "disabled";
301b45e0c30SYash Shah		};
302cfda8617SYash Shah		l2cache: cache-controller@2010000 {
303cfda8617SYash Shah			compatible = "sifive,fu540-c000-ccache", "cache";
304cfda8617SYash Shah			cache-block-size = <64>;
305cfda8617SYash Shah			cache-level = <2>;
306cfda8617SYash Shah			cache-sets = <1024>;
307cfda8617SYash Shah			cache-size = <2097152>;
308cfda8617SYash Shah			cache-unified;
309cfda8617SYash Shah			interrupt-parent = <&plic0>;
310cc79be0eSGeert Uytterhoeven			interrupts = <1>, <2>, <3>;
311cfda8617SYash Shah			reg = <0x0 0x2010000 0x0 0x1000>;
312cfda8617SYash Shah		};
31361ffb9d2SYash Shah		gpio: gpio@10060000 {
31461ffb9d2SYash Shah			compatible = "sifive,fu540-c000-gpio", "sifive,gpio0";
31561ffb9d2SYash Shah			interrupt-parent = <&plic0>;
31661ffb9d2SYash Shah			interrupts = <7>, <8>, <9>, <10>, <11>, <12>, <13>,
31761ffb9d2SYash Shah				     <14>, <15>, <16>, <17>, <18>, <19>, <20>,
31861ffb9d2SYash Shah				     <21>, <22>;
31961ffb9d2SYash Shah			reg = <0x0 0x10060000 0x0 0x1000>;
32061ffb9d2SYash Shah			gpio-controller;
32161ffb9d2SYash Shah			#gpio-cells = <2>;
32261ffb9d2SYash Shah			interrupt-controller;
32361ffb9d2SYash Shah			#interrupt-cells = <2>;
324990d627fSZong Li			clocks = <&prci FU540_PRCI_CLK_TLCLK>;
32561ffb9d2SYash Shah			status = "disabled";
32661ffb9d2SYash Shah		};
32772296bdeSPaul Walmsley	};
32872296bdeSPaul Walmsley};
329