blob: 89c4cf5fb2b0f89d6eafd3e1b18dd505b861e679 [file] [log] [blame]
Padmarao Begaridd4ee412021-01-15 08:20:39 +05301// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/* Copyright (c) 2020 Microchip Technology Inc */
3
4/dts-v1/;
5#include "dt-bindings/clock/microchip-mpfs-clock.h"
6
7/* Clock frequency (in Hz) of the rtcclk */
8#define RTCCLK_FREQ 1000000
9
10/ {
11 #address-cells = <2>;
12 #size-cells = <2>;
13 model = "Microchip MPFS Icicle Kit";
14 compatible = "microchip,mpfs-icicle-kit";
15
16 aliases {
17 serial0 = &uart0;
18 ethernet0 = &emac1;
19 };
20
21 chosen {
22 stdout-path = "serial0";
23 };
24
25 cpucomplex: cpus {
26 #address-cells = <1>;
27 #size-cells = <0>;
28 timebase-frequency = <RTCCLK_FREQ>;
29 cpu0: cpu@0 {
30 clocks = <&clkcfg CLK_CPU>;
31 compatible = "sifive,e51", "sifive,rocket0", "riscv";
32 device_type = "cpu";
33 i-cache-block-size = <64>;
34 i-cache-sets = <128>;
35 i-cache-size = <16384>;
36 reg = <0>;
37 riscv,isa = "rv64imac";
38 status = "disabled";
39 operating-points = <
40 /* kHz uV */
41 600000 1100000
42 300000 950000
43 150000 750000
44 >;
45 cpu0intc: interrupt-controller {
46 #interrupt-cells = <1>;
47 compatible = "riscv,cpu-intc";
48 interrupt-controller;
49 };
50 };
51 cpu1: cpu@1 {
52 clocks = <&clkcfg CLK_CPU>;
53 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
54 d-cache-block-size = <64>;
55 d-cache-sets = <64>;
56 d-cache-size = <32768>;
57 d-tlb-sets = <1>;
58 d-tlb-size = <32>;
59 device_type = "cpu";
60 i-cache-block-size = <64>;
61 i-cache-sets = <64>;
62 i-cache-size = <32768>;
63 i-tlb-sets = <1>;
64 i-tlb-size = <32>;
65 mmu-type = "riscv,sv39";
66 reg = <1>;
67 riscv,isa = "rv64imafdc";
68 tlb-split;
69 status = "okay";
70 operating-points = <
71 /* kHz uV */
72 600000 1100000
73 300000 950000
74 150000 750000
75 >;
76 cpu1intc: interrupt-controller {
77 #interrupt-cells = <1>;
78 compatible = "riscv,cpu-intc";
79 interrupt-controller;
80 };
81 };
82 cpu2: cpu@2 {
83 clocks = <&clkcfg CLK_CPU>;
84 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
85 d-cache-block-size = <64>;
86 d-cache-sets = <64>;
87 d-cache-size = <32768>;
88 d-tlb-sets = <1>;
89 d-tlb-size = <32>;
90 device_type = "cpu";
91 i-cache-block-size = <64>;
92 i-cache-sets = <64>;
93 i-cache-size = <32768>;
94 i-tlb-sets = <1>;
95 i-tlb-size = <32>;
96 mmu-type = "riscv,sv39";
97 reg = <2>;
98 riscv,isa = "rv64imafdc";
99 tlb-split;
100 status = "okay";
101 operating-points = <
102 /* kHz uV */
103 600000 1100000
104 300000 950000
105 150000 750000
106 >;
107 cpu2intc: interrupt-controller {
108 #interrupt-cells = <1>;
109 compatible = "riscv,cpu-intc";
110 interrupt-controller;
111 };
112 };
113 cpu3: cpu@3 {
114 clocks = <&clkcfg CLK_CPU>;
115 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
116 d-cache-block-size = <64>;
117 d-cache-sets = <64>;
118 d-cache-size = <32768>;
119 d-tlb-sets = <1>;
120 d-tlb-size = <32>;
121 device_type = "cpu";
122 i-cache-block-size = <64>;
123 i-cache-sets = <64>;
124 i-cache-size = <32768>;
125 i-tlb-sets = <1>;
126 i-tlb-size = <32>;
127 mmu-type = "riscv,sv39";
128 reg = <3>;
129 riscv,isa = "rv64imafdc";
130 tlb-split;
131 status = "okay";
132 operating-points = <
133 /* kHz uV */
134 600000 1100000
135 300000 950000
136 150000 750000
137 >;
138 cpu3intc: interrupt-controller {
139 #interrupt-cells = <1>;
140 compatible = "riscv,cpu-intc";
141 interrupt-controller;
142 };
143 };
144 cpu4: cpu@4 {
145 clocks = <&clkcfg CLK_CPU>;
146 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
147 d-cache-block-size = <64>;
148 d-cache-sets = <64>;
149 d-cache-size = <32768>;
150 d-tlb-sets = <1>;
151 d-tlb-size = <32>;
152 device_type = "cpu";
153 i-cache-block-size = <64>;
154 i-cache-sets = <64>;
155 i-cache-size = <32768>;
156 i-tlb-sets = <1>;
157 i-tlb-size = <32>;
158 mmu-type = "riscv,sv39";
159 reg = <4>;
160 riscv,isa = "rv64imafdc";
161 tlb-split;
162 status = "okay";
163 operating-points = <
164 /* kHz uV */
165 600000 1100000
166 300000 950000
167 150000 750000
168 >;
169 cpu4intc: interrupt-controller {
170 #interrupt-cells = <1>;
171 compatible = "riscv,cpu-intc";
172 interrupt-controller;
173 };
174 };
175 };
176 refclk: refclk {
177 compatible = "fixed-clock";
178 #clock-cells = <0>;
179 clock-frequency = <600000000>;
180 clock-output-names = "msspllclk";
181 };
182 ddr: memory@80000000 {
183 device_type = "memory";
184 reg = <0x0 0x80000000 0x0 0x40000000>;
185 clocks = <&clkcfg CLK_DDRC>;
186 };
187 soc: soc {
188 #address-cells = <2>;
189 #size-cells = <2>;
190 compatible = "microchip,mpfs-icicle-kit", "simple-bus";
191 ranges;
192 clint0: clint@2000000 {
193 compatible = "riscv,clint0";
194 interrupts-extended = <&cpu0intc 3 &cpu0intc 7
195 &cpu1intc 3 &cpu1intc 7
196 &cpu2intc 3 &cpu2intc 7
197 &cpu3intc 3 &cpu3intc 7
198 &cpu4intc 3 &cpu4intc 7>;
199 reg = <0x0 0x2000000 0x0 0x10000>;
200 reg-names = "control";
201 clock-frequency = <RTCCLK_FREQ>;
202 };
203 cachecontroller: cache-controller@2010000 {
204 compatible = "sifive,fu540-c000-ccache", "cache";
205 cache-block-size = <64>;
206 cache-level = <2>;
207 cache-sets = <1024>;
208 cache-size = <2097152>;
209 cache-unified;
210 interrupt-parent = <&plic>;
211 interrupts = <1 2 3>;
212 reg = <0x0 0x2010000 0x0 0x1000>;
213 };
214 plic: interrupt-controller@c000000 {
215 #interrupt-cells = <1>;
216 compatible = "sifive,plic-1.0.0";
217 reg = <0x0 0xc000000 0x0 0x4000000>;
218 riscv,max-priority = <7>;
219 riscv,ndev = <186>;
220 interrupt-controller;
221 interrupts-extended = <
222 &cpu0intc 11
223 &cpu1intc 11 &cpu1intc 9
224 &cpu2intc 11 &cpu2intc 9
225 &cpu3intc 11 &cpu3intc 9
226 &cpu4intc 11 &cpu4intc 9>;
227 };
228 uart0: serial@20000000 {
229 compatible = "ns16550a";
230 reg = <0x0 0x20000000 0x0 0x400>;
231 reg-io-width = <4>;
232 reg-shift = <2>;
233 interrupt-parent = <&plic>;
234 interrupts = <90>;
Padmarao Begaridd4ee412021-01-15 08:20:39 +0530235 clocks = <&clkcfg CLK_MMUART0>;
236 status = "okay";
237 };
238 clkcfg: clkcfg@20002000 {
239 compatible = "microchip,mpfs-clkcfg";
240 reg = <0x0 0x20002000 0x0 0x1000>;
241 reg-names = "mss_sysreg";
242 clocks = <&refclk>;
243 #clock-cells = <1>;
244 clock-output-names = "cpu", "axi", "ahb", "envm",
245 "mac0", "mac1", "mmc", "timer",
246 "mmuart0", "mmuart1", "mmuart2",
247 "mmuart3", "mmuart4", "spi0", "spi1",
248 "i2c0", "i2c1", "can0", "can1", "usb",
249 "reserved", "rtc", "qspi", "gpio0",
250 "gpio1", "gpio2", "ddrc", "fic0",
251 "fic1", "fic2", "fic3", "athena",
252 "cfm";
253 };
254 emmc: mmc@20008000 {
255 compatible = "cdns,sd4hc";
256 reg = <0x0 0x20008000 0x0 0x1000>;
257 interrupt-parent = <&plic>;
258 interrupts = <88 89>;
259 pinctrl-names = "default";
260 clocks = <&clkcfg CLK_MMC>;
261 bus-width = <4>;
262 cap-mmc-highspeed;
263 mmc-ddr-3_3v;
264 max-frequency = <200000000>;
265 non-removable;
266 no-sd;
267 no-sdio;
268 voltage-ranges = <3300 3300>;
269 status = "okay";
270 };
271 sdcard: sd@20008000 {
272 compatible = "cdns,sd4hc";
273 reg = <0x0 0x20008000 0x0 0x1000>;
274 interrupt-parent = <&plic>;
275 interrupts = <88>;
276 pinctrl-names = "default";
277 clocks = <&clkcfg CLK_MMC>;
278 bus-width = <4>;
279 disable-wp;
280 cap-sd-highspeed;
281 card-detect-delay = <200>;
282 sd-uhs-sdr12;
283 sd-uhs-sdr25;
284 sd-uhs-sdr50;
285 sd-uhs-sdr104;
286 max-frequency = <200000000>;
287 status = "disabled";
288 };
289 uart1: serial@20100000 {
290 compatible = "ns16550a";
291 reg = <0x0 0x20100000 0x0 0x400>;
292 reg-io-width = <4>;
293 reg-shift = <2>;
294 interrupt-parent = <&plic>;
295 interrupts = <91>;
Padmarao Begaridd4ee412021-01-15 08:20:39 +0530296 clocks = <&clkcfg CLK_MMUART1>;
297 status = "okay";
298 };
299 uart2: serial@20102000 {
300 compatible = "ns16550a";
301 reg = <0x0 0x20102000 0x0 0x400>;
302 reg-io-width = <4>;
303 reg-shift = <2>;
304 interrupt-parent = <&plic>;
305 interrupts = <92>;
Padmarao Begaridd4ee412021-01-15 08:20:39 +0530306 clocks = <&clkcfg CLK_MMUART2>;
307 status = "okay";
308 };
309 uart3: serial@20104000 {
310 compatible = "ns16550a";
311 reg = <0x0 0x20104000 0x0 0x400>;
312 reg-io-width = <4>;
313 reg-shift = <2>;
314 interrupt-parent = <&plic>;
315 interrupts = <93>;
Padmarao Begaridd4ee412021-01-15 08:20:39 +0530316 clocks = <&clkcfg CLK_MMUART3>;
317 status = "okay";
318 };
319 i2c0: i2c@2010a000 {
320 #address-cells = <1>;
321 #size-cells = <0>;
322 compatible = "microchip,mpfs-mss-i2c";
323 reg = <0x0 0x2010a000 0x0 0x1000>;
324 interrupt-parent = <&plic>;
325 interrupts = <58>;
326 clocks = <&clkcfg CLK_I2C0>;
327 status = "disabled";
328 };
329 i2c1: i2c@2010b000 {
330 #address-cells = <1>;
331 #size-cells = <0>;
332 compatible = "microchip,mpfs-mss-i2c";
333 reg = <0x0 0x2010b000 0x0 0x1000>;
334 interrupt-parent = <&plic>;
335 interrupts = <61>;
336 clocks = <&clkcfg CLK_I2C1>;
337 status = "disabled";
338 pac193x@10 {
339 compatible = "microchip,pac1934";
340 reg = <0x10>;
341 samp-rate = <64>;
342 status = "disabled";
343 ch1: channel0 {
344 uohms-shunt-res = <10000>;
345 rail-name = "VDD";
346 channel_enabled;
347 };
348 ch2: channel1 {
349 uohms-shunt-res = <10000>;
350 rail-name = "VDDA25";
351 channel_enabled;
352 };
353 ch3: channel2 {
354 uohms-shunt-res = <10000>;
355 rail-name = "VDD25";
356 channel_enabled;
357 };
358 ch4: channel3 {
359 uohms-shunt-res = <10000>;
360 rail-name = "VDDA";
361 channel_enabled;
362 };
363 };
364 };
365 emac0: ethernet@20110000 {
366 compatible = "microchip,mpfs-mss-gem";
367 reg = <0x0 0x20110000 0x0 0x2000>;
368 interrupt-parent = <&plic>;
369 interrupts = <64 65 66 67>;
370 local-mac-address = [56 34 00 FC 00 02];
371 phy-mode = "sgmii";
372 clocks = <&clkcfg CLK_MAC0>, <&clkcfg CLK_AXI>;
373 clock-names = "pclk", "hclk";
374 status = "disabled";
375
376 #address-cells = <1>;
377 #size-cells = <0>;
378 phy-handle = <&phy0>;
379 phy0: ethernet-phy@8 {
380 reg = <8>;
381 ti,fifo-depth = <0x01>;
382 };
383 };
384 emac1: ethernet@20112000 {
385 compatible = "microchip,mpfs-mss-gem";
386 reg = <0x0 0x20112000 0x0 0x2000>;
387 interrupt-parent = <&plic>;
388 interrupts = <70 71 72 73>;
389 local-mac-address = [00 00 00 00 00 00];
390 phy-mode = "sgmii";
391 clocks = <&clkcfg CLK_MAC1>, <&clkcfg CLK_AHB>;
392 clock-names = "pclk", "hclk";
393 status = "okay";
394
395 #address-cells = <1>;
396 #size-cells = <0>;
397 phy-handle = <&phy1>;
398 phy1: ethernet-phy@9 {
399 reg = <9>;
400 ti,fifo-depth = <0x01>;
401 };
402 };
403 gpio: gpio@20122000 {
404 compatible = "microchip,mpfs-mss-gpio";
405 interrupt-parent = <&plic>;
406 interrupts = <13 14 15 16 17 18 19 20 21 22 23 24 25 26
407 27 28 29 30 31 32 33 34 35 36 37 38 39
408 40 41 42 43 44>;
409 gpio-controller;
410 clocks = <&clkcfg CLK_GPIO2>;
411 reg = <0x00 0x20122000 0x0 0x1000>;
412 reg-names = "control";
413 #gpio-cells = <2>;
414 status = "disabled";
415 };
416 };
417};