1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
2 /* Copyright (c) 2020-2021 SiFive, Inc */
6 #include <dt-bindings/clock/sifive-fu740-prci.h>
7 #include <dt-bindings/reset/sifive-fu740-prci.h>
12 compatible = "sifive,fu740-c000", "sifive,fu740";
27 compatible = "sifive,bullet0", "riscv";
29 i-cache-block-size = <64>;
31 i-cache-size = <16384>;
32 next-level-cache = <&ccache>;
34 riscv,isa = "rv64imac";
36 cpu0_intc: interrupt-controller {
37 #interrupt-cells = <1>;
38 compatible = "riscv,cpu-intc";
43 compatible = "sifive,bullet0", "riscv";
44 d-cache-block-size = <64>;
46 d-cache-size = <32768>;
50 i-cache-block-size = <64>;
52 i-cache-size = <32768>;
55 mmu-type = "riscv,sv39";
56 next-level-cache = <&ccache>;
58 riscv,isa = "rv64imafdc";
60 cpu1_intc: interrupt-controller {
61 #interrupt-cells = <1>;
62 compatible = "riscv,cpu-intc";
67 compatible = "sifive,bullet0", "riscv";
68 d-cache-block-size = <64>;
70 d-cache-size = <32768>;
74 i-cache-block-size = <64>;
76 i-cache-size = <32768>;
79 mmu-type = "riscv,sv39";
80 next-level-cache = <&ccache>;
82 riscv,isa = "rv64imafdc";
84 cpu2_intc: interrupt-controller {
85 #interrupt-cells = <1>;
86 compatible = "riscv,cpu-intc";
91 compatible = "sifive,bullet0", "riscv";
92 d-cache-block-size = <64>;
94 d-cache-size = <32768>;
98 i-cache-block-size = <64>;
100 i-cache-size = <32768>;
103 mmu-type = "riscv,sv39";
104 next-level-cache = <&ccache>;
106 riscv,isa = "rv64imafdc";
108 cpu3_intc: interrupt-controller {
109 #interrupt-cells = <1>;
110 compatible = "riscv,cpu-intc";
111 interrupt-controller;
115 compatible = "sifive,bullet0", "riscv";
116 d-cache-block-size = <64>;
118 d-cache-size = <32768>;
122 i-cache-block-size = <64>;
123 i-cache-sets = <128>;
124 i-cache-size = <32768>;
127 mmu-type = "riscv,sv39";
128 next-level-cache = <&ccache>;
130 riscv,isa = "rv64imafdc";
132 cpu4_intc: interrupt-controller {
133 #interrupt-cells = <1>;
134 compatible = "riscv,cpu-intc";
135 interrupt-controller;
140 #address-cells = <2>;
142 compatible = "sifive,fu740-c000", "sifive,fu740", "simple-bus";
144 plic0: interrupt-controller@c000000 {
145 #interrupt-cells = <1>;
146 compatible = "sifive,plic-1.0.0";
147 reg = <0x0 0xc000000 0x0 0x4000000>;
149 interrupt-controller;
150 interrupts-extended = <
151 &cpu0_intc 0xffffffff
152 &cpu1_intc 0xffffffff &cpu1_intc 9
153 &cpu2_intc 0xffffffff &cpu2_intc 9
154 &cpu3_intc 0xffffffff &cpu3_intc 9
155 &cpu4_intc 0xffffffff &cpu4_intc 9>;
157 prci: clock-controller@10000000 {
158 compatible = "sifive,fu740-c000-prci";
159 reg = <0x0 0x10000000 0x0 0x1000>;
160 clocks = <&hfclk>, <&rtcclk>;
164 uart0: serial@10010000 {
165 compatible = "sifive,fu740-c000-uart", "sifive,uart0";
166 reg = <0x0 0x10010000 0x0 0x1000>;
167 interrupt-parent = <&plic0>;
169 clocks = <&prci PRCI_CLK_PCLK>;
172 uart1: serial@10011000 {
173 compatible = "sifive,fu740-c000-uart", "sifive,uart0";
174 reg = <0x0 0x10011000 0x0 0x1000>;
175 interrupt-parent = <&plic0>;
177 clocks = <&prci PRCI_CLK_PCLK>;
181 compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
182 reg = <0x0 0x10030000 0x0 0x1000>;
183 interrupt-parent = <&plic0>;
185 clocks = <&prci PRCI_CLK_PCLK>;
188 #address-cells = <1>;
193 compatible = "sifive,fu740-c000-i2c", "sifive,i2c0";
194 reg = <0x0 0x10031000 0x0 0x1000>;
195 interrupt-parent = <&plic0>;
197 clocks = <&prci PRCI_CLK_PCLK>;
200 #address-cells = <1>;
204 qspi0: spi@10040000 {
205 compatible = "sifive,fu740-c000-spi", "sifive,spi0";
206 reg = <0x0 0x10040000 0x0 0x1000
207 0x0 0x20000000 0x0 0x10000000>;
208 interrupt-parent = <&plic0>;
210 clocks = <&prci PRCI_CLK_PCLK>;
211 #address-cells = <1>;
215 qspi1: spi@10041000 {
216 compatible = "sifive,fu740-c000-spi", "sifive,spi0";
217 reg = <0x0 0x10041000 0x0 0x1000
218 0x0 0x30000000 0x0 0x10000000>;
219 interrupt-parent = <&plic0>;
221 clocks = <&prci PRCI_CLK_PCLK>;
222 #address-cells = <1>;
227 compatible = "sifive,fu740-c000-spi", "sifive,spi0";
228 reg = <0x0 0x10050000 0x0 0x1000>;
229 interrupt-parent = <&plic0>;
231 clocks = <&prci PRCI_CLK_PCLK>;
232 #address-cells = <1>;
236 eth0: ethernet@10090000 {
237 compatible = "sifive,fu540-c000-gem";
238 interrupt-parent = <&plic0>;
240 reg = <0x0 0x10090000 0x0 0x2000
241 0x0 0x100a0000 0x0 0x1000>;
242 local-mac-address = [00 00 00 00 00 00];
243 clock-names = "pclk", "hclk";
244 clocks = <&prci PRCI_CLK_GEMGXLPLL>,
245 <&prci PRCI_CLK_GEMGXLPLL>;
246 #address-cells = <1>;
251 compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
252 reg = <0x0 0x10020000 0x0 0x1000>;
253 interrupt-parent = <&plic0>;
254 interrupts = <44 45 46 47>;
255 clocks = <&prci PRCI_CLK_PCLK>;
260 compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
261 reg = <0x0 0x10021000 0x0 0x1000>;
262 interrupt-parent = <&plic0>;
263 interrupts = <48 49 50 51>;
264 clocks = <&prci PRCI_CLK_PCLK>;
268 ccache: cache-controller@2010000 {
269 compatible = "sifive,fu740-c000-ccache", "cache";
270 cache-block-size = <64>;
273 cache-size = <2097152>;
275 interrupt-parent = <&plic0>;
276 interrupts = <19 21 22 20>;
277 reg = <0x0 0x2010000 0x0 0x1000>;
279 gpio: gpio@10060000 {
280 compatible = "sifive,fu740-c000-gpio", "sifive,gpio0";
281 interrupt-parent = <&plic0>;
282 interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
283 <30>, <31>, <32>, <33>, <34>, <35>, <36>,
285 reg = <0x0 0x10060000 0x0 0x1000>;
288 interrupt-controller;
289 #interrupt-cells = <2>;
290 clocks = <&prci PRCI_CLK_PCLK>;
294 #address-cells = <3>;
295 #interrupt-cells = <1>;
298 compatible = "sifive,fu740-pcie";
299 reg = <0xe 0x00000000 0x1 0x0
300 0xd 0xf0000000 0x0 0x10000000
301 0x0 0x100d0000 0x0 0x1000>;
302 reg-names = "dbi", "config", "mgmt";
305 bus-range = <0x0 0xff>;
306 ranges = <0x81000000 0x0 0x60080000 0x0 0x60080000 0x0 0x10000
307 0x82000000 0x0 0x60090000 0x0 0x60090000 0x0 0xff70000
308 0x82000000 0x0 0x70000000 0x0 0x70000000 0x0 0x1000000
309 0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>;
311 interrupts = <56 57 58 59 60 61 62 63 64>;
312 interrupt-names = "msi", "inta", "intb", "intc", "intd";
313 interrupt-parent = <&plic0>;
314 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
315 interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>,
316 <0x0 0x0 0x0 0x2 &plic0 58>,
317 <0x0 0x0 0x0 0x3 &plic0 59>,
318 <0x0 0x0 0x0 0x4 &plic0 60>;
319 pwren-gpios = <&gpio 5 0>;
320 reset-gpios = <&gpio 8 0>;
321 clocks = <&prci PRCI_CLK_PCIEAUX>;
322 clock-names = "pcieaux";
323 resets = <&prci PRCI_RST_PCIE_POWER_UP_N>;
324 reset-names = "rst_n";