blob: 90ad887c22b0f54ec796841bdebe06108379b8d6 [file] [log] [blame]
Anas Nashif3ae52622019-04-06 09:08:09 -04001/* SPDX-License-Identifier: Apache-2.0 */
2
Kumar Galada7ac502018-10-04 17:02:42 -05003#include <dt-bindings/gpio/gpio.h>
4
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -07005/ {
6 #address-cells = <1>;
7 #size-cells = <1>;
Martí Bolívar3422b2d2021-08-03 15:26:24 -07008 compatible = "sifive,FE310G-0002-Z0-dev", "fe310-dev", "sifive-dev";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -07009 model = "SiFive,FE310G-0002-Z0";
10 cpus {
11 #address-cells = <1>;
12 #size-cells = <0>;
Nicolas Pitre7f748252019-07-18 23:07:45 -040013 cpu: cpu@0 {
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070014 clock-frequency = <0>;
15 compatible = "sifive,rocket0", "riscv";
16 device_type = "cpu";
17 i-cache-block-size = <64>;
18 i-cache-sets = <128>;
19 i-cache-size = <16384>;
20 next-level-cache = <&modeselect &maskrom &otp &spi0>;
21 reg = <0>;
22 riscv,isa = "rv32imac";
23 sifive,dtim = <&dtim>;
24 sifive,itim = <&itim>;
25 status = "okay";
26 timebase-frequency = <32768>;
27 hlic: interrupt-controller {
28 #interrupt-cells = <1>;
29 compatible = "riscv,cpu-intc";
30 interrupt-controller;
31 };
32 };
33 };
34 soc {
35 #address-cells = <1>;
36 #size-cells = <1>;
Martí Bolívar3422b2d2021-08-03 15:26:24 -070037 compatible = "sifive,FE310G-0002-Z0-soc", "fe310-soc",
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070038 "sifive-soc", "simple-bus";
39 ranges;
Katsuhiro Suzukibbc563f2021-01-15 10:43:08 +090040 wdog0: wdog@10000000 {
41 compatible = "sifive,wdt";
42 interrupt-parent = <&plic>;
43 interrupts = <1 1>;
44 reg = <0x10000000 0x40>;
45 reg-names = "control";
46 label = "WDOG0";
47 };
48 aon: aon@10000040 {
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070049 compatible = "sifive,aon0";
50 interrupt-parent = <&plic>;
Katsuhiro Suzukibbc563f2021-01-15 10:43:08 +090051 interrupts = <2 1>;
52 reg = <0x10000040 0x9c0>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070053 reg-names = "control";
54 };
55 clint: clint@2000000 {
Katsuhiro Suzuki0a6918d2020-10-22 10:49:12 +090056 #interrupt-cells = <1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070057 compatible = "riscv,clint0";
Katsuhiro Suzuki0a6918d2020-10-22 10:49:12 +090058 interrupt-controller;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070059 interrupts-extended = <&hlic 3 &hlic 7>;
60 reg = <0x2000000 0x10000>;
61 reg-names = "control";
62 };
63 debug: debug-controller@0 {
64 compatible = "sifive,debug-013", "riscv,debug-013";
65 interrupts-extended = <&hlic 65535>;
66 reg = <0x0 0x1000>;
67 reg-names = "control";
68 };
69 dtim: dtim@80000000 {
70 compatible = "sifive,dtim0";
71 reg = <0x80000000 0x4000>;
72 reg-names = "mem";
73 };
74 error-device@3000 {
75 compatible = "sifive,error0";
76 reg = <0x3000 0x1000>;
77 reg-names = "mem";
78 };
79 gpio0: gpio@10012000 {
80 compatible = "sifive,gpio0";
Kumar Galada7ac502018-10-04 17:02:42 -050081 gpio-controller;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070082 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +090083 interrupts = <8 1>, <9 1>, <10 1>, <11 1>,
84 <12 1>, <13 1>, <14 1>, <15 1>,
85 <16 1>, <17 1>, <18 1>, <19 1>,
86 <20 1>, <21 1>, <22 1>, <23 1>,
87 <24 1>, <25 1>, <26 1>, <27 1>,
88 <28 1>, <29 1>, <30 1>, <31 1>,
89 <32 1>, <33 1>, <34 1>, <35 1>,
90 <36 1>, <37 1>, <38 1>, <39 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070091 reg = <0x10012000 0x1000>;
92 reg-names = "control";
Nathaniel Graff3093f5c2019-03-20 15:58:07 -070093 label = "gpio_0";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -070094 status = "disabled";
Kumar Galada7ac502018-10-04 17:02:42 -050095 #gpio-cells = <2>;
Kumar Galaf6b7dd02021-02-11 07:26:41 -060096
97 #address-cells = <1>;
98 #size-cells = <1>;
99 ranges;
100
101 pinctrl: pinctrl@10012038 {
102 compatible = "sifive,iof";
103 reg = <0x10012038 0x8>;
104 };
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700105 };
106 i2c0: i2c@10016000 {
107 compatible = "sifive,i2c0";
108 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900109 interrupts = <52 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700110 reg = <0x10016000 0x1000>;
111 reg-names = "control";
Nathaniel Graffcca49b02018-11-28 16:45:40 -0800112 label = "i2c_0";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700113 status = "disabled";
Kumar Gala0bed1002019-06-19 00:20:17 -0500114 #address-cells = <1>;
115 #size-cells = <0>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700116 };
117 plic: interrupt-controller@c000000 {
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900118 #interrupt-cells = <2>;
Ulf Magnusson5d0db512019-08-01 18:14:52 +0200119 compatible = "sifive,plic-1.0.0";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700120 interrupt-controller;
121 interrupts-extended = <&hlic 11>;
Peter A. Bigot7c15bae2020-03-23 18:34:46 -0500122 reg = <0x0c000000 0x00002000
123 0x0c002000 0x001fe000
124 0x0c200000 0x03e00000>;
Nathaniel Graff078f6092018-11-30 15:17:03 -0800125 reg-names = "prio", "irq_en", "reg";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700126 riscv,max-priority = <7>;
127 riscv,ndev = <52>;
128 };
129 itim: itim@8000000 {
130 compatible = "sifive,itim0";
131 reg = <0x8000000 0x4000>;
132 reg-names = "mem";
133 };
134 otp: otp@10010000 {
135 compatible = "sifive,otp0";
136 reg = <0x10010000 0x1000 0x20000 0x2000>;
137 reg-names = "control", "mem";
138 };
139 prci: prci@10008000 {
140 compatible = "sifive,freedome300prci0";
141 reg = <0x10008000 0x1000>;
142 reg-names = "control";
143 };
144 pwm0: pwm@10015000 {
145 compatible = "sifive,pwm0";
146 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900147 interrupts = <40 1>, <41 1>, <42 1>, <43 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700148 reg = <0x10015000 0x1000>;
149 reg-names = "control";
Nathaniel Graff3dade9e2018-11-21 14:20:21 -0800150 label = "pwm_0";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700151 status = "disabled";
Nathaniel Graff3dade9e2018-11-21 14:20:21 -0800152 sifive,compare-width = <8>;
Kumar Gala540405c2018-11-01 15:20:05 -0500153 #pwm-cells = <2>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700154 };
155 pwm1: pwm@10025000 {
156 compatible = "sifive,pwm0";
157 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900158 interrupts = <44 1>, <45 1>, <46 1>, <47 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700159 reg = <0x10025000 0x1000>;
160 reg-names = "control";
Nathaniel Graff3dade9e2018-11-21 14:20:21 -0800161 label = "pwm_1";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700162 status = "disabled";
Nathaniel Graff3dade9e2018-11-21 14:20:21 -0800163 sifive,compare-width = <16>;
Kumar Gala540405c2018-11-01 15:20:05 -0500164 #pwm-cells = <2>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700165 };
166 pwm2: pwm@10035000 {
167 compatible = "sifive,pwm0";
168 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900169 interrupts = <48 1>, <49 1>, <50 1>, <51 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700170 reg = <0x10035000 0x1000>;
171 reg-names = "control";
Nathaniel Graff3dade9e2018-11-21 14:20:21 -0800172 label = "pwm_2";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700173 status = "disabled";
Nathaniel Graff3dade9e2018-11-21 14:20:21 -0800174 sifive,compare-width = <16>;
Kumar Gala540405c2018-11-01 15:20:05 -0500175 #pwm-cells = <2>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700176 };
177 modeselect: rom@1000 {
178 compatible = "sifive,modeselect0";
179 reg = <0x1000 0x1000>;
180 reg-names = "mem";
181 };
182 maskrom: rom@10000 {
183 compatible = "sifive,maskrom0";
184 reg = <0x10000 0x2000>;
185 reg-names = "mem";
186 };
187 uart0: serial@10013000 {
188 compatible = "sifive,uart0";
189 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900190 interrupts = <3 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700191 reg = <0x10013000 0x1000>;
192 reg-names = "control";
193 label = "uart_0";
194 status = "disabled";
195 };
196 uart1: serial@10023000 {
197 compatible = "sifive,uart0";
198 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900199 interrupts = <4 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700200 reg = <0x10023000 0x1000>;
201 reg-names = "control";
Sören Tempel5311a7d2019-04-24 14:34:32 +0200202 label = "uart_1";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700203 status = "disabled";
204 };
205 spi0: spi@10014000 {
206 compatible = "sifive,spi0";
207 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900208 interrupts = <5 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700209 reg = <0x10014000 0x1000 0x20000000 0x20000000>;
210 reg-names = "control", "mem";
Nathaniel Graff596e44d2018-11-21 11:30:29 -0800211 label = "spi_0";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700212 status = "disabled";
Kumar Gala0bed1002019-06-19 00:20:17 -0500213 #address-cells = <1>;
214 #size-cells = <0>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700215 };
216 spi1: spi@10024000 {
217 compatible = "sifive,spi0";
218 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900219 interrupts = <6 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700220 reg = <0x10024000 0x1000>;
221 reg-names = "control";
Nathaniel Graff596e44d2018-11-21 11:30:29 -0800222 label = "spi_1";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700223 status = "disabled";
Kumar Gala0bed1002019-06-19 00:20:17 -0500224 #address-cells = <1>;
225 #size-cells = <0>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700226 };
227 spi2: spi@10034000 {
228 compatible = "sifive,spi0";
229 interrupt-parent = <&plic>;
Katsuhiro Suzuki32f23052020-11-26 02:14:29 +0900230 interrupts = <7 1>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700231 reg = <0x10034000 0x1000>;
232 reg-names = "control";
Nathaniel Graff596e44d2018-11-21 11:30:29 -0800233 label = "spi_2";
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700234 status = "disabled";
Kumar Gala0bed1002019-06-19 00:20:17 -0500235 #address-cells = <1>;
236 #size-cells = <0>;
Nathaniel Graff45d5d5d2018-07-31 09:31:44 -0700237 };
238 teststatus: teststatus@4000 {
239 compatible = "sifive,test0";
240 reg = <0x4000 0x1000>;
241 reg-names = "control";
242 };
243 };
244};