xref: /linux/arch/riscv/boot/dts/sifive/fu740-c000.dtsi (revision a54f42722e494c86ad0eeba198a662d68aeabb15)
157985788SYash Shah// SPDX-License-Identifier: (GPL-2.0 OR MIT)
257985788SYash Shah/* Copyright (c) 2020 SiFive, Inc */
357985788SYash Shah
457985788SYash Shah/dts-v1/;
557985788SYash Shah
657985788SYash Shah#include <dt-bindings/clock/sifive-fu740-prci.h>
757985788SYash Shah
857985788SYash Shah/ {
957985788SYash Shah	#address-cells = <2>;
1057985788SYash Shah	#size-cells = <2>;
1157985788SYash Shah	compatible = "sifive,fu740-c000", "sifive,fu740";
1257985788SYash Shah
1357985788SYash Shah	aliases {
1457985788SYash Shah		serial0 = &uart0;
1557985788SYash Shah		serial1 = &uart1;
1657985788SYash Shah		ethernet0 = &eth0;
1757985788SYash Shah	};
1857985788SYash Shah
1957985788SYash Shah	chosen {
2057985788SYash Shah	};
2157985788SYash Shah
2257985788SYash Shah	cpus {
2357985788SYash Shah		#address-cells = <1>;
2457985788SYash Shah		#size-cells = <0>;
2557985788SYash Shah		cpu0: cpu@0 {
2657985788SYash Shah			compatible = "sifive,bullet0", "riscv";
2757985788SYash Shah			device_type = "cpu";
2857985788SYash Shah			i-cache-block-size = <64>;
2957985788SYash Shah			i-cache-sets = <128>;
3057985788SYash Shah			i-cache-size = <16384>;
3157985788SYash Shah			next-level-cache = <&ccache>;
3257985788SYash Shah			reg = <0x0>;
3357985788SYash Shah			riscv,isa = "rv64imac";
34*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
35*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "c", "zicntr", "zicsr", "zifencei",
36*a54f4272SConor Dooley					       "zihpm";
3757985788SYash Shah			status = "disabled";
3857985788SYash Shah			cpu0_intc: interrupt-controller {
3957985788SYash Shah				#interrupt-cells = <1>;
4057985788SYash Shah				compatible = "riscv,cpu-intc";
4157985788SYash Shah				interrupt-controller;
4257985788SYash Shah			};
4357985788SYash Shah		};
4457985788SYash Shah		cpu1: cpu@1 {
4557985788SYash Shah			compatible = "sifive,bullet0", "riscv";
4657985788SYash Shah			d-cache-block-size = <64>;
4757985788SYash Shah			d-cache-sets = <64>;
4857985788SYash Shah			d-cache-size = <32768>;
4957985788SYash Shah			d-tlb-sets = <1>;
5057985788SYash Shah			d-tlb-size = <40>;
5157985788SYash Shah			device_type = "cpu";
5257985788SYash Shah			i-cache-block-size = <64>;
5357985788SYash Shah			i-cache-sets = <128>;
5457985788SYash Shah			i-cache-size = <32768>;
5557985788SYash Shah			i-tlb-sets = <1>;
5657985788SYash Shah			i-tlb-size = <40>;
5757985788SYash Shah			mmu-type = "riscv,sv39";
5857985788SYash Shah			next-level-cache = <&ccache>;
5957985788SYash Shah			reg = <0x1>;
6057985788SYash Shah			riscv,isa = "rv64imafdc";
61*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
62*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
63*a54f4272SConor Dooley					       "zifencei", "zihpm";
6457985788SYash Shah			tlb-split;
6557985788SYash Shah			cpu1_intc: interrupt-controller {
6657985788SYash Shah				#interrupt-cells = <1>;
6757985788SYash Shah				compatible = "riscv,cpu-intc";
6857985788SYash Shah				interrupt-controller;
6957985788SYash Shah			};
7057985788SYash Shah		};
7157985788SYash Shah		cpu2: cpu@2 {
7257985788SYash Shah			compatible = "sifive,bullet0", "riscv";
7357985788SYash Shah			d-cache-block-size = <64>;
7457985788SYash Shah			d-cache-sets = <64>;
7557985788SYash Shah			d-cache-size = <32768>;
7657985788SYash Shah			d-tlb-sets = <1>;
7757985788SYash Shah			d-tlb-size = <40>;
7857985788SYash Shah			device_type = "cpu";
7957985788SYash Shah			i-cache-block-size = <64>;
8057985788SYash Shah			i-cache-sets = <128>;
8157985788SYash Shah			i-cache-size = <32768>;
8257985788SYash Shah			i-tlb-sets = <1>;
8357985788SYash Shah			i-tlb-size = <40>;
8457985788SYash Shah			mmu-type = "riscv,sv39";
8557985788SYash Shah			next-level-cache = <&ccache>;
8657985788SYash Shah			reg = <0x2>;
8757985788SYash Shah			riscv,isa = "rv64imafdc";
88*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
89*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
90*a54f4272SConor Dooley					       "zifencei", "zihpm";
9157985788SYash Shah			tlb-split;
9257985788SYash Shah			cpu2_intc: interrupt-controller {
9357985788SYash Shah				#interrupt-cells = <1>;
9457985788SYash Shah				compatible = "riscv,cpu-intc";
9557985788SYash Shah				interrupt-controller;
9657985788SYash Shah			};
9757985788SYash Shah		};
9857985788SYash Shah		cpu3: cpu@3 {
9957985788SYash Shah			compatible = "sifive,bullet0", "riscv";
10057985788SYash Shah			d-cache-block-size = <64>;
10157985788SYash Shah			d-cache-sets = <64>;
10257985788SYash Shah			d-cache-size = <32768>;
10357985788SYash Shah			d-tlb-sets = <1>;
10457985788SYash Shah			d-tlb-size = <40>;
10557985788SYash Shah			device_type = "cpu";
10657985788SYash Shah			i-cache-block-size = <64>;
10757985788SYash Shah			i-cache-sets = <128>;
10857985788SYash Shah			i-cache-size = <32768>;
10957985788SYash Shah			i-tlb-sets = <1>;
11057985788SYash Shah			i-tlb-size = <40>;
11157985788SYash Shah			mmu-type = "riscv,sv39";
11257985788SYash Shah			next-level-cache = <&ccache>;
11357985788SYash Shah			reg = <0x3>;
11457985788SYash Shah			riscv,isa = "rv64imafdc";
115*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
116*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
117*a54f4272SConor Dooley					       "zifencei", "zihpm";
11857985788SYash Shah			tlb-split;
11957985788SYash Shah			cpu3_intc: interrupt-controller {
12057985788SYash Shah				#interrupt-cells = <1>;
12157985788SYash Shah				compatible = "riscv,cpu-intc";
12257985788SYash Shah				interrupt-controller;
12357985788SYash Shah			};
12457985788SYash Shah		};
12557985788SYash Shah		cpu4: cpu@4 {
12657985788SYash Shah			compatible = "sifive,bullet0", "riscv";
12757985788SYash Shah			d-cache-block-size = <64>;
12857985788SYash Shah			d-cache-sets = <64>;
12957985788SYash Shah			d-cache-size = <32768>;
13057985788SYash Shah			d-tlb-sets = <1>;
13157985788SYash Shah			d-tlb-size = <40>;
13257985788SYash Shah			device_type = "cpu";
13357985788SYash Shah			i-cache-block-size = <64>;
13457985788SYash Shah			i-cache-sets = <128>;
13557985788SYash Shah			i-cache-size = <32768>;
13657985788SYash Shah			i-tlb-sets = <1>;
13757985788SYash Shah			i-tlb-size = <40>;
13857985788SYash Shah			mmu-type = "riscv,sv39";
13957985788SYash Shah			next-level-cache = <&ccache>;
14057985788SYash Shah			reg = <0x4>;
14157985788SYash Shah			riscv,isa = "rv64imafdc";
142*a54f4272SConor Dooley			riscv,isa-base = "rv64i";
143*a54f4272SConor Dooley			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
144*a54f4272SConor Dooley					       "zifencei", "zihpm";
14557985788SYash Shah			tlb-split;
14657985788SYash Shah			cpu4_intc: interrupt-controller {
14757985788SYash Shah				#interrupt-cells = <1>;
14857985788SYash Shah				compatible = "riscv,cpu-intc";
14957985788SYash Shah				interrupt-controller;
15057985788SYash Shah			};
15157985788SYash Shah		};
152bf6cd1c0SConor Dooley
153bf6cd1c0SConor Dooley		cpu-map {
154bf6cd1c0SConor Dooley			cluster0 {
155bf6cd1c0SConor Dooley				core0 {
156bf6cd1c0SConor Dooley					cpu = <&cpu0>;
157bf6cd1c0SConor Dooley				};
158bf6cd1c0SConor Dooley
159bf6cd1c0SConor Dooley				core1 {
160bf6cd1c0SConor Dooley					cpu = <&cpu1>;
161bf6cd1c0SConor Dooley				};
162bf6cd1c0SConor Dooley
163bf6cd1c0SConor Dooley				core2 {
164bf6cd1c0SConor Dooley					cpu = <&cpu2>;
165bf6cd1c0SConor Dooley				};
166bf6cd1c0SConor Dooley
167bf6cd1c0SConor Dooley				core3 {
168bf6cd1c0SConor Dooley					cpu = <&cpu3>;
169bf6cd1c0SConor Dooley				};
170bf6cd1c0SConor Dooley
171bf6cd1c0SConor Dooley				core4 {
172bf6cd1c0SConor Dooley					cpu = <&cpu4>;
173bf6cd1c0SConor Dooley				};
174bf6cd1c0SConor Dooley			};
175bf6cd1c0SConor Dooley		};
17657985788SYash Shah	};
17757985788SYash Shah	soc {
17857985788SYash Shah		#address-cells = <2>;
17957985788SYash Shah		#size-cells = <2>;
18057985788SYash Shah		compatible = "simple-bus";
18157985788SYash Shah		ranges;
18257985788SYash Shah		plic0: interrupt-controller@c000000 {
18357985788SYash Shah			#interrupt-cells = <1>;
18457985788SYash Shah			#address-cells = <0>;
18557985788SYash Shah			compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0";
18657985788SYash Shah			reg = <0x0 0xc000000 0x0 0x4000000>;
18757985788SYash Shah			riscv,ndev = <69>;
18857985788SYash Shah			interrupt-controller;
189cc79be0eSGeert Uytterhoeven			interrupts-extended =
190cc79be0eSGeert Uytterhoeven				<&cpu0_intc 0xffffffff>,
191cc79be0eSGeert Uytterhoeven				<&cpu1_intc 0xffffffff>, <&cpu1_intc 9>,
192cc79be0eSGeert Uytterhoeven				<&cpu2_intc 0xffffffff>, <&cpu2_intc 9>,
193cc79be0eSGeert Uytterhoeven				<&cpu3_intc 0xffffffff>, <&cpu3_intc 9>,
194cc79be0eSGeert Uytterhoeven				<&cpu4_intc 0xffffffff>, <&cpu4_intc 9>;
19557985788SYash Shah		};
19657985788SYash Shah		prci: clock-controller@10000000 {
19757985788SYash Shah			compatible = "sifive,fu740-c000-prci";
19857985788SYash Shah			reg = <0x0 0x10000000 0x0 0x1000>;
19957985788SYash Shah			clocks = <&hfclk>, <&rtcclk>;
20057985788SYash Shah			#clock-cells = <1>;
201ae80d514SGreentime Hu			#reset-cells = <1>;
20257985788SYash Shah		};
20357985788SYash Shah		uart0: serial@10010000 {
20457985788SYash Shah			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
20557985788SYash Shah			reg = <0x0 0x10010000 0x0 0x1000>;
20657985788SYash Shah			interrupt-parent = <&plic0>;
20757985788SYash Shah			interrupts = <39>;
208990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
20957985788SYash Shah			status = "disabled";
21057985788SYash Shah		};
21157985788SYash Shah		uart1: serial@10011000 {
21257985788SYash Shah			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
21357985788SYash Shah			reg = <0x0 0x10011000 0x0 0x1000>;
21457985788SYash Shah			interrupt-parent = <&plic0>;
21557985788SYash Shah			interrupts = <40>;
216990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
21757985788SYash Shah			status = "disabled";
21857985788SYash Shah		};
21957985788SYash Shah		i2c0: i2c@10030000 {
22057985788SYash Shah			compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
22157985788SYash Shah			reg = <0x0 0x10030000 0x0 0x1000>;
22257985788SYash Shah			interrupt-parent = <&plic0>;
22357985788SYash Shah			interrupts = <52>;
224990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
22557985788SYash Shah			reg-shift = <2>;
22657985788SYash Shah			reg-io-width = <1>;
22757985788SYash Shah			#address-cells = <1>;
22857985788SYash Shah			#size-cells = <0>;
22957985788SYash Shah			status = "disabled";
23057985788SYash Shah		};
23157985788SYash Shah		i2c1: i2c@10031000 {
23257985788SYash Shah			compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
23357985788SYash Shah			reg = <0x0 0x10031000 0x0 0x1000>;
23457985788SYash Shah			interrupt-parent = <&plic0>;
23557985788SYash Shah			interrupts = <53>;
236990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
23757985788SYash Shah			reg-shift = <2>;
23857985788SYash Shah			reg-io-width = <1>;
23957985788SYash Shah			#address-cells = <1>;
24057985788SYash Shah			#size-cells = <0>;
24157985788SYash Shah			status = "disabled";
24257985788SYash Shah		};
24357985788SYash Shah		qspi0: spi@10040000 {
24457985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
24557985788SYash Shah			reg = <0x0 0x10040000 0x0 0x1000>,
24657985788SYash Shah			      <0x0 0x20000000 0x0 0x10000000>;
24757985788SYash Shah			interrupt-parent = <&plic0>;
24857985788SYash Shah			interrupts = <41>;
249990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
25057985788SYash Shah			#address-cells = <1>;
25157985788SYash Shah			#size-cells = <0>;
25257985788SYash Shah			status = "disabled";
25357985788SYash Shah		};
25457985788SYash Shah		qspi1: spi@10041000 {
25557985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
25657985788SYash Shah			reg = <0x0 0x10041000 0x0 0x1000>,
25757985788SYash Shah			      <0x0 0x30000000 0x0 0x10000000>;
25857985788SYash Shah			interrupt-parent = <&plic0>;
25957985788SYash Shah			interrupts = <42>;
260990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
26157985788SYash Shah			#address-cells = <1>;
26257985788SYash Shah			#size-cells = <0>;
26357985788SYash Shah			status = "disabled";
26457985788SYash Shah		};
26557985788SYash Shah		spi0: spi@10050000 {
26657985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
26757985788SYash Shah			reg = <0x0 0x10050000 0x0 0x1000>;
26857985788SYash Shah			interrupt-parent = <&plic0>;
26957985788SYash Shah			interrupts = <43>;
270990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
27157985788SYash Shah			#address-cells = <1>;
27257985788SYash Shah			#size-cells = <0>;
27357985788SYash Shah			status = "disabled";
27457985788SYash Shah		};
27557985788SYash Shah		eth0: ethernet@10090000 {
27657985788SYash Shah			compatible = "sifive,fu540-c000-gem";
27757985788SYash Shah			interrupt-parent = <&plic0>;
27857985788SYash Shah			interrupts = <55>;
27957985788SYash Shah			reg = <0x0 0x10090000 0x0 0x2000>,
28057985788SYash Shah			      <0x0 0x100a0000 0x0 0x1000>;
28157985788SYash Shah			local-mac-address = [00 00 00 00 00 00];
28257985788SYash Shah			clock-names = "pclk", "hclk";
283990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_GEMGXLPLL>,
284990d627fSZong Li				 <&prci FU740_PRCI_CLK_GEMGXLPLL>;
28557985788SYash Shah			#address-cells = <1>;
28657985788SYash Shah			#size-cells = <0>;
28757985788SYash Shah			status = "disabled";
28857985788SYash Shah		};
28957985788SYash Shah		pwm0: pwm@10020000 {
29057985788SYash Shah			compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
29157985788SYash Shah			reg = <0x0 0x10020000 0x0 0x1000>;
29257985788SYash Shah			interrupt-parent = <&plic0>;
29357985788SYash Shah			interrupts = <44>, <45>, <46>, <47>;
294990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
29557985788SYash Shah			#pwm-cells = <3>;
29657985788SYash Shah			status = "disabled";
29757985788SYash Shah		};
29857985788SYash Shah		pwm1: pwm@10021000 {
29957985788SYash Shah			compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
30057985788SYash Shah			reg = <0x0 0x10021000 0x0 0x1000>;
30157985788SYash Shah			interrupt-parent = <&plic0>;
30257985788SYash Shah			interrupts = <48>, <49>, <50>, <51>;
303990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
30457985788SYash Shah			#pwm-cells = <3>;
30557985788SYash Shah			status = "disabled";
30657985788SYash Shah		};
30757985788SYash Shah		ccache: cache-controller@2010000 {
30857985788SYash Shah			compatible = "sifive,fu740-c000-ccache", "cache";
30957985788SYash Shah			cache-block-size = <64>;
31057985788SYash Shah			cache-level = <2>;
31157985788SYash Shah			cache-sets = <2048>;
31257985788SYash Shah			cache-size = <2097152>;
31357985788SYash Shah			cache-unified;
31457985788SYash Shah			interrupt-parent = <&plic0>;
315cc79be0eSGeert Uytterhoeven			interrupts = <19>, <21>, <22>, <20>;
31657985788SYash Shah			reg = <0x0 0x2010000 0x0 0x1000>;
31757985788SYash Shah		};
31857985788SYash Shah		gpio: gpio@10060000 {
31957985788SYash Shah			compatible = "sifive,fu740-c000-gpio", "sifive,gpio0";
32057985788SYash Shah			interrupt-parent = <&plic0>;
32157985788SYash Shah			interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
32257985788SYash Shah				     <30>, <31>, <32>, <33>, <34>, <35>, <36>,
32357985788SYash Shah				     <37>, <38>;
32457985788SYash Shah			reg = <0x0 0x10060000 0x0 0x1000>;
32557985788SYash Shah			gpio-controller;
32657985788SYash Shah			#gpio-cells = <2>;
32757985788SYash Shah			interrupt-controller;
32857985788SYash Shah			#interrupt-cells = <2>;
329990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCLK>;
33057985788SYash Shah			status = "disabled";
33157985788SYash Shah		};
332ae80d514SGreentime Hu		pcie@e00000000 {
333ae80d514SGreentime Hu			compatible = "sifive,fu740-pcie";
334ae80d514SGreentime Hu			#address-cells = <3>;
335ae80d514SGreentime Hu			#size-cells = <2>;
336ae80d514SGreentime Hu			#interrupt-cells = <1>;
337ae80d514SGreentime Hu			reg = <0xe 0x00000000 0x0 0x80000000>,
338ae80d514SGreentime Hu			      <0xd 0xf0000000 0x0 0x10000000>,
339ae80d514SGreentime Hu			      <0x0 0x100d0000 0x0 0x1000>;
340ae80d514SGreentime Hu			reg-names = "dbi", "config", "mgmt";
341ae80d514SGreentime Hu			device_type = "pci";
342ae80d514SGreentime Hu			dma-coherent;
343ae80d514SGreentime Hu			bus-range = <0x0 0xff>;
344ae80d514SGreentime Hu			ranges = <0x81000000  0x0 0x60080000  0x0 0x60080000 0x0 0x10000>,      /* I/O */
345ae80d514SGreentime Hu				 <0x82000000  0x0 0x60090000  0x0 0x60090000 0x0 0xff70000>,    /* mem */
34643d5f5d6SBen Dooks				 <0x82000000  0x0 0x70000000  0x0 0x70000000 0x0 0x10000000>,    /* mem */
347ae80d514SGreentime Hu				 <0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>;  /* mem prefetchable */
348ae80d514SGreentime Hu			num-lanes = <0x8>;
349ae80d514SGreentime Hu			interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>;
350ae80d514SGreentime Hu			interrupt-names = "msi", "inta", "intb", "intc", "intd";
351ae80d514SGreentime Hu			interrupt-parent = <&plic0>;
352ae80d514SGreentime Hu			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
353ae80d514SGreentime Hu			interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>,
354ae80d514SGreentime Hu					<0x0 0x0 0x0 0x2 &plic0 58>,
355ae80d514SGreentime Hu					<0x0 0x0 0x0 0x3 &plic0 59>,
356ae80d514SGreentime Hu					<0x0 0x0 0x0 0x4 &plic0 60>;
357ae80d514SGreentime Hu			clock-names = "pcie_aux";
358990d627fSZong Li			clocks = <&prci FU740_PRCI_CLK_PCIE_AUX>;
359ae80d514SGreentime Hu			pwren-gpios = <&gpio 5 0>;
360ae80d514SGreentime Hu			reset-gpios = <&gpio 8 0>;
361ae80d514SGreentime Hu			resets = <&prci 4>;
362ae80d514SGreentime Hu			status = "okay";
363ae80d514SGreentime Hu		};
36457985788SYash Shah	};
36557985788SYash Shah};
366