Loading...
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
4 * Copyright (C) 2023 Inochi Amaoto <inochiama@outlook.com>
5 */
6
7#include <dt-bindings/interrupt-controller/irq.h>
8
9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12
13 cpus: cpus {
14 #address-cells = <1>;
15 #size-cells = <0>;
16 timebase-frequency = <25000000>;
17
18 cpu0: cpu@0 {
19 compatible = "thead,c906", "riscv";
20 device_type = "cpu";
21 reg = <0>;
22 d-cache-block-size = <64>;
23 d-cache-sets = <512>;
24 d-cache-size = <65536>;
25 i-cache-block-size = <64>;
26 i-cache-sets = <128>;
27 i-cache-size = <32768>;
28 mmu-type = "riscv,sv39";
29 riscv,isa = "rv64imafdc";
30 riscv,isa-base = "rv64i";
31 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
32 "zifencei", "zihpm";
33
34 cpu0_intc: interrupt-controller {
35 compatible = "riscv,cpu-intc";
36 interrupt-controller;
37 #interrupt-cells = <1>;
38 };
39 };
40 };
41
42 osc: oscillator {
43 compatible = "fixed-clock";
44 clock-output-names = "osc_25m";
45 #clock-cells = <0>;
46 };
47
48 soc {
49 compatible = "simple-bus";
50 interrupt-parent = <&plic>;
51 #address-cells = <1>;
52 #size-cells = <1>;
53 dma-noncoherent;
54 ranges;
55
56 gpio0: gpio@3020000 {
57 compatible = "snps,dw-apb-gpio";
58 reg = <0x3020000 0x1000>;
59 #address-cells = <1>;
60 #size-cells = <0>;
61
62 porta: gpio-controller@0 {
63 compatible = "snps,dw-apb-gpio-port";
64 gpio-controller;
65 #gpio-cells = <2>;
66 ngpios = <32>;
67 reg = <0>;
68 interrupt-controller;
69 #interrupt-cells = <2>;
70 interrupts = <60 IRQ_TYPE_LEVEL_HIGH>;
71 };
72 };
73
74 gpio1: gpio@3021000 {
75 compatible = "snps,dw-apb-gpio";
76 reg = <0x3021000 0x1000>;
77 #address-cells = <1>;
78 #size-cells = <0>;
79
80 portb: gpio-controller@0 {
81 compatible = "snps,dw-apb-gpio-port";
82 gpio-controller;
83 #gpio-cells = <2>;
84 ngpios = <32>;
85 reg = <0>;
86 interrupt-controller;
87 #interrupt-cells = <2>;
88 interrupts = <61 IRQ_TYPE_LEVEL_HIGH>;
89 };
90 };
91
92 gpio2: gpio@3022000 {
93 compatible = "snps,dw-apb-gpio";
94 reg = <0x3022000 0x1000>;
95 #address-cells = <1>;
96 #size-cells = <0>;
97
98 portc: gpio-controller@0 {
99 compatible = "snps,dw-apb-gpio-port";
100 gpio-controller;
101 #gpio-cells = <2>;
102 ngpios = <32>;
103 reg = <0>;
104 interrupt-controller;
105 #interrupt-cells = <2>;
106 interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
107 };
108 };
109
110 gpio3: gpio@3023000 {
111 compatible = "snps,dw-apb-gpio";
112 reg = <0x3023000 0x1000>;
113 #address-cells = <1>;
114 #size-cells = <0>;
115
116 portd: gpio-controller@0 {
117 compatible = "snps,dw-apb-gpio-port";
118 gpio-controller;
119 #gpio-cells = <2>;
120 ngpios = <32>;
121 reg = <0>;
122 interrupt-controller;
123 #interrupt-cells = <2>;
124 interrupts = <63 IRQ_TYPE_LEVEL_HIGH>;
125 };
126 };
127
128 uart0: serial@4140000 {
129 compatible = "snps,dw-apb-uart";
130 reg = <0x04140000 0x100>;
131 interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
132 clocks = <&osc>;
133 reg-shift = <2>;
134 reg-io-width = <4>;
135 status = "disabled";
136 };
137
138 uart1: serial@4150000 {
139 compatible = "snps,dw-apb-uart";
140 reg = <0x04150000 0x100>;
141 interrupts = <45 IRQ_TYPE_LEVEL_HIGH>;
142 clocks = <&osc>;
143 reg-shift = <2>;
144 reg-io-width = <4>;
145 status = "disabled";
146 };
147
148 uart2: serial@4160000 {
149 compatible = "snps,dw-apb-uart";
150 reg = <0x04160000 0x100>;
151 interrupts = <46 IRQ_TYPE_LEVEL_HIGH>;
152 clocks = <&osc>;
153 reg-shift = <2>;
154 reg-io-width = <4>;
155 status = "disabled";
156 };
157
158 uart3: serial@4170000 {
159 compatible = "snps,dw-apb-uart";
160 reg = <0x04170000 0x100>;
161 interrupts = <47 IRQ_TYPE_LEVEL_HIGH>;
162 clocks = <&osc>;
163 reg-shift = <2>;
164 reg-io-width = <4>;
165 status = "disabled";
166 };
167
168 uart4: serial@41c0000 {
169 compatible = "snps,dw-apb-uart";
170 reg = <0x041c0000 0x100>;
171 interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
172 clocks = <&osc>;
173 reg-shift = <2>;
174 reg-io-width = <4>;
175 status = "disabled";
176 };
177
178 plic: interrupt-controller@70000000 {
179 reg = <0x70000000 0x4000000>;
180 interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
181 interrupt-controller;
182 #address-cells = <0>;
183 #interrupt-cells = <2>;
184 riscv,ndev = <101>;
185 };
186
187 clint: timer@74000000 {
188 reg = <0x74000000 0x10000>;
189 interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
190 };
191 };
192};
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
4 * Copyright (C) 2023 Inochi Amaoto <inochiama@outlook.com>
5 */
6
7#include <dt-bindings/clock/sophgo,cv1800.h>
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/interrupt-controller/irq.h>
10
11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
14
15 cpus: cpus {
16 #address-cells = <1>;
17 #size-cells = <0>;
18 timebase-frequency = <25000000>;
19
20 cpu0: cpu@0 {
21 compatible = "thead,c906", "riscv";
22 device_type = "cpu";
23 reg = <0>;
24 d-cache-block-size = <64>;
25 d-cache-sets = <512>;
26 d-cache-size = <65536>;
27 i-cache-block-size = <64>;
28 i-cache-sets = <128>;
29 i-cache-size = <32768>;
30 mmu-type = "riscv,sv39";
31 riscv,isa = "rv64imafdc";
32 riscv,isa-base = "rv64i";
33 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
34 "zifencei", "zihpm";
35
36 cpu0_intc: interrupt-controller {
37 compatible = "riscv,cpu-intc";
38 interrupt-controller;
39 #interrupt-cells = <1>;
40 };
41 };
42 };
43
44 osc: oscillator {
45 compatible = "fixed-clock";
46 clock-output-names = "osc_25m";
47 #clock-cells = <0>;
48 };
49
50 soc {
51 compatible = "simple-bus";
52 interrupt-parent = <&plic>;
53 #address-cells = <1>;
54 #size-cells = <1>;
55 dma-noncoherent;
56 ranges;
57
58 clk: clock-controller@3002000 {
59 reg = <0x03002000 0x1000>;
60 clocks = <&osc>;
61 #clock-cells = <1>;
62 };
63
64 gpio0: gpio@3020000 {
65 compatible = "snps,dw-apb-gpio";
66 reg = <0x3020000 0x1000>;
67 #address-cells = <1>;
68 #size-cells = <0>;
69
70 porta: gpio-controller@0 {
71 compatible = "snps,dw-apb-gpio-port";
72 gpio-controller;
73 #gpio-cells = <2>;
74 ngpios = <32>;
75 reg = <0>;
76 interrupt-controller;
77 #interrupt-cells = <2>;
78 interrupts = <60 IRQ_TYPE_LEVEL_HIGH>;
79 };
80 };
81
82 gpio1: gpio@3021000 {
83 compatible = "snps,dw-apb-gpio";
84 reg = <0x3021000 0x1000>;
85 #address-cells = <1>;
86 #size-cells = <0>;
87
88 portb: gpio-controller@0 {
89 compatible = "snps,dw-apb-gpio-port";
90 gpio-controller;
91 #gpio-cells = <2>;
92 ngpios = <32>;
93 reg = <0>;
94 interrupt-controller;
95 #interrupt-cells = <2>;
96 interrupts = <61 IRQ_TYPE_LEVEL_HIGH>;
97 };
98 };
99
100 gpio2: gpio@3022000 {
101 compatible = "snps,dw-apb-gpio";
102 reg = <0x3022000 0x1000>;
103 #address-cells = <1>;
104 #size-cells = <0>;
105
106 portc: gpio-controller@0 {
107 compatible = "snps,dw-apb-gpio-port";
108 gpio-controller;
109 #gpio-cells = <2>;
110 ngpios = <32>;
111 reg = <0>;
112 interrupt-controller;
113 #interrupt-cells = <2>;
114 interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
115 };
116 };
117
118 gpio3: gpio@3023000 {
119 compatible = "snps,dw-apb-gpio";
120 reg = <0x3023000 0x1000>;
121 #address-cells = <1>;
122 #size-cells = <0>;
123
124 portd: gpio-controller@0 {
125 compatible = "snps,dw-apb-gpio-port";
126 gpio-controller;
127 #gpio-cells = <2>;
128 ngpios = <32>;
129 reg = <0>;
130 interrupt-controller;
131 #interrupt-cells = <2>;
132 interrupts = <63 IRQ_TYPE_LEVEL_HIGH>;
133 };
134 };
135
136 saradc: adc@30f0000 {
137 compatible = "sophgo,cv1800b-saradc";
138 reg = <0x030f0000 0x1000>;
139 clocks = <&clk CLK_SARADC>;
140 interrupts = <100 IRQ_TYPE_LEVEL_HIGH>;
141 #address-cells = <1>;
142 #size-cells = <0>;
143 status = "disabled";
144
145 channel@0 {
146 reg = <0>;
147 };
148
149 channel@1 {
150 reg = <1>;
151 };
152
153 channel@2 {
154 reg = <2>;
155 };
156 };
157
158 i2c0: i2c@4000000 {
159 compatible = "snps,designware-i2c";
160 reg = <0x04000000 0x10000>;
161 #address-cells = <1>;
162 #size-cells = <0>;
163 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C0>;
164 clock-names = "ref", "pclk";
165 interrupts = <49 IRQ_TYPE_LEVEL_HIGH>;
166 status = "disabled";
167 };
168
169 i2c1: i2c@4010000 {
170 compatible = "snps,designware-i2c";
171 reg = <0x04010000 0x10000>;
172 #address-cells = <1>;
173 #size-cells = <0>;
174 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C1>;
175 clock-names = "ref", "pclk";
176 interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
177 status = "disabled";
178 };
179
180 i2c2: i2c@4020000 {
181 compatible = "snps,designware-i2c";
182 reg = <0x04020000 0x10000>;
183 #address-cells = <1>;
184 #size-cells = <0>;
185 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C2>;
186 clock-names = "ref", "pclk";
187 interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
188 status = "disabled";
189 };
190
191 i2c3: i2c@4030000 {
192 compatible = "snps,designware-i2c";
193 reg = <0x04030000 0x10000>;
194 #address-cells = <1>;
195 #size-cells = <0>;
196 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C3>;
197 clock-names = "ref", "pclk";
198 interrupts = <52 IRQ_TYPE_LEVEL_HIGH>;
199 status = "disabled";
200 };
201
202 i2c4: i2c@4040000 {
203 compatible = "snps,designware-i2c";
204 reg = <0x04040000 0x10000>;
205 #address-cells = <1>;
206 #size-cells = <0>;
207 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C4>;
208 clock-names = "ref", "pclk";
209 interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
210 status = "disabled";
211 };
212
213 uart0: serial@4140000 {
214 compatible = "snps,dw-apb-uart";
215 reg = <0x04140000 0x100>;
216 interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
217 clocks = <&clk CLK_UART0>, <&clk CLK_APB_UART0>;
218 clock-names = "baudclk", "apb_pclk";
219 reg-shift = <2>;
220 reg-io-width = <4>;
221 status = "disabled";
222 };
223
224 uart1: serial@4150000 {
225 compatible = "snps,dw-apb-uart";
226 reg = <0x04150000 0x100>;
227 interrupts = <45 IRQ_TYPE_LEVEL_HIGH>;
228 clocks = <&clk CLK_UART1>, <&clk CLK_APB_UART1>;
229 clock-names = "baudclk", "apb_pclk";
230 reg-shift = <2>;
231 reg-io-width = <4>;
232 status = "disabled";
233 };
234
235 uart2: serial@4160000 {
236 compatible = "snps,dw-apb-uart";
237 reg = <0x04160000 0x100>;
238 interrupts = <46 IRQ_TYPE_LEVEL_HIGH>;
239 clocks = <&clk CLK_UART2>, <&clk CLK_APB_UART2>;
240 clock-names = "baudclk", "apb_pclk";
241 reg-shift = <2>;
242 reg-io-width = <4>;
243 status = "disabled";
244 };
245
246 uart3: serial@4170000 {
247 compatible = "snps,dw-apb-uart";
248 reg = <0x04170000 0x100>;
249 interrupts = <47 IRQ_TYPE_LEVEL_HIGH>;
250 clocks = <&clk CLK_UART3>, <&clk CLK_APB_UART3>;
251 clock-names = "baudclk", "apb_pclk";
252 reg-shift = <2>;
253 reg-io-width = <4>;
254 status = "disabled";
255 };
256
257 spi0: spi@4180000 {
258 compatible = "snps,dw-apb-ssi";
259 reg = <0x04180000 0x10000>;
260 #address-cells = <1>;
261 #size-cells = <0>;
262 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI0>;
263 clock-names = "ssi_clk", "pclk";
264 interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
265 status = "disabled";
266 };
267
268 spi1: spi@4190000 {
269 compatible = "snps,dw-apb-ssi";
270 reg = <0x04190000 0x10000>;
271 #address-cells = <1>;
272 #size-cells = <0>;
273 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI1>;
274 clock-names = "ssi_clk", "pclk";
275 interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
276 status = "disabled";
277 };
278
279 spi2: spi@41a0000 {
280 compatible = "snps,dw-apb-ssi";
281 reg = <0x041a0000 0x10000>;
282 #address-cells = <1>;
283 #size-cells = <0>;
284 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI2>;
285 clock-names = "ssi_clk", "pclk";
286 interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
287 status = "disabled";
288 };
289
290 spi3: spi@41b0000 {
291 compatible = "snps,dw-apb-ssi";
292 reg = <0x041b0000 0x10000>;
293 #address-cells = <1>;
294 #size-cells = <0>;
295 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI3>;
296 clock-names = "ssi_clk", "pclk";
297 interrupts = <57 IRQ_TYPE_LEVEL_HIGH>;
298 status = "disabled";
299 };
300
301 uart4: serial@41c0000 {
302 compatible = "snps,dw-apb-uart";
303 reg = <0x041c0000 0x100>;
304 interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
305 clocks = <&clk CLK_UART4>, <&clk CLK_APB_UART4>;
306 clock-names = "baudclk", "apb_pclk";
307 reg-shift = <2>;
308 reg-io-width = <4>;
309 status = "disabled";
310 };
311
312 sdhci0: mmc@4310000 {
313 compatible = "sophgo,cv1800b-dwcmshc";
314 reg = <0x4310000 0x1000>;
315 interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
316 clocks = <&clk CLK_AXI4_SD0>,
317 <&clk CLK_SD0>;
318 clock-names = "core", "bus";
319 status = "disabled";
320 };
321
322 sdhci1: mmc@4320000 {
323 compatible = "sophgo,cv1800b-dwcmshc";
324 reg = <0x4320000 0x1000>;
325 interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
326 clocks = <&clk CLK_AXI4_SD1>,
327 <&clk CLK_SD1>;
328 clock-names = "core", "bus";
329 status = "disabled";
330 };
331
332 dmac: dma-controller@4330000 {
333 compatible = "snps,axi-dma-1.01a";
334 reg = <0x04330000 0x1000>;
335 interrupts = <29 IRQ_TYPE_LEVEL_HIGH>;
336 clocks = <&clk CLK_SDMA_AXI>, <&clk CLK_SDMA_AXI>;
337 clock-names = "core-clk", "cfgr-clk";
338 #dma-cells = <1>;
339 dma-channels = <8>;
340 snps,block-size = <1024 1024 1024 1024
341 1024 1024 1024 1024>;
342 snps,priority = <0 1 2 3 4 5 6 7>;
343 snps,dma-masters = <2>;
344 snps,data-width = <4>;
345 status = "disabled";
346 };
347
348 plic: interrupt-controller@70000000 {
349 reg = <0x70000000 0x4000000>;
350 interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
351 interrupt-controller;
352 #address-cells = <0>;
353 #interrupt-cells = <2>;
354 riscv,ndev = <101>;
355 };
356
357 clint: timer@74000000 {
358 reg = <0x74000000 0x10000>;
359 interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
360 };
361 };
362};