blob: 869aaf0d5c066c9d0d208c150be98a4765f3bef9 [file] [log] [blame]
Atish Patra0fa61072021-03-03 12:02:51 -08001// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/* Copyright (c) 2020 Microchip Technology Inc */
3
4/dts-v1/;
5
6/ {
7 #address-cells = <2>;
8 #size-cells = <2>;
Krzysztof Kozlowskifd86dd22021-09-27 14:50:41 +02009 model = "Microchip PolarFire SoC";
10 compatible = "microchip,mpfs";
Atish Patra0fa61072021-03-03 12:02:51 -080011
Atish Patra0fa61072021-03-03 12:02:51 -080012 cpus {
13 #address-cells = <1>;
14 #size-cells = <0>;
15
16 cpu@0 {
17 clock-frequency = <0>;
18 compatible = "sifive,e51", "sifive,rocket0", "riscv";
19 device_type = "cpu";
20 i-cache-block-size = <64>;
21 i-cache-sets = <128>;
22 i-cache-size = <16384>;
23 reg = <0>;
24 riscv,isa = "rv64imac";
25 status = "disabled";
26
27 cpu0_intc: interrupt-controller {
28 #interrupt-cells = <1>;
29 compatible = "riscv,cpu-intc";
30 interrupt-controller;
31 };
32 };
33
34 cpu@1 {
35 clock-frequency = <0>;
36 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
37 d-cache-block-size = <64>;
38 d-cache-sets = <64>;
39 d-cache-size = <32768>;
40 d-tlb-sets = <1>;
41 d-tlb-size = <32>;
42 device_type = "cpu";
43 i-cache-block-size = <64>;
44 i-cache-sets = <64>;
45 i-cache-size = <32768>;
46 i-tlb-sets = <1>;
47 i-tlb-size = <32>;
48 mmu-type = "riscv,sv39";
49 reg = <1>;
50 riscv,isa = "rv64imafdc";
51 tlb-split;
52 status = "okay";
53
54 cpu1_intc: interrupt-controller {
55 #interrupt-cells = <1>;
56 compatible = "riscv,cpu-intc";
57 interrupt-controller;
58 };
59 };
60
61 cpu@2 {
62 clock-frequency = <0>;
63 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
64 d-cache-block-size = <64>;
65 d-cache-sets = <64>;
66 d-cache-size = <32768>;
67 d-tlb-sets = <1>;
68 d-tlb-size = <32>;
69 device_type = "cpu";
70 i-cache-block-size = <64>;
71 i-cache-sets = <64>;
72 i-cache-size = <32768>;
73 i-tlb-sets = <1>;
74 i-tlb-size = <32>;
75 mmu-type = "riscv,sv39";
76 reg = <2>;
77 riscv,isa = "rv64imafdc";
78 tlb-split;
79 status = "okay";
80
81 cpu2_intc: interrupt-controller {
82 #interrupt-cells = <1>;
83 compatible = "riscv,cpu-intc";
84 interrupt-controller;
85 };
86 };
87
88 cpu@3 {
89 clock-frequency = <0>;
90 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
91 d-cache-block-size = <64>;
92 d-cache-sets = <64>;
93 d-cache-size = <32768>;
94 d-tlb-sets = <1>;
95 d-tlb-size = <32>;
96 device_type = "cpu";
97 i-cache-block-size = <64>;
98 i-cache-sets = <64>;
99 i-cache-size = <32768>;
100 i-tlb-sets = <1>;
101 i-tlb-size = <32>;
102 mmu-type = "riscv,sv39";
103 reg = <3>;
104 riscv,isa = "rv64imafdc";
105 tlb-split;
106 status = "okay";
107
108 cpu3_intc: interrupt-controller {
109 #interrupt-cells = <1>;
110 compatible = "riscv,cpu-intc";
111 interrupt-controller;
112 };
113 };
114
115 cpu@4 {
116 clock-frequency = <0>;
117 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
118 d-cache-block-size = <64>;
119 d-cache-sets = <64>;
120 d-cache-size = <32768>;
121 d-tlb-sets = <1>;
122 d-tlb-size = <32>;
123 device_type = "cpu";
124 i-cache-block-size = <64>;
125 i-cache-sets = <64>;
126 i-cache-size = <32768>;
127 i-tlb-sets = <1>;
128 i-tlb-size = <32>;
129 mmu-type = "riscv,sv39";
130 reg = <4>;
131 riscv,isa = "rv64imafdc";
132 tlb-split;
133 status = "okay";
134 cpu4_intc: interrupt-controller {
135 #interrupt-cells = <1>;
136 compatible = "riscv,cpu-intc";
137 interrupt-controller;
138 };
139 };
140 };
141
Geert Uytterhoeven9d7b3072021-12-17 13:49:26 +0100142 refclk: msspllclk {
143 compatible = "fixed-clock";
144 #clock-cells = <0>;
145 };
146
Atish Patra0fa61072021-03-03 12:02:51 -0800147 soc {
148 #address-cells = <2>;
149 #size-cells = <2>;
150 compatible = "simple-bus";
151 ranges;
152
153 cache-controller@2010000 {
154 compatible = "sifive,fu540-c000-ccache", "cache";
155 cache-block-size = <64>;
156 cache-level = <2>;
157 cache-sets = <1024>;
158 cache-size = <2097152>;
159 cache-unified;
160 interrupt-parent = <&plic>;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100161 interrupts = <1>, <2>, <3>;
Atish Patra0fa61072021-03-03 12:02:51 -0800162 reg = <0x0 0x2010000 0x0 0x1000>;
163 };
164
165 clint@2000000 {
Krzysztof Kozlowski73d3c442021-09-20 15:04:11 +0200166 compatible = "sifive,fu540-c000-clint", "sifive,clint0";
Atish Patra0fa61072021-03-03 12:02:51 -0800167 reg = <0x0 0x2000000 0x0 0xC000>;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100168 interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
169 <&cpu1_intc 3>, <&cpu1_intc 7>,
170 <&cpu2_intc 3>, <&cpu2_intc 7>,
171 <&cpu3_intc 3>, <&cpu3_intc 7>,
172 <&cpu4_intc 3>, <&cpu4_intc 7>;
Atish Patra0fa61072021-03-03 12:02:51 -0800173 };
174
175 plic: interrupt-controller@c000000 {
Krzysztof Kozlowski73d3c442021-09-20 15:04:11 +0200176 compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0";
Atish Patra0fa61072021-03-03 12:02:51 -0800177 reg = <0x0 0xc000000 0x0 0x4000000>;
Geert Uytterhoeven53abf982021-12-17 13:49:25 +0100178 #address-cells = <0>;
179 #interrupt-cells = <1>;
Atish Patra0fa61072021-03-03 12:02:51 -0800180 interrupt-controller;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100181 interrupts-extended = <&cpu0_intc 11>,
182 <&cpu1_intc 11>, <&cpu1_intc 9>,
183 <&cpu2_intc 11>, <&cpu2_intc 9>,
184 <&cpu3_intc 11>, <&cpu3_intc 9>,
185 <&cpu4_intc 11>, <&cpu4_intc 9>;
Geert Uytterhoeven53abf982021-12-17 13:49:25 +0100186 riscv,ndev = <186>;
Atish Patra0fa61072021-03-03 12:02:51 -0800187 };
188
189 dma@3000000 {
190 compatible = "sifive,fu540-c000-pdma";
191 reg = <0x0 0x3000000 0x0 0x8000>;
192 interrupt-parent = <&plic>;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100193 interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
194 <30>;
Atish Patra0fa61072021-03-03 12:02:51 -0800195 #dma-cells = <1>;
196 };
197
Atish Patra0fa61072021-03-03 12:02:51 -0800198 clkcfg: clkcfg@20002000 {
199 compatible = "microchip,mpfs-clkcfg";
200 reg = <0x0 0x20002000 0x0 0x1000>;
Atish Patra0fa61072021-03-03 12:02:51 -0800201 clocks = <&refclk>;
202 #clock-cells = <1>;
Atish Patra0fa61072021-03-03 12:02:51 -0800203 };
204
205 serial0: serial@20000000 {
206 compatible = "ns16550a";
207 reg = <0x0 0x20000000 0x0 0x400>;
208 reg-io-width = <4>;
209 reg-shift = <2>;
210 interrupt-parent = <&plic>;
211 interrupts = <90>;
212 current-speed = <115200>;
213 clocks = <&clkcfg 8>;
214 status = "disabled";
215 };
216
217 serial1: serial@20100000 {
218 compatible = "ns16550a";
219 reg = <0x0 0x20100000 0x0 0x400>;
220 reg-io-width = <4>;
221 reg-shift = <2>;
222 interrupt-parent = <&plic>;
223 interrupts = <91>;
224 current-speed = <115200>;
225 clocks = <&clkcfg 9>;
226 status = "disabled";
227 };
228
229 serial2: serial@20102000 {
230 compatible = "ns16550a";
231 reg = <0x0 0x20102000 0x0 0x400>;
232 reg-io-width = <4>;
233 reg-shift = <2>;
234 interrupt-parent = <&plic>;
235 interrupts = <92>;
236 current-speed = <115200>;
237 clocks = <&clkcfg 10>;
238 status = "disabled";
239 };
240
241 serial3: serial@20104000 {
242 compatible = "ns16550a";
243 reg = <0x0 0x20104000 0x0 0x400>;
244 reg-io-width = <4>;
245 reg-shift = <2>;
246 interrupt-parent = <&plic>;
247 interrupts = <93>;
248 current-speed = <115200>;
249 clocks = <&clkcfg 11>;
250 status = "disabled";
251 };
252
Krzysztof Kozlowski42a57a42021-09-27 14:50:42 +0200253 /* Common node entry for emmc/sd */
254 mmc: mmc@20008000 {
Krzysztof Kozlowski94063692021-09-27 14:50:44 +0200255 compatible = "microchip,mpfs-sd4hc", "cdns,sd4hc";
Atish Patra0fa61072021-03-03 12:02:51 -0800256 reg = <0x0 0x20008000 0x0 0x1000>;
257 interrupt-parent = <&plic>;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100258 interrupts = <88>, <89>;
Atish Patra0fa61072021-03-03 12:02:51 -0800259 clocks = <&clkcfg 6>;
Atish Patra0fa61072021-03-03 12:02:51 -0800260 max-frequency = <200000000>;
261 status = "disabled";
262 };
263
264 emac0: ethernet@20110000 {
265 compatible = "cdns,macb";
266 reg = <0x0 0x20110000 0x0 0x2000>;
267 interrupt-parent = <&plic>;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100268 interrupts = <64>, <65>, <66>, <67>;
Atish Patra0fa61072021-03-03 12:02:51 -0800269 local-mac-address = [00 00 00 00 00 00];
270 clocks = <&clkcfg 4>, <&clkcfg 2>;
271 clock-names = "pclk", "hclk";
272 status = "disabled";
273 #address-cells = <1>;
274 #size-cells = <0>;
275 };
276
277 emac1: ethernet@20112000 {
278 compatible = "cdns,macb";
279 reg = <0x0 0x20112000 0x0 0x2000>;
280 interrupt-parent = <&plic>;
Geert Uytterhoevene35b07a2021-12-17 13:49:28 +0100281 interrupts = <70>, <71>, <72>, <73>;
Bin Meng719588d2021-08-04 20:30:14 +0800282 local-mac-address = [00 00 00 00 00 00];
Atish Patra0fa61072021-03-03 12:02:51 -0800283 clocks = <&clkcfg 5>, <&clkcfg 2>;
284 status = "disabled";
285 clock-names = "pclk", "hclk";
286 #address-cells = <1>;
287 #size-cells = <0>;
288 };
289
290 };
291};