1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
2 /* Copyright (c) 2020 Microchip Technology Inc */
5 #include "dt-bindings/clock/microchip-mpfs-clock.h"
7 /* Clock frequency (in Hz) of the rtcclk */
8 #define RTCCLK_FREQ 1000000
13 model = "Microchip MPFS Icicle Kit";
14 compatible = "microchip,mpfs-icicle-kit";
22 stdout-path = "serial0";
28 timebase-frequency = <RTCCLK_FREQ>;
30 clocks = <&clkcfg CLK_CPU>;
31 compatible = "sifive,e51", "sifive,rocket0", "riscv";
33 i-cache-block-size = <64>;
35 i-cache-size = <16384>;
37 riscv,isa = "rv64imac";
45 cpu0intc: interrupt-controller {
46 #interrupt-cells = <1>;
47 compatible = "riscv,cpu-intc";
52 clocks = <&clkcfg CLK_CPU>;
53 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
54 d-cache-block-size = <64>;
56 d-cache-size = <32768>;
60 i-cache-block-size = <64>;
62 i-cache-size = <32768>;
65 mmu-type = "riscv,sv39";
67 riscv,isa = "rv64imafdc";
76 cpu1intc: interrupt-controller {
77 #interrupt-cells = <1>;
78 compatible = "riscv,cpu-intc";
83 clocks = <&clkcfg CLK_CPU>;
84 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
85 d-cache-block-size = <64>;
87 d-cache-size = <32768>;
91 i-cache-block-size = <64>;
93 i-cache-size = <32768>;
96 mmu-type = "riscv,sv39";
98 riscv,isa = "rv64imafdc";
107 cpu2intc: interrupt-controller {
108 #interrupt-cells = <1>;
109 compatible = "riscv,cpu-intc";
110 interrupt-controller;
114 clocks = <&clkcfg CLK_CPU>;
115 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
116 d-cache-block-size = <64>;
118 d-cache-size = <32768>;
122 i-cache-block-size = <64>;
124 i-cache-size = <32768>;
127 mmu-type = "riscv,sv39";
129 riscv,isa = "rv64imafdc";
138 cpu3intc: interrupt-controller {
139 #interrupt-cells = <1>;
140 compatible = "riscv,cpu-intc";
141 interrupt-controller;
145 clocks = <&clkcfg CLK_CPU>;
146 compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
147 d-cache-block-size = <64>;
149 d-cache-size = <32768>;
153 i-cache-block-size = <64>;
155 i-cache-size = <32768>;
158 mmu-type = "riscv,sv39";
160 riscv,isa = "rv64imafdc";
169 cpu4intc: interrupt-controller {
170 #interrupt-cells = <1>;
171 compatible = "riscv,cpu-intc";
172 interrupt-controller;
177 compatible = "fixed-clock";
179 clock-frequency = <600000000>;
180 clock-output-names = "msspllclk";
182 ddr: memory@80000000 {
183 device_type = "memory";
184 reg = <0x0 0x80000000 0x0 0x40000000>;
185 clocks = <&clkcfg CLK_DDRC>;
188 #address-cells = <2>;
190 compatible = "microchip,mpfs-icicle-kit", "simple-bus";
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>;
203 cachecontroller: cache-controller@2010000 {
204 compatible = "sifive,fu540-c000-ccache", "cache";
205 cache-block-size = <64>;
208 cache-size = <2097152>;
210 interrupt-parent = <&plic>;
211 interrupts = <1 2 3>;
212 reg = <0x0 0x2010000 0x0 0x1000>;
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>;
220 interrupt-controller;
221 interrupts-extended = <
223 &cpu1intc 11 &cpu1intc 9
224 &cpu2intc 11 &cpu2intc 9
225 &cpu3intc 11 &cpu3intc 9
226 &cpu4intc 11 &cpu4intc 9>;
228 uart0: serial@20000000 {
229 compatible = "ns16550a";
230 reg = <0x0 0x20000000 0x0 0x400>;
233 interrupt-parent = <&plic>;
235 clocks = <&clkcfg CLK_MMUART0>;
238 clkcfg: clkcfg@20002000 {
239 compatible = "microchip,mpfs-clkcfg";
240 reg = <0x0 0x20002000 0x0 0x1000>;
241 reg-names = "mss_sysreg";
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",
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>;
264 max-frequency = <200000000>;
268 voltage-ranges = <3300 3300>;
271 sdcard: sd@20008000 {
272 compatible = "cdns,sd4hc";
273 reg = <0x0 0x20008000 0x0 0x1000>;
274 interrupt-parent = <&plic>;
276 pinctrl-names = "default";
277 clocks = <&clkcfg CLK_MMC>;
281 card-detect-delay = <200>;
286 max-frequency = <200000000>;
289 uart1: serial@20100000 {
290 compatible = "ns16550a";
291 reg = <0x0 0x20100000 0x0 0x400>;
294 interrupt-parent = <&plic>;
296 clocks = <&clkcfg CLK_MMUART1>;
299 uart2: serial@20102000 {
300 compatible = "ns16550a";
301 reg = <0x0 0x20102000 0x0 0x400>;
304 interrupt-parent = <&plic>;
306 clocks = <&clkcfg CLK_MMUART2>;
309 uart3: serial@20104000 {
310 compatible = "ns16550a";
311 reg = <0x0 0x20104000 0x0 0x400>;
314 interrupt-parent = <&plic>;
316 clocks = <&clkcfg CLK_MMUART3>;
320 #address-cells = <1>;
322 compatible = "microchip,mpfs-mss-i2c";
323 reg = <0x0 0x2010a000 0x0 0x1000>;
324 interrupt-parent = <&plic>;
326 clocks = <&clkcfg CLK_I2C0>;
330 #address-cells = <1>;
332 compatible = "microchip,mpfs-mss-i2c";
333 reg = <0x0 0x2010b000 0x0 0x1000>;
334 interrupt-parent = <&plic>;
336 clocks = <&clkcfg CLK_I2C1>;
339 compatible = "microchip,pac1934";
344 uohms-shunt-res = <10000>;
349 uohms-shunt-res = <10000>;
350 rail-name = "VDDA25";
354 uohms-shunt-res = <10000>;
359 uohms-shunt-res = <10000>;
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];
372 clocks = <&clkcfg CLK_MAC0>, <&clkcfg CLK_AXI>;
373 clock-names = "pclk", "hclk";
376 #address-cells = <1>;
378 phy-handle = <&phy0>;
379 phy0: ethernet-phy@8 {
381 ti,fifo-depth = <0x01>;
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];
391 clocks = <&clkcfg CLK_MAC1>, <&clkcfg CLK_AHB>;
392 clock-names = "pclk", "hclk";
395 #address-cells = <1>;
397 phy-handle = <&phy1>;
398 phy1: ethernet-phy@9 {
400 ti,fifo-depth = <0x01>;
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
410 clocks = <&clkcfg CLK_GPIO2>;
411 reg = <0x00 0x20122000 0x0 0x1000>;
412 reg-names = "control";