xref: /linux/arch/riscv/boot/dts/sifive/fu740-c000.dtsi (revision ae80d514808557018e44190fdbab23564a51e9ef)
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";
3457985788SYash Shah			status = "disabled";
3557985788SYash Shah			cpu0_intc: interrupt-controller {
3657985788SYash Shah				#interrupt-cells = <1>;
3757985788SYash Shah				compatible = "riscv,cpu-intc";
3857985788SYash Shah				interrupt-controller;
3957985788SYash Shah			};
4057985788SYash Shah		};
4157985788SYash Shah		cpu1: cpu@1 {
4257985788SYash Shah			compatible = "sifive,bullet0", "riscv";
4357985788SYash Shah			d-cache-block-size = <64>;
4457985788SYash Shah			d-cache-sets = <64>;
4557985788SYash Shah			d-cache-size = <32768>;
4657985788SYash Shah			d-tlb-sets = <1>;
4757985788SYash Shah			d-tlb-size = <40>;
4857985788SYash Shah			device_type = "cpu";
4957985788SYash Shah			i-cache-block-size = <64>;
5057985788SYash Shah			i-cache-sets = <128>;
5157985788SYash Shah			i-cache-size = <32768>;
5257985788SYash Shah			i-tlb-sets = <1>;
5357985788SYash Shah			i-tlb-size = <40>;
5457985788SYash Shah			mmu-type = "riscv,sv39";
5557985788SYash Shah			next-level-cache = <&ccache>;
5657985788SYash Shah			reg = <0x1>;
5757985788SYash Shah			riscv,isa = "rv64imafdc";
5857985788SYash Shah			tlb-split;
5957985788SYash Shah			cpu1_intc: interrupt-controller {
6057985788SYash Shah				#interrupt-cells = <1>;
6157985788SYash Shah				compatible = "riscv,cpu-intc";
6257985788SYash Shah				interrupt-controller;
6357985788SYash Shah			};
6457985788SYash Shah		};
6557985788SYash Shah		cpu2: cpu@2 {
6657985788SYash Shah			compatible = "sifive,bullet0", "riscv";
6757985788SYash Shah			d-cache-block-size = <64>;
6857985788SYash Shah			d-cache-sets = <64>;
6957985788SYash Shah			d-cache-size = <32768>;
7057985788SYash Shah			d-tlb-sets = <1>;
7157985788SYash Shah			d-tlb-size = <40>;
7257985788SYash Shah			device_type = "cpu";
7357985788SYash Shah			i-cache-block-size = <64>;
7457985788SYash Shah			i-cache-sets = <128>;
7557985788SYash Shah			i-cache-size = <32768>;
7657985788SYash Shah			i-tlb-sets = <1>;
7757985788SYash Shah			i-tlb-size = <40>;
7857985788SYash Shah			mmu-type = "riscv,sv39";
7957985788SYash Shah			next-level-cache = <&ccache>;
8057985788SYash Shah			reg = <0x2>;
8157985788SYash Shah			riscv,isa = "rv64imafdc";
8257985788SYash Shah			tlb-split;
8357985788SYash Shah			cpu2_intc: interrupt-controller {
8457985788SYash Shah				#interrupt-cells = <1>;
8557985788SYash Shah				compatible = "riscv,cpu-intc";
8657985788SYash Shah				interrupt-controller;
8757985788SYash Shah			};
8857985788SYash Shah		};
8957985788SYash Shah		cpu3: cpu@3 {
9057985788SYash Shah			compatible = "sifive,bullet0", "riscv";
9157985788SYash Shah			d-cache-block-size = <64>;
9257985788SYash Shah			d-cache-sets = <64>;
9357985788SYash Shah			d-cache-size = <32768>;
9457985788SYash Shah			d-tlb-sets = <1>;
9557985788SYash Shah			d-tlb-size = <40>;
9657985788SYash Shah			device_type = "cpu";
9757985788SYash Shah			i-cache-block-size = <64>;
9857985788SYash Shah			i-cache-sets = <128>;
9957985788SYash Shah			i-cache-size = <32768>;
10057985788SYash Shah			i-tlb-sets = <1>;
10157985788SYash Shah			i-tlb-size = <40>;
10257985788SYash Shah			mmu-type = "riscv,sv39";
10357985788SYash Shah			next-level-cache = <&ccache>;
10457985788SYash Shah			reg = <0x3>;
10557985788SYash Shah			riscv,isa = "rv64imafdc";
10657985788SYash Shah			tlb-split;
10757985788SYash Shah			cpu3_intc: interrupt-controller {
10857985788SYash Shah				#interrupt-cells = <1>;
10957985788SYash Shah				compatible = "riscv,cpu-intc";
11057985788SYash Shah				interrupt-controller;
11157985788SYash Shah			};
11257985788SYash Shah		};
11357985788SYash Shah		cpu4: cpu@4 {
11457985788SYash Shah			compatible = "sifive,bullet0", "riscv";
11557985788SYash Shah			d-cache-block-size = <64>;
11657985788SYash Shah			d-cache-sets = <64>;
11757985788SYash Shah			d-cache-size = <32768>;
11857985788SYash Shah			d-tlb-sets = <1>;
11957985788SYash Shah			d-tlb-size = <40>;
12057985788SYash Shah			device_type = "cpu";
12157985788SYash Shah			i-cache-block-size = <64>;
12257985788SYash Shah			i-cache-sets = <128>;
12357985788SYash Shah			i-cache-size = <32768>;
12457985788SYash Shah			i-tlb-sets = <1>;
12557985788SYash Shah			i-tlb-size = <40>;
12657985788SYash Shah			mmu-type = "riscv,sv39";
12757985788SYash Shah			next-level-cache = <&ccache>;
12857985788SYash Shah			reg = <0x4>;
12957985788SYash Shah			riscv,isa = "rv64imafdc";
13057985788SYash Shah			tlb-split;
13157985788SYash Shah			cpu4_intc: interrupt-controller {
13257985788SYash Shah				#interrupt-cells = <1>;
13357985788SYash Shah				compatible = "riscv,cpu-intc";
13457985788SYash Shah				interrupt-controller;
13557985788SYash Shah			};
13657985788SYash Shah		};
13757985788SYash Shah	};
13857985788SYash Shah	soc {
13957985788SYash Shah		#address-cells = <2>;
14057985788SYash Shah		#size-cells = <2>;
14157985788SYash Shah		compatible = "simple-bus";
14257985788SYash Shah		ranges;
14357985788SYash Shah		plic0: interrupt-controller@c000000 {
14457985788SYash Shah			#interrupt-cells = <1>;
14557985788SYash Shah			#address-cells = <0>;
14657985788SYash Shah			compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0";
14757985788SYash Shah			reg = <0x0 0xc000000 0x0 0x4000000>;
14857985788SYash Shah			riscv,ndev = <69>;
14957985788SYash Shah			interrupt-controller;
15057985788SYash Shah			interrupts-extended = <
15157985788SYash Shah				&cpu0_intc 0xffffffff
15257985788SYash Shah				&cpu1_intc 0xffffffff &cpu1_intc 9
15357985788SYash Shah				&cpu2_intc 0xffffffff &cpu2_intc 9
15457985788SYash Shah				&cpu3_intc 0xffffffff &cpu3_intc 9
15557985788SYash Shah				&cpu4_intc 0xffffffff &cpu4_intc 9>;
15657985788SYash Shah		};
15757985788SYash Shah		prci: clock-controller@10000000 {
15857985788SYash Shah			compatible = "sifive,fu740-c000-prci";
15957985788SYash Shah			reg = <0x0 0x10000000 0x0 0x1000>;
16057985788SYash Shah			clocks = <&hfclk>, <&rtcclk>;
16157985788SYash Shah			#clock-cells = <1>;
162*ae80d514SGreentime Hu			#reset-cells = <1>;
16357985788SYash Shah		};
16457985788SYash Shah		uart0: serial@10010000 {
16557985788SYash Shah			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
16657985788SYash Shah			reg = <0x0 0x10010000 0x0 0x1000>;
16757985788SYash Shah			interrupt-parent = <&plic0>;
16857985788SYash Shah			interrupts = <39>;
16957985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
17057985788SYash Shah			status = "disabled";
17157985788SYash Shah		};
17257985788SYash Shah		uart1: serial@10011000 {
17357985788SYash Shah			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
17457985788SYash Shah			reg = <0x0 0x10011000 0x0 0x1000>;
17557985788SYash Shah			interrupt-parent = <&plic0>;
17657985788SYash Shah			interrupts = <40>;
17757985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
17857985788SYash Shah			status = "disabled";
17957985788SYash Shah		};
18057985788SYash Shah		i2c0: i2c@10030000 {
18157985788SYash Shah			compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
18257985788SYash Shah			reg = <0x0 0x10030000 0x0 0x1000>;
18357985788SYash Shah			interrupt-parent = <&plic0>;
18457985788SYash Shah			interrupts = <52>;
18557985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
18657985788SYash Shah			reg-shift = <2>;
18757985788SYash Shah			reg-io-width = <1>;
18857985788SYash Shah			#address-cells = <1>;
18957985788SYash Shah			#size-cells = <0>;
19057985788SYash Shah			status = "disabled";
19157985788SYash Shah		};
19257985788SYash Shah		i2c1: i2c@10031000 {
19357985788SYash Shah			compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
19457985788SYash Shah			reg = <0x0 0x10031000 0x0 0x1000>;
19557985788SYash Shah			interrupt-parent = <&plic0>;
19657985788SYash Shah			interrupts = <53>;
19757985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
19857985788SYash Shah			reg-shift = <2>;
19957985788SYash Shah			reg-io-width = <1>;
20057985788SYash Shah			#address-cells = <1>;
20157985788SYash Shah			#size-cells = <0>;
20257985788SYash Shah			status = "disabled";
20357985788SYash Shah		};
20457985788SYash Shah		qspi0: spi@10040000 {
20557985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
20657985788SYash Shah			reg = <0x0 0x10040000 0x0 0x1000>,
20757985788SYash Shah			      <0x0 0x20000000 0x0 0x10000000>;
20857985788SYash Shah			interrupt-parent = <&plic0>;
20957985788SYash Shah			interrupts = <41>;
21057985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
21157985788SYash Shah			#address-cells = <1>;
21257985788SYash Shah			#size-cells = <0>;
21357985788SYash Shah			status = "disabled";
21457985788SYash Shah		};
21557985788SYash Shah		qspi1: spi@10041000 {
21657985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
21757985788SYash Shah			reg = <0x0 0x10041000 0x0 0x1000>,
21857985788SYash Shah			      <0x0 0x30000000 0x0 0x10000000>;
21957985788SYash Shah			interrupt-parent = <&plic0>;
22057985788SYash Shah			interrupts = <42>;
22157985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
22257985788SYash Shah			#address-cells = <1>;
22357985788SYash Shah			#size-cells = <0>;
22457985788SYash Shah			status = "disabled";
22557985788SYash Shah		};
22657985788SYash Shah		spi0: spi@10050000 {
22757985788SYash Shah			compatible = "sifive,fu740-c000-spi", "sifive,spi0";
22857985788SYash Shah			reg = <0x0 0x10050000 0x0 0x1000>;
22957985788SYash Shah			interrupt-parent = <&plic0>;
23057985788SYash Shah			interrupts = <43>;
23157985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
23257985788SYash Shah			#address-cells = <1>;
23357985788SYash Shah			#size-cells = <0>;
23457985788SYash Shah			status = "disabled";
23557985788SYash Shah		};
23657985788SYash Shah		eth0: ethernet@10090000 {
23757985788SYash Shah			compatible = "sifive,fu540-c000-gem";
23857985788SYash Shah			interrupt-parent = <&plic0>;
23957985788SYash Shah			interrupts = <55>;
24057985788SYash Shah			reg = <0x0 0x10090000 0x0 0x2000>,
24157985788SYash Shah			      <0x0 0x100a0000 0x0 0x1000>;
24257985788SYash Shah			local-mac-address = [00 00 00 00 00 00];
24357985788SYash Shah			clock-names = "pclk", "hclk";
24457985788SYash Shah			clocks = <&prci PRCI_CLK_GEMGXLPLL>,
24557985788SYash Shah				 <&prci PRCI_CLK_GEMGXLPLL>;
24657985788SYash Shah			#address-cells = <1>;
24757985788SYash Shah			#size-cells = <0>;
24857985788SYash Shah			status = "disabled";
24957985788SYash Shah		};
25057985788SYash Shah		pwm0: pwm@10020000 {
25157985788SYash Shah			compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
25257985788SYash Shah			reg = <0x0 0x10020000 0x0 0x1000>;
25357985788SYash Shah			interrupt-parent = <&plic0>;
25457985788SYash Shah			interrupts = <44>, <45>, <46>, <47>;
25557985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
25657985788SYash Shah			#pwm-cells = <3>;
25757985788SYash Shah			status = "disabled";
25857985788SYash Shah		};
25957985788SYash Shah		pwm1: pwm@10021000 {
26057985788SYash Shah			compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
26157985788SYash Shah			reg = <0x0 0x10021000 0x0 0x1000>;
26257985788SYash Shah			interrupt-parent = <&plic0>;
26357985788SYash Shah			interrupts = <48>, <49>, <50>, <51>;
26457985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
26557985788SYash Shah			#pwm-cells = <3>;
26657985788SYash Shah			status = "disabled";
26757985788SYash Shah		};
26857985788SYash Shah		ccache: cache-controller@2010000 {
26957985788SYash Shah			compatible = "sifive,fu740-c000-ccache", "cache";
27057985788SYash Shah			cache-block-size = <64>;
27157985788SYash Shah			cache-level = <2>;
27257985788SYash Shah			cache-sets = <2048>;
27357985788SYash Shah			cache-size = <2097152>;
27457985788SYash Shah			cache-unified;
27557985788SYash Shah			interrupt-parent = <&plic0>;
27657985788SYash Shah			interrupts = <19 20 21 22>;
27757985788SYash Shah			reg = <0x0 0x2010000 0x0 0x1000>;
27857985788SYash Shah		};
27957985788SYash Shah		gpio: gpio@10060000 {
28057985788SYash Shah			compatible = "sifive,fu740-c000-gpio", "sifive,gpio0";
28157985788SYash Shah			interrupt-parent = <&plic0>;
28257985788SYash Shah			interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
28357985788SYash Shah				     <30>, <31>, <32>, <33>, <34>, <35>, <36>,
28457985788SYash Shah				     <37>, <38>;
28557985788SYash Shah			reg = <0x0 0x10060000 0x0 0x1000>;
28657985788SYash Shah			gpio-controller;
28757985788SYash Shah			#gpio-cells = <2>;
28857985788SYash Shah			interrupt-controller;
28957985788SYash Shah			#interrupt-cells = <2>;
29057985788SYash Shah			clocks = <&prci PRCI_CLK_PCLK>;
29157985788SYash Shah			status = "disabled";
29257985788SYash Shah		};
293*ae80d514SGreentime Hu		pcie@e00000000 {
294*ae80d514SGreentime Hu			compatible = "sifive,fu740-pcie";
295*ae80d514SGreentime Hu			#address-cells = <3>;
296*ae80d514SGreentime Hu			#size-cells = <2>;
297*ae80d514SGreentime Hu			#interrupt-cells = <1>;
298*ae80d514SGreentime Hu			reg = <0xe 0x00000000 0x0 0x80000000>,
299*ae80d514SGreentime Hu			      <0xd 0xf0000000 0x0 0x10000000>,
300*ae80d514SGreentime Hu			      <0x0 0x100d0000 0x0 0x1000>;
301*ae80d514SGreentime Hu			reg-names = "dbi", "config", "mgmt";
302*ae80d514SGreentime Hu			device_type = "pci";
303*ae80d514SGreentime Hu			dma-coherent;
304*ae80d514SGreentime Hu			bus-range = <0x0 0xff>;
305*ae80d514SGreentime Hu			ranges = <0x81000000  0x0 0x60080000  0x0 0x60080000 0x0 0x10000>,      /* I/O */
306*ae80d514SGreentime Hu				 <0x82000000  0x0 0x60090000  0x0 0x60090000 0x0 0xff70000>,    /* mem */
307*ae80d514SGreentime Hu				 <0x82000000  0x0 0x70000000  0x0 0x70000000 0x0 0x1000000>,    /* mem */
308*ae80d514SGreentime Hu				 <0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>;  /* mem prefetchable */
309*ae80d514SGreentime Hu			num-lanes = <0x8>;
310*ae80d514SGreentime Hu			interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>;
311*ae80d514SGreentime Hu			interrupt-names = "msi", "inta", "intb", "intc", "intd";
312*ae80d514SGreentime Hu			interrupt-parent = <&plic0>;
313*ae80d514SGreentime Hu			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
314*ae80d514SGreentime Hu			interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>,
315*ae80d514SGreentime Hu					<0x0 0x0 0x0 0x2 &plic0 58>,
316*ae80d514SGreentime Hu					<0x0 0x0 0x0 0x3 &plic0 59>,
317*ae80d514SGreentime Hu					<0x0 0x0 0x0 0x4 &plic0 60>;
318*ae80d514SGreentime Hu			clock-names = "pcie_aux";
319*ae80d514SGreentime Hu			clocks = <&prci PRCI_CLK_PCIE_AUX>;
320*ae80d514SGreentime Hu			pwren-gpios = <&gpio 5 0>;
321*ae80d514SGreentime Hu			reset-gpios = <&gpio 8 0>;
322*ae80d514SGreentime Hu			resets = <&prci 4>;
323*ae80d514SGreentime Hu			status = "okay";
324*ae80d514SGreentime Hu		};
32557985788SYash Shah	};
32657985788SYash Shah};
327