Loading...
1// SPDX-License-Identifier: GPL-2.0 OR MIT
2/*
3 * Copyright (C) 2022 StarFive Technology Co., Ltd.
4 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
5 */
6
7/dts-v1/;
8#include <dt-bindings/clock/starfive,jh7110-crg.h>
9#include <dt-bindings/power/starfive,jh7110-pmu.h>
10#include <dt-bindings/reset/starfive,jh7110-crg.h>
11#include <dt-bindings/thermal/thermal.h>
12
13/ {
14 compatible = "starfive,jh7110";
15 #address-cells = <2>;
16 #size-cells = <2>;
17
18 cpus {
19 #address-cells = <1>;
20 #size-cells = <0>;
21
22 S7_0: cpu@0 {
23 compatible = "sifive,s7", "riscv";
24 reg = <0>;
25 device_type = "cpu";
26 i-cache-block-size = <64>;
27 i-cache-sets = <64>;
28 i-cache-size = <16384>;
29 next-level-cache = <&ccache>;
30 riscv,isa = "rv64imac_zba_zbb";
31 riscv,isa-base = "rv64i";
32 riscv,isa-extensions = "i", "m", "a", "c", "zba", "zbb", "zicntr", "zicsr",
33 "zifencei", "zihpm";
34 status = "disabled";
35
36 cpu0_intc: interrupt-controller {
37 compatible = "riscv,cpu-intc";
38 interrupt-controller;
39 #interrupt-cells = <1>;
40 };
41 };
42
43 U74_1: cpu@1 {
44 compatible = "sifive,u74-mc", "riscv";
45 reg = <1>;
46 d-cache-block-size = <64>;
47 d-cache-sets = <64>;
48 d-cache-size = <32768>;
49 d-tlb-sets = <1>;
50 d-tlb-size = <40>;
51 device_type = "cpu";
52 i-cache-block-size = <64>;
53 i-cache-sets = <64>;
54 i-cache-size = <32768>;
55 i-tlb-sets = <1>;
56 i-tlb-size = <40>;
57 mmu-type = "riscv,sv39";
58 next-level-cache = <&ccache>;
59 riscv,isa = "rv64imafdc_zba_zbb";
60 riscv,isa-base = "rv64i";
61 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
62 "zicsr", "zifencei", "zihpm";
63 tlb-split;
64 operating-points-v2 = <&cpu_opp>;
65 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
66 clock-names = "cpu";
67 #cooling-cells = <2>;
68
69 cpu1_intc: interrupt-controller {
70 compatible = "riscv,cpu-intc";
71 interrupt-controller;
72 #interrupt-cells = <1>;
73 };
74 };
75
76 U74_2: cpu@2 {
77 compatible = "sifive,u74-mc", "riscv";
78 reg = <2>;
79 d-cache-block-size = <64>;
80 d-cache-sets = <64>;
81 d-cache-size = <32768>;
82 d-tlb-sets = <1>;
83 d-tlb-size = <40>;
84 device_type = "cpu";
85 i-cache-block-size = <64>;
86 i-cache-sets = <64>;
87 i-cache-size = <32768>;
88 i-tlb-sets = <1>;
89 i-tlb-size = <40>;
90 mmu-type = "riscv,sv39";
91 next-level-cache = <&ccache>;
92 riscv,isa = "rv64imafdc_zba_zbb";
93 riscv,isa-base = "rv64i";
94 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
95 "zicsr", "zifencei", "zihpm";
96 tlb-split;
97 operating-points-v2 = <&cpu_opp>;
98 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
99 clock-names = "cpu";
100 #cooling-cells = <2>;
101
102 cpu2_intc: interrupt-controller {
103 compatible = "riscv,cpu-intc";
104 interrupt-controller;
105 #interrupt-cells = <1>;
106 };
107 };
108
109 U74_3: cpu@3 {
110 compatible = "sifive,u74-mc", "riscv";
111 reg = <3>;
112 d-cache-block-size = <64>;
113 d-cache-sets = <64>;
114 d-cache-size = <32768>;
115 d-tlb-sets = <1>;
116 d-tlb-size = <40>;
117 device_type = "cpu";
118 i-cache-block-size = <64>;
119 i-cache-sets = <64>;
120 i-cache-size = <32768>;
121 i-tlb-sets = <1>;
122 i-tlb-size = <40>;
123 mmu-type = "riscv,sv39";
124 next-level-cache = <&ccache>;
125 riscv,isa = "rv64imafdc_zba_zbb";
126 riscv,isa-base = "rv64i";
127 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
128 "zicsr", "zifencei", "zihpm";
129 tlb-split;
130 operating-points-v2 = <&cpu_opp>;
131 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
132 clock-names = "cpu";
133 #cooling-cells = <2>;
134
135 cpu3_intc: interrupt-controller {
136 compatible = "riscv,cpu-intc";
137 interrupt-controller;
138 #interrupt-cells = <1>;
139 };
140 };
141
142 U74_4: cpu@4 {
143 compatible = "sifive,u74-mc", "riscv";
144 reg = <4>;
145 d-cache-block-size = <64>;
146 d-cache-sets = <64>;
147 d-cache-size = <32768>;
148 d-tlb-sets = <1>;
149 d-tlb-size = <40>;
150 device_type = "cpu";
151 i-cache-block-size = <64>;
152 i-cache-sets = <64>;
153 i-cache-size = <32768>;
154 i-tlb-sets = <1>;
155 i-tlb-size = <40>;
156 mmu-type = "riscv,sv39";
157 next-level-cache = <&ccache>;
158 riscv,isa = "rv64imafdc_zba_zbb";
159 riscv,isa-base = "rv64i";
160 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
161 "zicsr", "zifencei", "zihpm";
162 tlb-split;
163 operating-points-v2 = <&cpu_opp>;
164 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
165 clock-names = "cpu";
166 #cooling-cells = <2>;
167
168 cpu4_intc: interrupt-controller {
169 compatible = "riscv,cpu-intc";
170 interrupt-controller;
171 #interrupt-cells = <1>;
172 };
173 };
174
175 cpu-map {
176 cluster0 {
177 core0 {
178 cpu = <&S7_0>;
179 };
180
181 core1 {
182 cpu = <&U74_1>;
183 };
184
185 core2 {
186 cpu = <&U74_2>;
187 };
188
189 core3 {
190 cpu = <&U74_3>;
191 };
192
193 core4 {
194 cpu = <&U74_4>;
195 };
196 };
197 };
198 };
199
200 cpu_opp: opp-table-0 {
201 compatible = "operating-points-v2";
202 opp-shared;
203 opp-375000000 {
204 opp-hz = /bits/ 64 <375000000>;
205 opp-microvolt = <800000>;
206 };
207 opp-500000000 {
208 opp-hz = /bits/ 64 <500000000>;
209 opp-microvolt = <800000>;
210 };
211 opp-750000000 {
212 opp-hz = /bits/ 64 <750000000>;
213 opp-microvolt = <800000>;
214 };
215 opp-1500000000 {
216 opp-hz = /bits/ 64 <1500000000>;
217 opp-microvolt = <1040000>;
218 };
219 };
220
221 thermal-zones {
222 cpu-thermal {
223 polling-delay-passive = <250>;
224 polling-delay = <15000>;
225
226 thermal-sensors = <&sfctemp>;
227
228 cooling-maps {
229 map0 {
230 trip = <&cpu_alert0>;
231 cooling-device =
232 <&U74_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
233 <&U74_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
234 <&U74_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
235 <&U74_4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
236 };
237 };
238
239 trips {
240 cpu_alert0: cpu-alert0 {
241 /* milliCelsius */
242 temperature = <85000>;
243 hysteresis = <2000>;
244 type = "passive";
245 };
246
247 cpu-crit {
248 /* milliCelsius */
249 temperature = <100000>;
250 hysteresis = <2000>;
251 type = "critical";
252 };
253 };
254 };
255 };
256
257 dvp_clk: dvp-clock {
258 compatible = "fixed-clock";
259 clock-output-names = "dvp_clk";
260 #clock-cells = <0>;
261 };
262 gmac0_rgmii_rxin: gmac0-rgmii-rxin-clock {
263 compatible = "fixed-clock";
264 clock-output-names = "gmac0_rgmii_rxin";
265 #clock-cells = <0>;
266 };
267
268 gmac0_rmii_refin: gmac0-rmii-refin-clock {
269 compatible = "fixed-clock";
270 clock-output-names = "gmac0_rmii_refin";
271 #clock-cells = <0>;
272 };
273
274 gmac1_rgmii_rxin: gmac1-rgmii-rxin-clock {
275 compatible = "fixed-clock";
276 clock-output-names = "gmac1_rgmii_rxin";
277 #clock-cells = <0>;
278 };
279
280 gmac1_rmii_refin: gmac1-rmii-refin-clock {
281 compatible = "fixed-clock";
282 clock-output-names = "gmac1_rmii_refin";
283 #clock-cells = <0>;
284 };
285
286 hdmitx0_pixelclk: hdmitx0-pixel-clock {
287 compatible = "fixed-clock";
288 clock-output-names = "hdmitx0_pixelclk";
289 #clock-cells = <0>;
290 };
291
292 i2srx_bclk_ext: i2srx-bclk-ext-clock {
293 compatible = "fixed-clock";
294 clock-output-names = "i2srx_bclk_ext";
295 #clock-cells = <0>;
296 };
297
298 i2srx_lrck_ext: i2srx-lrck-ext-clock {
299 compatible = "fixed-clock";
300 clock-output-names = "i2srx_lrck_ext";
301 #clock-cells = <0>;
302 };
303
304 i2stx_bclk_ext: i2stx-bclk-ext-clock {
305 compatible = "fixed-clock";
306 clock-output-names = "i2stx_bclk_ext";
307 #clock-cells = <0>;
308 };
309
310 i2stx_lrck_ext: i2stx-lrck-ext-clock {
311 compatible = "fixed-clock";
312 clock-output-names = "i2stx_lrck_ext";
313 #clock-cells = <0>;
314 };
315
316 mclk_ext: mclk-ext-clock {
317 compatible = "fixed-clock";
318 clock-output-names = "mclk_ext";
319 #clock-cells = <0>;
320 };
321
322 osc: oscillator {
323 compatible = "fixed-clock";
324 clock-output-names = "osc";
325 #clock-cells = <0>;
326 };
327
328 rtc_osc: rtc-oscillator {
329 compatible = "fixed-clock";
330 clock-output-names = "rtc_osc";
331 #clock-cells = <0>;
332 };
333
334 stmmac_axi_setup: stmmac-axi-config {
335 snps,lpi_en;
336 snps,wr_osr_lmt = <15>;
337 snps,rd_osr_lmt = <15>;
338 snps,blen = <256 128 64 32 0 0 0>;
339 };
340
341 tdm_ext: tdm-ext-clock {
342 compatible = "fixed-clock";
343 clock-output-names = "tdm_ext";
344 #clock-cells = <0>;
345 };
346
347 soc {
348 compatible = "simple-bus";
349 interrupt-parent = <&plic>;
350 #address-cells = <2>;
351 #size-cells = <2>;
352 ranges;
353
354 clint: timer@2000000 {
355 compatible = "starfive,jh7110-clint", "sifive,clint0";
356 reg = <0x0 0x2000000 0x0 0x10000>;
357 interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
358 <&cpu1_intc 3>, <&cpu1_intc 7>,
359 <&cpu2_intc 3>, <&cpu2_intc 7>,
360 <&cpu3_intc 3>, <&cpu3_intc 7>,
361 <&cpu4_intc 3>, <&cpu4_intc 7>;
362 };
363
364 ccache: cache-controller@2010000 {
365 compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache";
366 reg = <0x0 0x2010000 0x0 0x4000>;
367 interrupts = <1>, <3>, <4>, <2>;
368 cache-block-size = <64>;
369 cache-level = <2>;
370 cache-sets = <2048>;
371 cache-size = <2097152>;
372 cache-unified;
373 };
374
375 plic: interrupt-controller@c000000 {
376 compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0";
377 reg = <0x0 0xc000000 0x0 0x4000000>;
378 interrupts-extended = <&cpu0_intc 11>,
379 <&cpu1_intc 11>, <&cpu1_intc 9>,
380 <&cpu2_intc 11>, <&cpu2_intc 9>,
381 <&cpu3_intc 11>, <&cpu3_intc 9>,
382 <&cpu4_intc 11>, <&cpu4_intc 9>;
383 interrupt-controller;
384 #interrupt-cells = <1>;
385 #address-cells = <0>;
386 riscv,ndev = <136>;
387 };
388
389 uart0: serial@10000000 {
390 compatible = "snps,dw-apb-uart";
391 reg = <0x0 0x10000000 0x0 0x10000>;
392 clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>,
393 <&syscrg JH7110_SYSCLK_UART0_APB>;
394 clock-names = "baudclk", "apb_pclk";
395 resets = <&syscrg JH7110_SYSRST_UART0_APB>;
396 interrupts = <32>;
397 reg-io-width = <4>;
398 reg-shift = <2>;
399 status = "disabled";
400 };
401
402 uart1: serial@10010000 {
403 compatible = "snps,dw-apb-uart";
404 reg = <0x0 0x10010000 0x0 0x10000>;
405 clocks = <&syscrg JH7110_SYSCLK_UART1_CORE>,
406 <&syscrg JH7110_SYSCLK_UART1_APB>;
407 clock-names = "baudclk", "apb_pclk";
408 resets = <&syscrg JH7110_SYSRST_UART1_APB>;
409 interrupts = <33>;
410 reg-io-width = <4>;
411 reg-shift = <2>;
412 status = "disabled";
413 };
414
415 uart2: serial@10020000 {
416 compatible = "snps,dw-apb-uart";
417 reg = <0x0 0x10020000 0x0 0x10000>;
418 clocks = <&syscrg JH7110_SYSCLK_UART2_CORE>,
419 <&syscrg JH7110_SYSCLK_UART2_APB>;
420 clock-names = "baudclk", "apb_pclk";
421 resets = <&syscrg JH7110_SYSRST_UART2_APB>;
422 interrupts = <34>;
423 reg-io-width = <4>;
424 reg-shift = <2>;
425 status = "disabled";
426 };
427
428 i2c0: i2c@10030000 {
429 compatible = "snps,designware-i2c";
430 reg = <0x0 0x10030000 0x0 0x10000>;
431 clocks = <&syscrg JH7110_SYSCLK_I2C0_APB>;
432 clock-names = "ref";
433 resets = <&syscrg JH7110_SYSRST_I2C0_APB>;
434 interrupts = <35>;
435 #address-cells = <1>;
436 #size-cells = <0>;
437 status = "disabled";
438 };
439
440 i2c1: i2c@10040000 {
441 compatible = "snps,designware-i2c";
442 reg = <0x0 0x10040000 0x0 0x10000>;
443 clocks = <&syscrg JH7110_SYSCLK_I2C1_APB>;
444 clock-names = "ref";
445 resets = <&syscrg JH7110_SYSRST_I2C1_APB>;
446 interrupts = <36>;
447 #address-cells = <1>;
448 #size-cells = <0>;
449 status = "disabled";
450 };
451
452 i2c2: i2c@10050000 {
453 compatible = "snps,designware-i2c";
454 reg = <0x0 0x10050000 0x0 0x10000>;
455 clocks = <&syscrg JH7110_SYSCLK_I2C2_APB>;
456 clock-names = "ref";
457 resets = <&syscrg JH7110_SYSRST_I2C2_APB>;
458 interrupts = <37>;
459 #address-cells = <1>;
460 #size-cells = <0>;
461 status = "disabled";
462 };
463
464 spi0: spi@10060000 {
465 compatible = "arm,pl022", "arm,primecell";
466 reg = <0x0 0x10060000 0x0 0x10000>;
467 clocks = <&syscrg JH7110_SYSCLK_SPI0_APB>,
468 <&syscrg JH7110_SYSCLK_SPI0_APB>;
469 clock-names = "sspclk", "apb_pclk";
470 resets = <&syscrg JH7110_SYSRST_SPI0_APB>;
471 interrupts = <38>;
472 arm,primecell-periphid = <0x00041022>;
473 num-cs = <1>;
474 #address-cells = <1>;
475 #size-cells = <0>;
476 status = "disabled";
477 };
478
479 spi1: spi@10070000 {
480 compatible = "arm,pl022", "arm,primecell";
481 reg = <0x0 0x10070000 0x0 0x10000>;
482 clocks = <&syscrg JH7110_SYSCLK_SPI1_APB>,
483 <&syscrg JH7110_SYSCLK_SPI1_APB>;
484 clock-names = "sspclk", "apb_pclk";
485 resets = <&syscrg JH7110_SYSRST_SPI1_APB>;
486 interrupts = <39>;
487 arm,primecell-periphid = <0x00041022>;
488 num-cs = <1>;
489 #address-cells = <1>;
490 #size-cells = <0>;
491 status = "disabled";
492 };
493
494 spi2: spi@10080000 {
495 compatible = "arm,pl022", "arm,primecell";
496 reg = <0x0 0x10080000 0x0 0x10000>;
497 clocks = <&syscrg JH7110_SYSCLK_SPI2_APB>,
498 <&syscrg JH7110_SYSCLK_SPI2_APB>;
499 clock-names = "sspclk", "apb_pclk";
500 resets = <&syscrg JH7110_SYSRST_SPI2_APB>;
501 interrupts = <40>;
502 arm,primecell-periphid = <0x00041022>;
503 num-cs = <1>;
504 #address-cells = <1>;
505 #size-cells = <0>;
506 status = "disabled";
507 };
508
509 tdm: tdm@10090000 {
510 compatible = "starfive,jh7110-tdm";
511 reg = <0x0 0x10090000 0x0 0x1000>;
512 clocks = <&syscrg JH7110_SYSCLK_TDM_AHB>,
513 <&syscrg JH7110_SYSCLK_TDM_APB>,
514 <&syscrg JH7110_SYSCLK_TDM_INTERNAL>,
515 <&syscrg JH7110_SYSCLK_TDM_TDM>,
516 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
517 <&tdm_ext>;
518 clock-names = "tdm_ahb", "tdm_apb",
519 "tdm_internal", "tdm",
520 "mclk_inner", "tdm_ext";
521 resets = <&syscrg JH7110_SYSRST_TDM_AHB>,
522 <&syscrg JH7110_SYSRST_TDM_APB>,
523 <&syscrg JH7110_SYSRST_TDM_CORE>;
524 dmas = <&dma 20>, <&dma 21>;
525 dma-names = "rx","tx";
526 #sound-dai-cells = <0>;
527 status = "disabled";
528 };
529
530 i2srx: i2s@100e0000 {
531 compatible = "starfive,jh7110-i2srx";
532 reg = <0x0 0x100e0000 0x0 0x1000>;
533 clocks = <&syscrg JH7110_SYSCLK_I2SRX_BCLK_MST>,
534 <&syscrg JH7110_SYSCLK_I2SRX_APB>,
535 <&syscrg JH7110_SYSCLK_MCLK>,
536 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
537 <&mclk_ext>,
538 <&syscrg JH7110_SYSCLK_I2SRX_BCLK>,
539 <&syscrg JH7110_SYSCLK_I2SRX_LRCK>,
540 <&i2srx_bclk_ext>,
541 <&i2srx_lrck_ext>;
542 clock-names = "i2sclk", "apb", "mclk",
543 "mclk_inner", "mclk_ext", "bclk",
544 "lrck", "bclk_ext", "lrck_ext";
545 resets = <&syscrg JH7110_SYSRST_I2SRX_APB>,
546 <&syscrg JH7110_SYSRST_I2SRX_BCLK>;
547 dmas = <0>, <&dma 24>;
548 dma-names = "tx", "rx";
549 starfive,syscon = <&sys_syscon 0x18 0x2>;
550 #sound-dai-cells = <0>;
551 status = "disabled";
552 };
553
554 pwmdac: pwmdac@100b0000 {
555 compatible = "starfive,jh7110-pwmdac";
556 reg = <0x0 0x100b0000 0x0 0x1000>;
557 clocks = <&syscrg JH7110_SYSCLK_PWMDAC_APB>,
558 <&syscrg JH7110_SYSCLK_PWMDAC_CORE>;
559 clock-names = "apb", "core";
560 resets = <&syscrg JH7110_SYSRST_PWMDAC_APB>;
561 dmas = <&dma 22>;
562 dma-names = "tx";
563 #sound-dai-cells = <0>;
564 status = "disabled";
565 };
566
567 usb0: usb@10100000 {
568 compatible = "starfive,jh7110-usb";
569 ranges = <0x0 0x0 0x10100000 0x100000>;
570 #address-cells = <1>;
571 #size-cells = <1>;
572 starfive,stg-syscon = <&stg_syscon 0x4>;
573 clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>,
574 <&stgcrg JH7110_STGCLK_USB0_STB>,
575 <&stgcrg JH7110_STGCLK_USB0_APB>,
576 <&stgcrg JH7110_STGCLK_USB0_AXI>,
577 <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>;
578 clock-names = "lpm", "stb", "apb", "axi", "utmi_apb";
579 resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>,
580 <&stgcrg JH7110_STGRST_USB0_APB>,
581 <&stgcrg JH7110_STGRST_USB0_AXI>,
582 <&stgcrg JH7110_STGRST_USB0_UTMI_APB>;
583 reset-names = "pwrup", "apb", "axi", "utmi_apb";
584 status = "disabled";
585
586 usb_cdns3: usb@0 {
587 compatible = "cdns,usb3";
588 reg = <0x0 0x10000>,
589 <0x10000 0x10000>,
590 <0x20000 0x10000>;
591 reg-names = "otg", "xhci", "dev";
592 interrupts = <100>, <108>, <110>;
593 interrupt-names = "host", "peripheral", "otg";
594 phys = <&usbphy0>;
595 phy-names = "cdns3,usb2-phy";
596 };
597 };
598
599 usbphy0: phy@10200000 {
600 compatible = "starfive,jh7110-usb-phy";
601 reg = <0x0 0x10200000 0x0 0x10000>;
602 clocks = <&syscrg JH7110_SYSCLK_USB_125M>,
603 <&stgcrg JH7110_STGCLK_USB0_APP_125>;
604 clock-names = "125m", "app_125m";
605 #phy-cells = <0>;
606 };
607
608 pciephy0: phy@10210000 {
609 compatible = "starfive,jh7110-pcie-phy";
610 reg = <0x0 0x10210000 0x0 0x10000>;
611 #phy-cells = <0>;
612 };
613
614 pciephy1: phy@10220000 {
615 compatible = "starfive,jh7110-pcie-phy";
616 reg = <0x0 0x10220000 0x0 0x10000>;
617 #phy-cells = <0>;
618 };
619
620 stgcrg: clock-controller@10230000 {
621 compatible = "starfive,jh7110-stgcrg";
622 reg = <0x0 0x10230000 0x0 0x10000>;
623 clocks = <&osc>,
624 <&syscrg JH7110_SYSCLK_HIFI4_CORE>,
625 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
626 <&syscrg JH7110_SYSCLK_USB_125M>,
627 <&syscrg JH7110_SYSCLK_CPU_BUS>,
628 <&syscrg JH7110_SYSCLK_HIFI4_AXI>,
629 <&syscrg JH7110_SYSCLK_NOCSTG_BUS>,
630 <&syscrg JH7110_SYSCLK_APB_BUS>;
631 clock-names = "osc", "hifi4_core",
632 "stg_axiahb", "usb_125m",
633 "cpu_bus", "hifi4_axi",
634 "nocstg_bus", "apb_bus";
635 #clock-cells = <1>;
636 #reset-cells = <1>;
637 };
638
639 stg_syscon: syscon@10240000 {
640 compatible = "starfive,jh7110-stg-syscon", "syscon";
641 reg = <0x0 0x10240000 0x0 0x1000>;
642 };
643
644 uart3: serial@12000000 {
645 compatible = "snps,dw-apb-uart";
646 reg = <0x0 0x12000000 0x0 0x10000>;
647 clocks = <&syscrg JH7110_SYSCLK_UART3_CORE>,
648 <&syscrg JH7110_SYSCLK_UART3_APB>;
649 clock-names = "baudclk", "apb_pclk";
650 resets = <&syscrg JH7110_SYSRST_UART3_APB>;
651 interrupts = <45>;
652 reg-io-width = <4>;
653 reg-shift = <2>;
654 status = "disabled";
655 };
656
657 uart4: serial@12010000 {
658 compatible = "snps,dw-apb-uart";
659 reg = <0x0 0x12010000 0x0 0x10000>;
660 clocks = <&syscrg JH7110_SYSCLK_UART4_CORE>,
661 <&syscrg JH7110_SYSCLK_UART4_APB>;
662 clock-names = "baudclk", "apb_pclk";
663 resets = <&syscrg JH7110_SYSRST_UART4_APB>;
664 interrupts = <46>;
665 reg-io-width = <4>;
666 reg-shift = <2>;
667 status = "disabled";
668 };
669
670 uart5: serial@12020000 {
671 compatible = "snps,dw-apb-uart";
672 reg = <0x0 0x12020000 0x0 0x10000>;
673 clocks = <&syscrg JH7110_SYSCLK_UART5_CORE>,
674 <&syscrg JH7110_SYSCLK_UART5_APB>;
675 clock-names = "baudclk", "apb_pclk";
676 resets = <&syscrg JH7110_SYSRST_UART5_APB>;
677 interrupts = <47>;
678 reg-io-width = <4>;
679 reg-shift = <2>;
680 status = "disabled";
681 };
682
683 i2c3: i2c@12030000 {
684 compatible = "snps,designware-i2c";
685 reg = <0x0 0x12030000 0x0 0x10000>;
686 clocks = <&syscrg JH7110_SYSCLK_I2C3_APB>;
687 clock-names = "ref";
688 resets = <&syscrg JH7110_SYSRST_I2C3_APB>;
689 interrupts = <48>;
690 #address-cells = <1>;
691 #size-cells = <0>;
692 status = "disabled";
693 };
694
695 i2c4: i2c@12040000 {
696 compatible = "snps,designware-i2c";
697 reg = <0x0 0x12040000 0x0 0x10000>;
698 clocks = <&syscrg JH7110_SYSCLK_I2C4_APB>;
699 clock-names = "ref";
700 resets = <&syscrg JH7110_SYSRST_I2C4_APB>;
701 interrupts = <49>;
702 #address-cells = <1>;
703 #size-cells = <0>;
704 status = "disabled";
705 };
706
707 i2c5: i2c@12050000 {
708 compatible = "snps,designware-i2c";
709 reg = <0x0 0x12050000 0x0 0x10000>;
710 clocks = <&syscrg JH7110_SYSCLK_I2C5_APB>;
711 clock-names = "ref";
712 resets = <&syscrg JH7110_SYSRST_I2C5_APB>;
713 interrupts = <50>;
714 #address-cells = <1>;
715 #size-cells = <0>;
716 status = "disabled";
717 };
718
719 i2c6: i2c@12060000 {
720 compatible = "snps,designware-i2c";
721 reg = <0x0 0x12060000 0x0 0x10000>;
722 clocks = <&syscrg JH7110_SYSCLK_I2C6_APB>;
723 clock-names = "ref";
724 resets = <&syscrg JH7110_SYSRST_I2C6_APB>;
725 interrupts = <51>;
726 #address-cells = <1>;
727 #size-cells = <0>;
728 status = "disabled";
729 };
730
731 spi3: spi@12070000 {
732 compatible = "arm,pl022", "arm,primecell";
733 reg = <0x0 0x12070000 0x0 0x10000>;
734 clocks = <&syscrg JH7110_SYSCLK_SPI3_APB>,
735 <&syscrg JH7110_SYSCLK_SPI3_APB>;
736 clock-names = "sspclk", "apb_pclk";
737 resets = <&syscrg JH7110_SYSRST_SPI3_APB>;
738 interrupts = <52>;
739 arm,primecell-periphid = <0x00041022>;
740 num-cs = <1>;
741 #address-cells = <1>;
742 #size-cells = <0>;
743 status = "disabled";
744 };
745
746 spi4: spi@12080000 {
747 compatible = "arm,pl022", "arm,primecell";
748 reg = <0x0 0x12080000 0x0 0x10000>;
749 clocks = <&syscrg JH7110_SYSCLK_SPI4_APB>,
750 <&syscrg JH7110_SYSCLK_SPI4_APB>;
751 clock-names = "sspclk", "apb_pclk";
752 resets = <&syscrg JH7110_SYSRST_SPI4_APB>;
753 interrupts = <53>;
754 arm,primecell-periphid = <0x00041022>;
755 num-cs = <1>;
756 #address-cells = <1>;
757 #size-cells = <0>;
758 status = "disabled";
759 };
760
761 spi5: spi@12090000 {
762 compatible = "arm,pl022", "arm,primecell";
763 reg = <0x0 0x12090000 0x0 0x10000>;
764 clocks = <&syscrg JH7110_SYSCLK_SPI5_APB>,
765 <&syscrg JH7110_SYSCLK_SPI5_APB>;
766 clock-names = "sspclk", "apb_pclk";
767 resets = <&syscrg JH7110_SYSRST_SPI5_APB>;
768 interrupts = <54>;
769 arm,primecell-periphid = <0x00041022>;
770 num-cs = <1>;
771 #address-cells = <1>;
772 #size-cells = <0>;
773 status = "disabled";
774 };
775
776 spi6: spi@120a0000 {
777 compatible = "arm,pl022", "arm,primecell";
778 reg = <0x0 0x120A0000 0x0 0x10000>;
779 clocks = <&syscrg JH7110_SYSCLK_SPI6_APB>,
780 <&syscrg JH7110_SYSCLK_SPI6_APB>;
781 clock-names = "sspclk", "apb_pclk";
782 resets = <&syscrg JH7110_SYSRST_SPI6_APB>;
783 interrupts = <55>;
784 arm,primecell-periphid = <0x00041022>;
785 num-cs = <1>;
786 #address-cells = <1>;
787 #size-cells = <0>;
788 status = "disabled";
789 };
790
791 i2stx0: i2s@120b0000 {
792 compatible = "starfive,jh7110-i2stx0";
793 reg = <0x0 0x120b0000 0x0 0x1000>;
794 clocks = <&syscrg JH7110_SYSCLK_I2STX0_BCLK_MST>,
795 <&syscrg JH7110_SYSCLK_I2STX0_APB>,
796 <&syscrg JH7110_SYSCLK_MCLK>,
797 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
798 <&mclk_ext>;
799 clock-names = "i2sclk", "apb", "mclk",
800 "mclk_inner","mclk_ext";
801 resets = <&syscrg JH7110_SYSRST_I2STX0_APB>,
802 <&syscrg JH7110_SYSRST_I2STX0_BCLK>;
803 dmas = <&dma 47>;
804 dma-names = "tx";
805 #sound-dai-cells = <0>;
806 status = "disabled";
807 };
808
809 i2stx1: i2s@120c0000 {
810 compatible = "starfive,jh7110-i2stx1";
811 reg = <0x0 0x120c0000 0x0 0x1000>;
812 clocks = <&syscrg JH7110_SYSCLK_I2STX1_BCLK_MST>,
813 <&syscrg JH7110_SYSCLK_I2STX1_APB>,
814 <&syscrg JH7110_SYSCLK_MCLK>,
815 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
816 <&mclk_ext>,
817 <&syscrg JH7110_SYSCLK_I2STX1_BCLK>,
818 <&syscrg JH7110_SYSCLK_I2STX1_LRCK>,
819 <&i2stx_bclk_ext>,
820 <&i2stx_lrck_ext>;
821 clock-names = "i2sclk", "apb", "mclk",
822 "mclk_inner", "mclk_ext", "bclk",
823 "lrck", "bclk_ext", "lrck_ext";
824 resets = <&syscrg JH7110_SYSRST_I2STX1_APB>,
825 <&syscrg JH7110_SYSRST_I2STX1_BCLK>;
826 dmas = <&dma 48>;
827 dma-names = "tx";
828 #sound-dai-cells = <0>;
829 status = "disabled";
830 };
831
832 sfctemp: temperature-sensor@120e0000 {
833 compatible = "starfive,jh7110-temp";
834 reg = <0x0 0x120e0000 0x0 0x10000>;
835 clocks = <&syscrg JH7110_SYSCLK_TEMP_CORE>,
836 <&syscrg JH7110_SYSCLK_TEMP_APB>;
837 clock-names = "sense", "bus";
838 resets = <&syscrg JH7110_SYSRST_TEMP_CORE>,
839 <&syscrg JH7110_SYSRST_TEMP_APB>;
840 reset-names = "sense", "bus";
841 #thermal-sensor-cells = <0>;
842 };
843
844 qspi: spi@13010000 {
845 compatible = "starfive,jh7110-qspi", "cdns,qspi-nor";
846 reg = <0x0 0x13010000 0x0 0x10000>,
847 <0x0 0x21000000 0x0 0x400000>;
848 interrupts = <25>;
849 clocks = <&syscrg JH7110_SYSCLK_QSPI_REF>,
850 <&syscrg JH7110_SYSCLK_QSPI_AHB>,
851 <&syscrg JH7110_SYSCLK_QSPI_APB>;
852 clock-names = "ref", "ahb", "apb";
853 resets = <&syscrg JH7110_SYSRST_QSPI_APB>,
854 <&syscrg JH7110_SYSRST_QSPI_AHB>,
855 <&syscrg JH7110_SYSRST_QSPI_REF>;
856 reset-names = "qspi", "qspi-ocp", "rstc_ref";
857 cdns,fifo-depth = <256>;
858 cdns,fifo-width = <4>;
859 cdns,trigger-address = <0x0>;
860 status = "disabled";
861 };
862
863 syscrg: clock-controller@13020000 {
864 compatible = "starfive,jh7110-syscrg";
865 reg = <0x0 0x13020000 0x0 0x10000>;
866 clocks = <&osc>, <&gmac1_rmii_refin>,
867 <&gmac1_rgmii_rxin>,
868 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
869 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
870 <&tdm_ext>, <&mclk_ext>,
871 <&pllclk JH7110_PLLCLK_PLL0_OUT>,
872 <&pllclk JH7110_PLLCLK_PLL1_OUT>,
873 <&pllclk JH7110_PLLCLK_PLL2_OUT>;
874 clock-names = "osc", "gmac1_rmii_refin",
875 "gmac1_rgmii_rxin",
876 "i2stx_bclk_ext", "i2stx_lrck_ext",
877 "i2srx_bclk_ext", "i2srx_lrck_ext",
878 "tdm_ext", "mclk_ext",
879 "pll0_out", "pll1_out", "pll2_out";
880 #clock-cells = <1>;
881 #reset-cells = <1>;
882 };
883
884 sys_syscon: syscon@13030000 {
885 compatible = "starfive,jh7110-sys-syscon", "syscon", "simple-mfd";
886 reg = <0x0 0x13030000 0x0 0x1000>;
887
888 pllclk: clock-controller {
889 compatible = "starfive,jh7110-pll";
890 clocks = <&osc>;
891 #clock-cells = <1>;
892 };
893 };
894
895 sysgpio: pinctrl@13040000 {
896 compatible = "starfive,jh7110-sys-pinctrl";
897 reg = <0x0 0x13040000 0x0 0x10000>;
898 clocks = <&syscrg JH7110_SYSCLK_IOMUX_APB>;
899 resets = <&syscrg JH7110_SYSRST_IOMUX_APB>;
900 interrupts = <86>;
901 interrupt-controller;
902 #interrupt-cells = <2>;
903 gpio-controller;
904 #gpio-cells = <2>;
905 };
906
907 watchdog@13070000 {
908 compatible = "starfive,jh7110-wdt";
909 reg = <0x0 0x13070000 0x0 0x10000>;
910 clocks = <&syscrg JH7110_SYSCLK_WDT_APB>,
911 <&syscrg JH7110_SYSCLK_WDT_CORE>;
912 clock-names = "apb", "core";
913 resets = <&syscrg JH7110_SYSRST_WDT_APB>,
914 <&syscrg JH7110_SYSRST_WDT_CORE>;
915 };
916
917 crypto: crypto@16000000 {
918 compatible = "starfive,jh7110-crypto";
919 reg = <0x0 0x16000000 0x0 0x4000>;
920 clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
921 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
922 clock-names = "hclk", "ahb";
923 interrupts = <28>;
924 resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
925 dmas = <&sdma 1 2>, <&sdma 0 2>;
926 dma-names = "tx", "rx";
927 };
928
929 sdma: dma-controller@16008000 {
930 compatible = "arm,pl080", "arm,primecell";
931 arm,primecell-periphid = <0x00041080>;
932 reg = <0x0 0x16008000 0x0 0x4000>;
933 interrupts = <29>;
934 clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>;
935 clock-names = "apb_pclk";
936 resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
937 lli-bus-interface-ahb1;
938 mem-bus-interface-ahb1;
939 memcpy-burst-size = <256>;
940 memcpy-bus-width = <32>;
941 #dma-cells = <2>;
942 };
943
944 rng: rng@1600c000 {
945 compatible = "starfive,jh7110-trng";
946 reg = <0x0 0x1600C000 0x0 0x4000>;
947 clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
948 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
949 clock-names = "hclk", "ahb";
950 resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
951 interrupts = <30>;
952 };
953
954 mmc0: mmc@16010000 {
955 compatible = "starfive,jh7110-mmc";
956 reg = <0x0 0x16010000 0x0 0x10000>;
957 clocks = <&syscrg JH7110_SYSCLK_SDIO0_AHB>,
958 <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>;
959 clock-names = "biu","ciu";
960 resets = <&syscrg JH7110_SYSRST_SDIO0_AHB>;
961 reset-names = "reset";
962 interrupts = <74>;
963 fifo-depth = <32>;
964 fifo-watermark-aligned;
965 data-addr = <0>;
966 starfive,sysreg = <&sys_syscon 0x14 0x1a 0x7c000000>;
967 status = "disabled";
968 };
969
970 mmc1: mmc@16020000 {
971 compatible = "starfive,jh7110-mmc";
972 reg = <0x0 0x16020000 0x0 0x10000>;
973 clocks = <&syscrg JH7110_SYSCLK_SDIO1_AHB>,
974 <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>;
975 clock-names = "biu","ciu";
976 resets = <&syscrg JH7110_SYSRST_SDIO1_AHB>;
977 reset-names = "reset";
978 interrupts = <75>;
979 fifo-depth = <32>;
980 fifo-watermark-aligned;
981 data-addr = <0>;
982 starfive,sysreg = <&sys_syscon 0x9c 0x1 0x3e>;
983 status = "disabled";
984 };
985
986 gmac0: ethernet@16030000 {
987 compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
988 reg = <0x0 0x16030000 0x0 0x10000>;
989 clocks = <&aoncrg JH7110_AONCLK_GMAC0_AXI>,
990 <&aoncrg JH7110_AONCLK_GMAC0_AHB>,
991 <&syscrg JH7110_SYSCLK_GMAC0_PTP>,
992 <&aoncrg JH7110_AONCLK_GMAC0_TX_INV>,
993 <&syscrg JH7110_SYSCLK_GMAC0_GTXC>;
994 clock-names = "stmmaceth", "pclk", "ptp_ref",
995 "tx", "gtx";
996 resets = <&aoncrg JH7110_AONRST_GMAC0_AXI>,
997 <&aoncrg JH7110_AONRST_GMAC0_AHB>;
998 reset-names = "stmmaceth", "ahb";
999 interrupts = <7>, <6>, <5>;
1000 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1001 rx-fifo-depth = <2048>;
1002 tx-fifo-depth = <2048>;
1003 snps,multicast-filter-bins = <64>;
1004 snps,perfect-filter-entries = <256>;
1005 snps,fixed-burst;
1006 snps,no-pbl-x8;
1007 snps,force_thresh_dma_mode;
1008 snps,axi-config = <&stmmac_axi_setup>;
1009 snps,tso;
1010 snps,en-tx-lpi-clockgating;
1011 snps,txpbl = <16>;
1012 snps,rxpbl = <16>;
1013 starfive,syscon = <&aon_syscon 0xc 0x12>;
1014 status = "disabled";
1015 };
1016
1017 gmac1: ethernet@16040000 {
1018 compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
1019 reg = <0x0 0x16040000 0x0 0x10000>;
1020 clocks = <&syscrg JH7110_SYSCLK_GMAC1_AXI>,
1021 <&syscrg JH7110_SYSCLK_GMAC1_AHB>,
1022 <&syscrg JH7110_SYSCLK_GMAC1_PTP>,
1023 <&syscrg JH7110_SYSCLK_GMAC1_TX_INV>,
1024 <&syscrg JH7110_SYSCLK_GMAC1_GTXC>;
1025 clock-names = "stmmaceth", "pclk", "ptp_ref",
1026 "tx", "gtx";
1027 resets = <&syscrg JH7110_SYSRST_GMAC1_AXI>,
1028 <&syscrg JH7110_SYSRST_GMAC1_AHB>;
1029 reset-names = "stmmaceth", "ahb";
1030 interrupts = <78>, <77>, <76>;
1031 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1032 rx-fifo-depth = <2048>;
1033 tx-fifo-depth = <2048>;
1034 snps,multicast-filter-bins = <64>;
1035 snps,perfect-filter-entries = <256>;
1036 snps,fixed-burst;
1037 snps,no-pbl-x8;
1038 snps,force_thresh_dma_mode;
1039 snps,axi-config = <&stmmac_axi_setup>;
1040 snps,tso;
1041 snps,en-tx-lpi-clockgating;
1042 snps,txpbl = <16>;
1043 snps,rxpbl = <16>;
1044 starfive,syscon = <&sys_syscon 0x90 0x2>;
1045 status = "disabled";
1046 };
1047
1048 dma: dma-controller@16050000 {
1049 compatible = "starfive,jh7110-axi-dma";
1050 reg = <0x0 0x16050000 0x0 0x10000>;
1051 clocks = <&stgcrg JH7110_STGCLK_DMA1P_AXI>,
1052 <&stgcrg JH7110_STGCLK_DMA1P_AHB>;
1053 clock-names = "core-clk", "cfgr-clk";
1054 resets = <&stgcrg JH7110_STGRST_DMA1P_AXI>,
1055 <&stgcrg JH7110_STGRST_DMA1P_AHB>;
1056 interrupts = <73>;
1057 #dma-cells = <1>;
1058 dma-channels = <4>;
1059 snps,dma-masters = <1>;
1060 snps,data-width = <3>;
1061 snps,block-size = <65536 65536 65536 65536>;
1062 snps,priority = <0 1 2 3>;
1063 snps,axi-max-burst-len = <16>;
1064 };
1065
1066 aoncrg: clock-controller@17000000 {
1067 compatible = "starfive,jh7110-aoncrg";
1068 reg = <0x0 0x17000000 0x0 0x10000>;
1069 clocks = <&osc>, <&gmac0_rmii_refin>,
1070 <&gmac0_rgmii_rxin>,
1071 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
1072 <&syscrg JH7110_SYSCLK_APB_BUS>,
1073 <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>,
1074 <&rtc_osc>;
1075 clock-names = "osc", "gmac0_rmii_refin",
1076 "gmac0_rgmii_rxin", "stg_axiahb",
1077 "apb_bus", "gmac0_gtxclk",
1078 "rtc_osc";
1079 #clock-cells = <1>;
1080 #reset-cells = <1>;
1081 };
1082
1083 aon_syscon: syscon@17010000 {
1084 compatible = "starfive,jh7110-aon-syscon", "syscon";
1085 reg = <0x0 0x17010000 0x0 0x1000>;
1086 #power-domain-cells = <1>;
1087 };
1088
1089 aongpio: pinctrl@17020000 {
1090 compatible = "starfive,jh7110-aon-pinctrl";
1091 reg = <0x0 0x17020000 0x0 0x10000>;
1092 resets = <&aoncrg JH7110_AONRST_IOMUX>;
1093 interrupts = <85>;
1094 interrupt-controller;
1095 #interrupt-cells = <2>;
1096 gpio-controller;
1097 #gpio-cells = <2>;
1098 };
1099
1100 pwrc: power-controller@17030000 {
1101 compatible = "starfive,jh7110-pmu";
1102 reg = <0x0 0x17030000 0x0 0x10000>;
1103 interrupts = <111>;
1104 #power-domain-cells = <1>;
1105 };
1106
1107 ispcrg: clock-controller@19810000 {
1108 compatible = "starfive,jh7110-ispcrg";
1109 reg = <0x0 0x19810000 0x0 0x10000>;
1110 clocks = <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
1111 <&syscrg JH7110_SYSCLK_ISP_TOP_AXI>,
1112 <&syscrg JH7110_SYSCLK_NOC_BUS_ISP_AXI>,
1113 <&dvp_clk>;
1114 clock-names = "isp_top_core", "isp_top_axi",
1115 "noc_bus_isp_axi", "dvp_clk";
1116 resets = <&syscrg JH7110_SYSRST_ISP_TOP>,
1117 <&syscrg JH7110_SYSRST_ISP_TOP_AXI>,
1118 <&syscrg JH7110_SYSRST_NOC_BUS_ISP_AXI>;
1119 #clock-cells = <1>;
1120 #reset-cells = <1>;
1121 power-domains = <&pwrc JH7110_PD_ISP>;
1122 };
1123
1124 voutcrg: clock-controller@295c0000 {
1125 compatible = "starfive,jh7110-voutcrg";
1126 reg = <0x0 0x295c0000 0x0 0x10000>;
1127 clocks = <&syscrg JH7110_SYSCLK_VOUT_SRC>,
1128 <&syscrg JH7110_SYSCLK_VOUT_TOP_AHB>,
1129 <&syscrg JH7110_SYSCLK_VOUT_TOP_AXI>,
1130 <&syscrg JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK>,
1131 <&syscrg JH7110_SYSCLK_I2STX0_BCLK>,
1132 <&hdmitx0_pixelclk>;
1133 clock-names = "vout_src", "vout_top_ahb",
1134 "vout_top_axi", "vout_top_hdmitx0_mclk",
1135 "i2stx0_bclk", "hdmitx0_pixelclk";
1136 resets = <&syscrg JH7110_SYSRST_VOUT_TOP_SRC>;
1137 #clock-cells = <1>;
1138 #reset-cells = <1>;
1139 power-domains = <&pwrc JH7110_PD_VOUT>;
1140 };
1141 };
1142};
1// SPDX-License-Identifier: GPL-2.0 OR MIT
2/*
3 * Copyright (C) 2022 StarFive Technology Co., Ltd.
4 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
5 */
6
7/dts-v1/;
8#include <dt-bindings/clock/starfive,jh7110-crg.h>
9#include <dt-bindings/power/starfive,jh7110-pmu.h>
10#include <dt-bindings/reset/starfive,jh7110-crg.h>
11#include <dt-bindings/thermal/thermal.h>
12
13/ {
14 compatible = "starfive,jh7110";
15 #address-cells = <2>;
16 #size-cells = <2>;
17
18 cpus: cpus {
19 #address-cells = <1>;
20 #size-cells = <0>;
21
22 S7_0: cpu@0 {
23 compatible = "sifive,s7", "riscv";
24 reg = <0>;
25 device_type = "cpu";
26 i-cache-block-size = <64>;
27 i-cache-sets = <64>;
28 i-cache-size = <16384>;
29 next-level-cache = <&ccache>;
30 riscv,isa = "rv64imac_zba_zbb";
31 riscv,isa-base = "rv64i";
32 riscv,isa-extensions = "i", "m", "a", "c", "zba", "zbb", "zicntr", "zicsr",
33 "zifencei", "zihpm";
34 status = "disabled";
35
36 cpu0_intc: interrupt-controller {
37 compatible = "riscv,cpu-intc";
38 interrupt-controller;
39 #interrupt-cells = <1>;
40 };
41 };
42
43 U74_1: cpu@1 {
44 compatible = "sifive,u74-mc", "riscv";
45 reg = <1>;
46 d-cache-block-size = <64>;
47 d-cache-sets = <64>;
48 d-cache-size = <32768>;
49 d-tlb-sets = <1>;
50 d-tlb-size = <40>;
51 device_type = "cpu";
52 i-cache-block-size = <64>;
53 i-cache-sets = <64>;
54 i-cache-size = <32768>;
55 i-tlb-sets = <1>;
56 i-tlb-size = <40>;
57 mmu-type = "riscv,sv39";
58 next-level-cache = <&ccache>;
59 riscv,isa = "rv64imafdc_zba_zbb";
60 riscv,isa-base = "rv64i";
61 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
62 "zicsr", "zifencei", "zihpm";
63 tlb-split;
64 operating-points-v2 = <&cpu_opp>;
65 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
66 clock-names = "cpu";
67 #cooling-cells = <2>;
68
69 cpu1_intc: interrupt-controller {
70 compatible = "riscv,cpu-intc";
71 interrupt-controller;
72 #interrupt-cells = <1>;
73 };
74 };
75
76 U74_2: cpu@2 {
77 compatible = "sifive,u74-mc", "riscv";
78 reg = <2>;
79 d-cache-block-size = <64>;
80 d-cache-sets = <64>;
81 d-cache-size = <32768>;
82 d-tlb-sets = <1>;
83 d-tlb-size = <40>;
84 device_type = "cpu";
85 i-cache-block-size = <64>;
86 i-cache-sets = <64>;
87 i-cache-size = <32768>;
88 i-tlb-sets = <1>;
89 i-tlb-size = <40>;
90 mmu-type = "riscv,sv39";
91 next-level-cache = <&ccache>;
92 riscv,isa = "rv64imafdc_zba_zbb";
93 riscv,isa-base = "rv64i";
94 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
95 "zicsr", "zifencei", "zihpm";
96 tlb-split;
97 operating-points-v2 = <&cpu_opp>;
98 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
99 clock-names = "cpu";
100 #cooling-cells = <2>;
101
102 cpu2_intc: interrupt-controller {
103 compatible = "riscv,cpu-intc";
104 interrupt-controller;
105 #interrupt-cells = <1>;
106 };
107 };
108
109 U74_3: cpu@3 {
110 compatible = "sifive,u74-mc", "riscv";
111 reg = <3>;
112 d-cache-block-size = <64>;
113 d-cache-sets = <64>;
114 d-cache-size = <32768>;
115 d-tlb-sets = <1>;
116 d-tlb-size = <40>;
117 device_type = "cpu";
118 i-cache-block-size = <64>;
119 i-cache-sets = <64>;
120 i-cache-size = <32768>;
121 i-tlb-sets = <1>;
122 i-tlb-size = <40>;
123 mmu-type = "riscv,sv39";
124 next-level-cache = <&ccache>;
125 riscv,isa = "rv64imafdc_zba_zbb";
126 riscv,isa-base = "rv64i";
127 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
128 "zicsr", "zifencei", "zihpm";
129 tlb-split;
130 operating-points-v2 = <&cpu_opp>;
131 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
132 clock-names = "cpu";
133 #cooling-cells = <2>;
134
135 cpu3_intc: interrupt-controller {
136 compatible = "riscv,cpu-intc";
137 interrupt-controller;
138 #interrupt-cells = <1>;
139 };
140 };
141
142 U74_4: cpu@4 {
143 compatible = "sifive,u74-mc", "riscv";
144 reg = <4>;
145 d-cache-block-size = <64>;
146 d-cache-sets = <64>;
147 d-cache-size = <32768>;
148 d-tlb-sets = <1>;
149 d-tlb-size = <40>;
150 device_type = "cpu";
151 i-cache-block-size = <64>;
152 i-cache-sets = <64>;
153 i-cache-size = <32768>;
154 i-tlb-sets = <1>;
155 i-tlb-size = <40>;
156 mmu-type = "riscv,sv39";
157 next-level-cache = <&ccache>;
158 riscv,isa = "rv64imafdc_zba_zbb";
159 riscv,isa-base = "rv64i";
160 riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
161 "zicsr", "zifencei", "zihpm";
162 tlb-split;
163 operating-points-v2 = <&cpu_opp>;
164 clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
165 clock-names = "cpu";
166 #cooling-cells = <2>;
167
168 cpu4_intc: interrupt-controller {
169 compatible = "riscv,cpu-intc";
170 interrupt-controller;
171 #interrupt-cells = <1>;
172 };
173 };
174
175 cpu-map {
176 cluster0 {
177 core0 {
178 cpu = <&S7_0>;
179 };
180
181 core1 {
182 cpu = <&U74_1>;
183 };
184
185 core2 {
186 cpu = <&U74_2>;
187 };
188
189 core3 {
190 cpu = <&U74_3>;
191 };
192
193 core4 {
194 cpu = <&U74_4>;
195 };
196 };
197 };
198 };
199
200 cpu_opp: opp-table-0 {
201 compatible = "operating-points-v2";
202 opp-shared;
203 opp-375000000 {
204 opp-hz = /bits/ 64 <375000000>;
205 opp-microvolt = <800000>;
206 };
207 opp-500000000 {
208 opp-hz = /bits/ 64 <500000000>;
209 opp-microvolt = <800000>;
210 };
211 opp-750000000 {
212 opp-hz = /bits/ 64 <750000000>;
213 opp-microvolt = <800000>;
214 };
215 opp-1500000000 {
216 opp-hz = /bits/ 64 <1500000000>;
217 opp-microvolt = <1040000>;
218 };
219 };
220
221 thermal-zones {
222 cpu-thermal {
223 polling-delay-passive = <250>;
224 polling-delay = <15000>;
225
226 thermal-sensors = <&sfctemp>;
227
228 cooling-maps {
229 map0 {
230 trip = <&cpu_alert0>;
231 cooling-device =
232 <&U74_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
233 <&U74_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
234 <&U74_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
235 <&U74_4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
236 };
237 };
238
239 trips {
240 cpu_alert0: cpu-alert0 {
241 /* milliCelsius */
242 temperature = <85000>;
243 hysteresis = <2000>;
244 type = "passive";
245 };
246
247 cpu-crit {
248 /* milliCelsius */
249 temperature = <100000>;
250 hysteresis = <2000>;
251 type = "critical";
252 };
253 };
254 };
255 };
256
257 dvp_clk: dvp-clock {
258 compatible = "fixed-clock";
259 clock-output-names = "dvp_clk";
260 #clock-cells = <0>;
261 };
262 gmac0_rgmii_rxin: gmac0-rgmii-rxin-clock {
263 compatible = "fixed-clock";
264 clock-output-names = "gmac0_rgmii_rxin";
265 #clock-cells = <0>;
266 };
267
268 gmac0_rmii_refin: gmac0-rmii-refin-clock {
269 compatible = "fixed-clock";
270 clock-output-names = "gmac0_rmii_refin";
271 #clock-cells = <0>;
272 };
273
274 gmac1_rgmii_rxin: gmac1-rgmii-rxin-clock {
275 compatible = "fixed-clock";
276 clock-output-names = "gmac1_rgmii_rxin";
277 #clock-cells = <0>;
278 };
279
280 gmac1_rmii_refin: gmac1-rmii-refin-clock {
281 compatible = "fixed-clock";
282 clock-output-names = "gmac1_rmii_refin";
283 #clock-cells = <0>;
284 };
285
286 hdmitx0_pixelclk: hdmitx0-pixel-clock {
287 compatible = "fixed-clock";
288 clock-output-names = "hdmitx0_pixelclk";
289 #clock-cells = <0>;
290 };
291
292 i2srx_bclk_ext: i2srx-bclk-ext-clock {
293 compatible = "fixed-clock";
294 clock-output-names = "i2srx_bclk_ext";
295 #clock-cells = <0>;
296 };
297
298 i2srx_lrck_ext: i2srx-lrck-ext-clock {
299 compatible = "fixed-clock";
300 clock-output-names = "i2srx_lrck_ext";
301 #clock-cells = <0>;
302 };
303
304 i2stx_bclk_ext: i2stx-bclk-ext-clock {
305 compatible = "fixed-clock";
306 clock-output-names = "i2stx_bclk_ext";
307 #clock-cells = <0>;
308 };
309
310 i2stx_lrck_ext: i2stx-lrck-ext-clock {
311 compatible = "fixed-clock";
312 clock-output-names = "i2stx_lrck_ext";
313 #clock-cells = <0>;
314 };
315
316 mclk_ext: mclk-ext-clock {
317 compatible = "fixed-clock";
318 clock-output-names = "mclk_ext";
319 #clock-cells = <0>;
320 };
321
322 osc: oscillator {
323 compatible = "fixed-clock";
324 clock-output-names = "osc";
325 #clock-cells = <0>;
326 };
327
328 rtc_osc: rtc-oscillator {
329 compatible = "fixed-clock";
330 clock-output-names = "rtc_osc";
331 #clock-cells = <0>;
332 };
333
334 stmmac_axi_setup: stmmac-axi-config {
335 snps,lpi_en;
336 snps,wr_osr_lmt = <15>;
337 snps,rd_osr_lmt = <15>;
338 snps,blen = <256 128 64 32 0 0 0>;
339 };
340
341 tdm_ext: tdm-ext-clock {
342 compatible = "fixed-clock";
343 clock-output-names = "tdm_ext";
344 #clock-cells = <0>;
345 };
346
347 soc {
348 compatible = "simple-bus";
349 interrupt-parent = <&plic>;
350 #address-cells = <2>;
351 #size-cells = <2>;
352 ranges;
353
354 clint: timer@2000000 {
355 compatible = "starfive,jh7110-clint", "sifive,clint0";
356 reg = <0x0 0x2000000 0x0 0x10000>;
357 interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
358 <&cpu1_intc 3>, <&cpu1_intc 7>,
359 <&cpu2_intc 3>, <&cpu2_intc 7>,
360 <&cpu3_intc 3>, <&cpu3_intc 7>,
361 <&cpu4_intc 3>, <&cpu4_intc 7>;
362 };
363
364 ccache: cache-controller@2010000 {
365 compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache";
366 reg = <0x0 0x2010000 0x0 0x4000>;
367 interrupts = <1>, <3>, <4>, <2>;
368 cache-block-size = <64>;
369 cache-level = <2>;
370 cache-sets = <2048>;
371 cache-size = <2097152>;
372 cache-unified;
373 };
374
375 plic: interrupt-controller@c000000 {
376 compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0";
377 reg = <0x0 0xc000000 0x0 0x4000000>;
378 interrupts-extended = <&cpu0_intc 11>,
379 <&cpu1_intc 11>, <&cpu1_intc 9>,
380 <&cpu2_intc 11>, <&cpu2_intc 9>,
381 <&cpu3_intc 11>, <&cpu3_intc 9>,
382 <&cpu4_intc 11>, <&cpu4_intc 9>;
383 interrupt-controller;
384 #interrupt-cells = <1>;
385 #address-cells = <0>;
386 riscv,ndev = <136>;
387 };
388
389 uart0: serial@10000000 {
390 compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
391 reg = <0x0 0x10000000 0x0 0x10000>;
392 clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>,
393 <&syscrg JH7110_SYSCLK_UART0_APB>;
394 clock-names = "baudclk", "apb_pclk";
395 resets = <&syscrg JH7110_SYSRST_UART0_APB>,
396 <&syscrg JH7110_SYSRST_UART0_CORE>;
397 interrupts = <32>;
398 reg-io-width = <4>;
399 reg-shift = <2>;
400 status = "disabled";
401 };
402
403 uart1: serial@10010000 {
404 compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
405 reg = <0x0 0x10010000 0x0 0x10000>;
406 clocks = <&syscrg JH7110_SYSCLK_UART1_CORE>,
407 <&syscrg JH7110_SYSCLK_UART1_APB>;
408 clock-names = "baudclk", "apb_pclk";
409 resets = <&syscrg JH7110_SYSRST_UART1_APB>,
410 <&syscrg JH7110_SYSRST_UART1_CORE>;
411 interrupts = <33>;
412 reg-io-width = <4>;
413 reg-shift = <2>;
414 status = "disabled";
415 };
416
417 uart2: serial@10020000 {
418 compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
419 reg = <0x0 0x10020000 0x0 0x10000>;
420 clocks = <&syscrg JH7110_SYSCLK_UART2_CORE>,
421 <&syscrg JH7110_SYSCLK_UART2_APB>;
422 clock-names = "baudclk", "apb_pclk";
423 resets = <&syscrg JH7110_SYSRST_UART2_APB>,
424 <&syscrg JH7110_SYSRST_UART2_CORE>;
425 interrupts = <34>;
426 reg-io-width = <4>;
427 reg-shift = <2>;
428 status = "disabled";
429 };
430
431 i2c0: i2c@10030000 {
432 compatible = "snps,designware-i2c";
433 reg = <0x0 0x10030000 0x0 0x10000>;
434 clocks = <&syscrg JH7110_SYSCLK_I2C0_APB>;
435 clock-names = "ref";
436 resets = <&syscrg JH7110_SYSRST_I2C0_APB>;
437 interrupts = <35>;
438 #address-cells = <1>;
439 #size-cells = <0>;
440 status = "disabled";
441 };
442
443 i2c1: i2c@10040000 {
444 compatible = "snps,designware-i2c";
445 reg = <0x0 0x10040000 0x0 0x10000>;
446 clocks = <&syscrg JH7110_SYSCLK_I2C1_APB>;
447 clock-names = "ref";
448 resets = <&syscrg JH7110_SYSRST_I2C1_APB>;
449 interrupts = <36>;
450 #address-cells = <1>;
451 #size-cells = <0>;
452 status = "disabled";
453 };
454
455 i2c2: i2c@10050000 {
456 compatible = "snps,designware-i2c";
457 reg = <0x0 0x10050000 0x0 0x10000>;
458 clocks = <&syscrg JH7110_SYSCLK_I2C2_APB>;
459 clock-names = "ref";
460 resets = <&syscrg JH7110_SYSRST_I2C2_APB>;
461 interrupts = <37>;
462 #address-cells = <1>;
463 #size-cells = <0>;
464 status = "disabled";
465 };
466
467 spi0: spi@10060000 {
468 compatible = "arm,pl022", "arm,primecell";
469 reg = <0x0 0x10060000 0x0 0x10000>;
470 clocks = <&syscrg JH7110_SYSCLK_SPI0_APB>,
471 <&syscrg JH7110_SYSCLK_SPI0_APB>;
472 clock-names = "sspclk", "apb_pclk";
473 resets = <&syscrg JH7110_SYSRST_SPI0_APB>;
474 interrupts = <38>;
475 arm,primecell-periphid = <0x00041022>;
476 num-cs = <1>;
477 #address-cells = <1>;
478 #size-cells = <0>;
479 status = "disabled";
480 };
481
482 spi1: spi@10070000 {
483 compatible = "arm,pl022", "arm,primecell";
484 reg = <0x0 0x10070000 0x0 0x10000>;
485 clocks = <&syscrg JH7110_SYSCLK_SPI1_APB>,
486 <&syscrg JH7110_SYSCLK_SPI1_APB>;
487 clock-names = "sspclk", "apb_pclk";
488 resets = <&syscrg JH7110_SYSRST_SPI1_APB>;
489 interrupts = <39>;
490 arm,primecell-periphid = <0x00041022>;
491 num-cs = <1>;
492 #address-cells = <1>;
493 #size-cells = <0>;
494 status = "disabled";
495 };
496
497 spi2: spi@10080000 {
498 compatible = "arm,pl022", "arm,primecell";
499 reg = <0x0 0x10080000 0x0 0x10000>;
500 clocks = <&syscrg JH7110_SYSCLK_SPI2_APB>,
501 <&syscrg JH7110_SYSCLK_SPI2_APB>;
502 clock-names = "sspclk", "apb_pclk";
503 resets = <&syscrg JH7110_SYSRST_SPI2_APB>;
504 interrupts = <40>;
505 arm,primecell-periphid = <0x00041022>;
506 num-cs = <1>;
507 #address-cells = <1>;
508 #size-cells = <0>;
509 status = "disabled";
510 };
511
512 tdm: tdm@10090000 {
513 compatible = "starfive,jh7110-tdm";
514 reg = <0x0 0x10090000 0x0 0x1000>;
515 clocks = <&syscrg JH7110_SYSCLK_TDM_AHB>,
516 <&syscrg JH7110_SYSCLK_TDM_APB>,
517 <&syscrg JH7110_SYSCLK_TDM_INTERNAL>,
518 <&syscrg JH7110_SYSCLK_TDM_TDM>,
519 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
520 <&tdm_ext>;
521 clock-names = "tdm_ahb", "tdm_apb",
522 "tdm_internal", "tdm",
523 "mclk_inner", "tdm_ext";
524 resets = <&syscrg JH7110_SYSRST_TDM_AHB>,
525 <&syscrg JH7110_SYSRST_TDM_APB>,
526 <&syscrg JH7110_SYSRST_TDM_CORE>;
527 dmas = <&dma 20>, <&dma 21>;
528 dma-names = "rx","tx";
529 #sound-dai-cells = <0>;
530 status = "disabled";
531 };
532
533 i2srx: i2s@100e0000 {
534 compatible = "starfive,jh7110-i2srx";
535 reg = <0x0 0x100e0000 0x0 0x1000>;
536 clocks = <&syscrg JH7110_SYSCLK_I2SRX_BCLK_MST>,
537 <&syscrg JH7110_SYSCLK_I2SRX_APB>,
538 <&syscrg JH7110_SYSCLK_MCLK>,
539 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
540 <&mclk_ext>,
541 <&syscrg JH7110_SYSCLK_I2SRX_BCLK>,
542 <&syscrg JH7110_SYSCLK_I2SRX_LRCK>,
543 <&i2srx_bclk_ext>,
544 <&i2srx_lrck_ext>;
545 clock-names = "i2sclk", "apb", "mclk",
546 "mclk_inner", "mclk_ext", "bclk",
547 "lrck", "bclk_ext", "lrck_ext";
548 resets = <&syscrg JH7110_SYSRST_I2SRX_APB>,
549 <&syscrg JH7110_SYSRST_I2SRX_BCLK>;
550 dmas = <0>, <&dma 24>;
551 dma-names = "tx", "rx";
552 starfive,syscon = <&sys_syscon 0x18 0x2>;
553 #sound-dai-cells = <0>;
554 status = "disabled";
555 };
556
557 pwmdac: pwmdac@100b0000 {
558 compatible = "starfive,jh7110-pwmdac";
559 reg = <0x0 0x100b0000 0x0 0x1000>;
560 clocks = <&syscrg JH7110_SYSCLK_PWMDAC_APB>,
561 <&syscrg JH7110_SYSCLK_PWMDAC_CORE>;
562 clock-names = "apb", "core";
563 resets = <&syscrg JH7110_SYSRST_PWMDAC_APB>;
564 dmas = <&dma 22>;
565 dma-names = "tx";
566 #sound-dai-cells = <0>;
567 status = "disabled";
568 };
569
570 usb0: usb@10100000 {
571 compatible = "starfive,jh7110-usb";
572 ranges = <0x0 0x0 0x10100000 0x100000>;
573 #address-cells = <1>;
574 #size-cells = <1>;
575 starfive,stg-syscon = <&stg_syscon 0x4>;
576 clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>,
577 <&stgcrg JH7110_STGCLK_USB0_STB>,
578 <&stgcrg JH7110_STGCLK_USB0_APB>,
579 <&stgcrg JH7110_STGCLK_USB0_AXI>,
580 <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>;
581 clock-names = "lpm", "stb", "apb", "axi", "utmi_apb";
582 resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>,
583 <&stgcrg JH7110_STGRST_USB0_APB>,
584 <&stgcrg JH7110_STGRST_USB0_AXI>,
585 <&stgcrg JH7110_STGRST_USB0_UTMI_APB>;
586 reset-names = "pwrup", "apb", "axi", "utmi_apb";
587 status = "disabled";
588
589 usb_cdns3: usb@0 {
590 compatible = "cdns,usb3";
591 reg = <0x0 0x10000>,
592 <0x10000 0x10000>,
593 <0x20000 0x10000>;
594 reg-names = "otg", "xhci", "dev";
595 interrupts = <100>, <108>, <110>;
596 interrupt-names = "host", "peripheral", "otg";
597 phys = <&usbphy0>;
598 phy-names = "cdns3,usb2-phy";
599 };
600 };
601
602 usbphy0: phy@10200000 {
603 compatible = "starfive,jh7110-usb-phy";
604 reg = <0x0 0x10200000 0x0 0x10000>;
605 clocks = <&syscrg JH7110_SYSCLK_USB_125M>,
606 <&stgcrg JH7110_STGCLK_USB0_APP_125>;
607 clock-names = "125m", "app_125m";
608 #phy-cells = <0>;
609 };
610
611 pciephy0: phy@10210000 {
612 compatible = "starfive,jh7110-pcie-phy";
613 reg = <0x0 0x10210000 0x0 0x10000>;
614 #phy-cells = <0>;
615 };
616
617 pciephy1: phy@10220000 {
618 compatible = "starfive,jh7110-pcie-phy";
619 reg = <0x0 0x10220000 0x0 0x10000>;
620 #phy-cells = <0>;
621 };
622
623 stgcrg: clock-controller@10230000 {
624 compatible = "starfive,jh7110-stgcrg";
625 reg = <0x0 0x10230000 0x0 0x10000>;
626 clocks = <&osc>,
627 <&syscrg JH7110_SYSCLK_HIFI4_CORE>,
628 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
629 <&syscrg JH7110_SYSCLK_USB_125M>,
630 <&syscrg JH7110_SYSCLK_CPU_BUS>,
631 <&syscrg JH7110_SYSCLK_HIFI4_AXI>,
632 <&syscrg JH7110_SYSCLK_NOCSTG_BUS>,
633 <&syscrg JH7110_SYSCLK_APB_BUS>;
634 clock-names = "osc", "hifi4_core",
635 "stg_axiahb", "usb_125m",
636 "cpu_bus", "hifi4_axi",
637 "nocstg_bus", "apb_bus";
638 #clock-cells = <1>;
639 #reset-cells = <1>;
640 };
641
642 stg_syscon: syscon@10240000 {
643 compatible = "starfive,jh7110-stg-syscon", "syscon";
644 reg = <0x0 0x10240000 0x0 0x1000>;
645 };
646
647 uart3: serial@12000000 {
648 compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
649 reg = <0x0 0x12000000 0x0 0x10000>;
650 clocks = <&syscrg JH7110_SYSCLK_UART3_CORE>,
651 <&syscrg JH7110_SYSCLK_UART3_APB>;
652 clock-names = "baudclk", "apb_pclk";
653 resets = <&syscrg JH7110_SYSRST_UART3_APB>,
654 <&syscrg JH7110_SYSRST_UART3_CORE>;
655 interrupts = <45>;
656 reg-io-width = <4>;
657 reg-shift = <2>;
658 status = "disabled";
659 };
660
661 uart4: serial@12010000 {
662 compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
663 reg = <0x0 0x12010000 0x0 0x10000>;
664 clocks = <&syscrg JH7110_SYSCLK_UART4_CORE>,
665 <&syscrg JH7110_SYSCLK_UART4_APB>;
666 clock-names = "baudclk", "apb_pclk";
667 resets = <&syscrg JH7110_SYSRST_UART4_APB>,
668 <&syscrg JH7110_SYSRST_UART4_CORE>;
669 interrupts = <46>;
670 reg-io-width = <4>;
671 reg-shift = <2>;
672 status = "disabled";
673 };
674
675 uart5: serial@12020000 {
676 compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
677 reg = <0x0 0x12020000 0x0 0x10000>;
678 clocks = <&syscrg JH7110_SYSCLK_UART5_CORE>,
679 <&syscrg JH7110_SYSCLK_UART5_APB>;
680 clock-names = "baudclk", "apb_pclk";
681 resets = <&syscrg JH7110_SYSRST_UART5_APB>,
682 <&syscrg JH7110_SYSRST_UART5_CORE>;
683 interrupts = <47>;
684 reg-io-width = <4>;
685 reg-shift = <2>;
686 status = "disabled";
687 };
688
689 i2c3: i2c@12030000 {
690 compatible = "snps,designware-i2c";
691 reg = <0x0 0x12030000 0x0 0x10000>;
692 clocks = <&syscrg JH7110_SYSCLK_I2C3_APB>;
693 clock-names = "ref";
694 resets = <&syscrg JH7110_SYSRST_I2C3_APB>;
695 interrupts = <48>;
696 #address-cells = <1>;
697 #size-cells = <0>;
698 status = "disabled";
699 };
700
701 i2c4: i2c@12040000 {
702 compatible = "snps,designware-i2c";
703 reg = <0x0 0x12040000 0x0 0x10000>;
704 clocks = <&syscrg JH7110_SYSCLK_I2C4_APB>;
705 clock-names = "ref";
706 resets = <&syscrg JH7110_SYSRST_I2C4_APB>;
707 interrupts = <49>;
708 #address-cells = <1>;
709 #size-cells = <0>;
710 status = "disabled";
711 };
712
713 i2c5: i2c@12050000 {
714 compatible = "snps,designware-i2c";
715 reg = <0x0 0x12050000 0x0 0x10000>;
716 clocks = <&syscrg JH7110_SYSCLK_I2C5_APB>;
717 clock-names = "ref";
718 resets = <&syscrg JH7110_SYSRST_I2C5_APB>;
719 interrupts = <50>;
720 #address-cells = <1>;
721 #size-cells = <0>;
722 status = "disabled";
723 };
724
725 i2c6: i2c@12060000 {
726 compatible = "snps,designware-i2c";
727 reg = <0x0 0x12060000 0x0 0x10000>;
728 clocks = <&syscrg JH7110_SYSCLK_I2C6_APB>;
729 clock-names = "ref";
730 resets = <&syscrg JH7110_SYSRST_I2C6_APB>;
731 interrupts = <51>;
732 #address-cells = <1>;
733 #size-cells = <0>;
734 status = "disabled";
735 };
736
737 spi3: spi@12070000 {
738 compatible = "arm,pl022", "arm,primecell";
739 reg = <0x0 0x12070000 0x0 0x10000>;
740 clocks = <&syscrg JH7110_SYSCLK_SPI3_APB>,
741 <&syscrg JH7110_SYSCLK_SPI3_APB>;
742 clock-names = "sspclk", "apb_pclk";
743 resets = <&syscrg JH7110_SYSRST_SPI3_APB>;
744 interrupts = <52>;
745 arm,primecell-periphid = <0x00041022>;
746 num-cs = <1>;
747 #address-cells = <1>;
748 #size-cells = <0>;
749 status = "disabled";
750 };
751
752 spi4: spi@12080000 {
753 compatible = "arm,pl022", "arm,primecell";
754 reg = <0x0 0x12080000 0x0 0x10000>;
755 clocks = <&syscrg JH7110_SYSCLK_SPI4_APB>,
756 <&syscrg JH7110_SYSCLK_SPI4_APB>;
757 clock-names = "sspclk", "apb_pclk";
758 resets = <&syscrg JH7110_SYSRST_SPI4_APB>;
759 interrupts = <53>;
760 arm,primecell-periphid = <0x00041022>;
761 num-cs = <1>;
762 #address-cells = <1>;
763 #size-cells = <0>;
764 status = "disabled";
765 };
766
767 spi5: spi@12090000 {
768 compatible = "arm,pl022", "arm,primecell";
769 reg = <0x0 0x12090000 0x0 0x10000>;
770 clocks = <&syscrg JH7110_SYSCLK_SPI5_APB>,
771 <&syscrg JH7110_SYSCLK_SPI5_APB>;
772 clock-names = "sspclk", "apb_pclk";
773 resets = <&syscrg JH7110_SYSRST_SPI5_APB>;
774 interrupts = <54>;
775 arm,primecell-periphid = <0x00041022>;
776 num-cs = <1>;
777 #address-cells = <1>;
778 #size-cells = <0>;
779 status = "disabled";
780 };
781
782 spi6: spi@120a0000 {
783 compatible = "arm,pl022", "arm,primecell";
784 reg = <0x0 0x120A0000 0x0 0x10000>;
785 clocks = <&syscrg JH7110_SYSCLK_SPI6_APB>,
786 <&syscrg JH7110_SYSCLK_SPI6_APB>;
787 clock-names = "sspclk", "apb_pclk";
788 resets = <&syscrg JH7110_SYSRST_SPI6_APB>;
789 interrupts = <55>;
790 arm,primecell-periphid = <0x00041022>;
791 num-cs = <1>;
792 #address-cells = <1>;
793 #size-cells = <0>;
794 status = "disabled";
795 };
796
797 i2stx0: i2s@120b0000 {
798 compatible = "starfive,jh7110-i2stx0";
799 reg = <0x0 0x120b0000 0x0 0x1000>;
800 clocks = <&syscrg JH7110_SYSCLK_I2STX0_BCLK_MST>,
801 <&syscrg JH7110_SYSCLK_I2STX0_APB>,
802 <&syscrg JH7110_SYSCLK_MCLK>,
803 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
804 <&mclk_ext>;
805 clock-names = "i2sclk", "apb", "mclk",
806 "mclk_inner","mclk_ext";
807 resets = <&syscrg JH7110_SYSRST_I2STX0_APB>,
808 <&syscrg JH7110_SYSRST_I2STX0_BCLK>;
809 dmas = <&dma 47>;
810 dma-names = "tx";
811 #sound-dai-cells = <0>;
812 status = "disabled";
813 };
814
815 i2stx1: i2s@120c0000 {
816 compatible = "starfive,jh7110-i2stx1";
817 reg = <0x0 0x120c0000 0x0 0x1000>;
818 clocks = <&syscrg JH7110_SYSCLK_I2STX1_BCLK_MST>,
819 <&syscrg JH7110_SYSCLK_I2STX1_APB>,
820 <&syscrg JH7110_SYSCLK_MCLK>,
821 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
822 <&mclk_ext>,
823 <&syscrg JH7110_SYSCLK_I2STX1_BCLK>,
824 <&syscrg JH7110_SYSCLK_I2STX1_LRCK>,
825 <&i2stx_bclk_ext>,
826 <&i2stx_lrck_ext>;
827 clock-names = "i2sclk", "apb", "mclk",
828 "mclk_inner", "mclk_ext", "bclk",
829 "lrck", "bclk_ext", "lrck_ext";
830 resets = <&syscrg JH7110_SYSRST_I2STX1_APB>,
831 <&syscrg JH7110_SYSRST_I2STX1_BCLK>;
832 dmas = <&dma 48>;
833 dma-names = "tx";
834 #sound-dai-cells = <0>;
835 status = "disabled";
836 };
837
838 pwm: pwm@120d0000 {
839 compatible = "starfive,jh7110-pwm", "opencores,pwm-v1";
840 reg = <0x0 0x120d0000 0x0 0x10000>;
841 clocks = <&syscrg JH7110_SYSCLK_PWM_APB>;
842 resets = <&syscrg JH7110_SYSRST_PWM_APB>;
843 #pwm-cells = <3>;
844 status = "disabled";
845 };
846
847 sfctemp: temperature-sensor@120e0000 {
848 compatible = "starfive,jh7110-temp";
849 reg = <0x0 0x120e0000 0x0 0x10000>;
850 clocks = <&syscrg JH7110_SYSCLK_TEMP_CORE>,
851 <&syscrg JH7110_SYSCLK_TEMP_APB>;
852 clock-names = "sense", "bus";
853 resets = <&syscrg JH7110_SYSRST_TEMP_CORE>,
854 <&syscrg JH7110_SYSRST_TEMP_APB>;
855 reset-names = "sense", "bus";
856 #thermal-sensor-cells = <0>;
857 };
858
859 qspi: spi@13010000 {
860 compatible = "starfive,jh7110-qspi", "cdns,qspi-nor";
861 reg = <0x0 0x13010000 0x0 0x10000>,
862 <0x0 0x21000000 0x0 0x400000>;
863 interrupts = <25>;
864 clocks = <&syscrg JH7110_SYSCLK_QSPI_REF>,
865 <&syscrg JH7110_SYSCLK_QSPI_AHB>,
866 <&syscrg JH7110_SYSCLK_QSPI_APB>;
867 clock-names = "ref", "ahb", "apb";
868 resets = <&syscrg JH7110_SYSRST_QSPI_APB>,
869 <&syscrg JH7110_SYSRST_QSPI_AHB>,
870 <&syscrg JH7110_SYSRST_QSPI_REF>;
871 reset-names = "qspi", "qspi-ocp", "rstc_ref";
872 cdns,fifo-depth = <256>;
873 cdns,fifo-width = <4>;
874 cdns,trigger-address = <0x0>;
875 status = "disabled";
876 };
877
878 syscrg: clock-controller@13020000 {
879 compatible = "starfive,jh7110-syscrg";
880 reg = <0x0 0x13020000 0x0 0x10000>;
881 clocks = <&osc>, <&gmac1_rmii_refin>,
882 <&gmac1_rgmii_rxin>,
883 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
884 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
885 <&tdm_ext>, <&mclk_ext>,
886 <&pllclk JH7110_PLLCLK_PLL0_OUT>,
887 <&pllclk JH7110_PLLCLK_PLL1_OUT>,
888 <&pllclk JH7110_PLLCLK_PLL2_OUT>;
889 clock-names = "osc", "gmac1_rmii_refin",
890 "gmac1_rgmii_rxin",
891 "i2stx_bclk_ext", "i2stx_lrck_ext",
892 "i2srx_bclk_ext", "i2srx_lrck_ext",
893 "tdm_ext", "mclk_ext",
894 "pll0_out", "pll1_out", "pll2_out";
895 #clock-cells = <1>;
896 #reset-cells = <1>;
897 };
898
899 sys_syscon: syscon@13030000 {
900 compatible = "starfive,jh7110-sys-syscon", "syscon", "simple-mfd";
901 reg = <0x0 0x13030000 0x0 0x1000>;
902
903 pllclk: clock-controller {
904 compatible = "starfive,jh7110-pll";
905 clocks = <&osc>;
906 #clock-cells = <1>;
907 };
908 };
909
910 sysgpio: pinctrl@13040000 {
911 compatible = "starfive,jh7110-sys-pinctrl";
912 reg = <0x0 0x13040000 0x0 0x10000>;
913 clocks = <&syscrg JH7110_SYSCLK_IOMUX_APB>;
914 resets = <&syscrg JH7110_SYSRST_IOMUX_APB>;
915 interrupts = <86>;
916 interrupt-controller;
917 #interrupt-cells = <2>;
918 gpio-controller;
919 #gpio-cells = <2>;
920 };
921
922 watchdog@13070000 {
923 compatible = "starfive,jh7110-wdt";
924 reg = <0x0 0x13070000 0x0 0x10000>;
925 clocks = <&syscrg JH7110_SYSCLK_WDT_APB>,
926 <&syscrg JH7110_SYSCLK_WDT_CORE>;
927 clock-names = "apb", "core";
928 resets = <&syscrg JH7110_SYSRST_WDT_APB>,
929 <&syscrg JH7110_SYSRST_WDT_CORE>;
930 };
931
932 crypto: crypto@16000000 {
933 compatible = "starfive,jh7110-crypto";
934 reg = <0x0 0x16000000 0x0 0x4000>;
935 clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
936 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
937 clock-names = "hclk", "ahb";
938 interrupts = <28>;
939 resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
940 dmas = <&sdma 1 2>, <&sdma 0 2>;
941 dma-names = "tx", "rx";
942 };
943
944 sdma: dma-controller@16008000 {
945 compatible = "arm,pl080", "arm,primecell";
946 arm,primecell-periphid = <0x00041080>;
947 reg = <0x0 0x16008000 0x0 0x4000>;
948 interrupts = <29>;
949 clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>;
950 clock-names = "apb_pclk";
951 resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
952 lli-bus-interface-ahb1;
953 mem-bus-interface-ahb1;
954 memcpy-burst-size = <256>;
955 memcpy-bus-width = <32>;
956 #dma-cells = <2>;
957 };
958
959 rng: rng@1600c000 {
960 compatible = "starfive,jh7110-trng";
961 reg = <0x0 0x1600C000 0x0 0x4000>;
962 clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
963 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
964 clock-names = "hclk", "ahb";
965 resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
966 interrupts = <30>;
967 };
968
969 mmc0: mmc@16010000 {
970 compatible = "starfive,jh7110-mmc";
971 reg = <0x0 0x16010000 0x0 0x10000>;
972 clocks = <&syscrg JH7110_SYSCLK_SDIO0_AHB>,
973 <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>;
974 clock-names = "biu","ciu";
975 resets = <&syscrg JH7110_SYSRST_SDIO0_AHB>;
976 reset-names = "reset";
977 interrupts = <74>;
978 fifo-depth = <32>;
979 fifo-watermark-aligned;
980 data-addr = <0>;
981 starfive,sysreg = <&sys_syscon 0x14 0x1a 0x7c000000>;
982 status = "disabled";
983 };
984
985 mmc1: mmc@16020000 {
986 compatible = "starfive,jh7110-mmc";
987 reg = <0x0 0x16020000 0x0 0x10000>;
988 clocks = <&syscrg JH7110_SYSCLK_SDIO1_AHB>,
989 <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>;
990 clock-names = "biu","ciu";
991 resets = <&syscrg JH7110_SYSRST_SDIO1_AHB>;
992 reset-names = "reset";
993 interrupts = <75>;
994 fifo-depth = <32>;
995 fifo-watermark-aligned;
996 data-addr = <0>;
997 starfive,sysreg = <&sys_syscon 0x9c 0x1 0x3e>;
998 status = "disabled";
999 };
1000
1001 gmac0: ethernet@16030000 {
1002 compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
1003 reg = <0x0 0x16030000 0x0 0x10000>;
1004 clocks = <&aoncrg JH7110_AONCLK_GMAC0_AXI>,
1005 <&aoncrg JH7110_AONCLK_GMAC0_AHB>,
1006 <&syscrg JH7110_SYSCLK_GMAC0_PTP>,
1007 <&aoncrg JH7110_AONCLK_GMAC0_TX_INV>,
1008 <&syscrg JH7110_SYSCLK_GMAC0_GTXC>;
1009 clock-names = "stmmaceth", "pclk", "ptp_ref",
1010 "tx", "gtx";
1011 resets = <&aoncrg JH7110_AONRST_GMAC0_AXI>,
1012 <&aoncrg JH7110_AONRST_GMAC0_AHB>;
1013 reset-names = "stmmaceth", "ahb";
1014 interrupts = <7>, <6>, <5>;
1015 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1016 rx-fifo-depth = <2048>;
1017 tx-fifo-depth = <2048>;
1018 snps,multicast-filter-bins = <64>;
1019 snps,perfect-filter-entries = <256>;
1020 snps,fixed-burst;
1021 snps,no-pbl-x8;
1022 snps,force_thresh_dma_mode;
1023 snps,axi-config = <&stmmac_axi_setup>;
1024 snps,tso;
1025 snps,en-tx-lpi-clockgating;
1026 snps,txpbl = <16>;
1027 snps,rxpbl = <16>;
1028 starfive,syscon = <&aon_syscon 0xc 0x12>;
1029 status = "disabled";
1030 };
1031
1032 gmac1: ethernet@16040000 {
1033 compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
1034 reg = <0x0 0x16040000 0x0 0x10000>;
1035 clocks = <&syscrg JH7110_SYSCLK_GMAC1_AXI>,
1036 <&syscrg JH7110_SYSCLK_GMAC1_AHB>,
1037 <&syscrg JH7110_SYSCLK_GMAC1_PTP>,
1038 <&syscrg JH7110_SYSCLK_GMAC1_TX_INV>,
1039 <&syscrg JH7110_SYSCLK_GMAC1_GTXC>;
1040 clock-names = "stmmaceth", "pclk", "ptp_ref",
1041 "tx", "gtx";
1042 resets = <&syscrg JH7110_SYSRST_GMAC1_AXI>,
1043 <&syscrg JH7110_SYSRST_GMAC1_AHB>;
1044 reset-names = "stmmaceth", "ahb";
1045 interrupts = <78>, <77>, <76>;
1046 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1047 rx-fifo-depth = <2048>;
1048 tx-fifo-depth = <2048>;
1049 snps,multicast-filter-bins = <64>;
1050 snps,perfect-filter-entries = <256>;
1051 snps,fixed-burst;
1052 snps,no-pbl-x8;
1053 snps,force_thresh_dma_mode;
1054 snps,axi-config = <&stmmac_axi_setup>;
1055 snps,tso;
1056 snps,en-tx-lpi-clockgating;
1057 snps,txpbl = <16>;
1058 snps,rxpbl = <16>;
1059 starfive,syscon = <&sys_syscon 0x90 0x2>;
1060 status = "disabled";
1061 };
1062
1063 dma: dma-controller@16050000 {
1064 compatible = "starfive,jh7110-axi-dma";
1065 reg = <0x0 0x16050000 0x0 0x10000>;
1066 clocks = <&stgcrg JH7110_STGCLK_DMA1P_AXI>,
1067 <&stgcrg JH7110_STGCLK_DMA1P_AHB>;
1068 clock-names = "core-clk", "cfgr-clk";
1069 resets = <&stgcrg JH7110_STGRST_DMA1P_AXI>,
1070 <&stgcrg JH7110_STGRST_DMA1P_AHB>;
1071 interrupts = <73>;
1072 #dma-cells = <1>;
1073 dma-channels = <4>;
1074 snps,dma-masters = <1>;
1075 snps,data-width = <3>;
1076 snps,block-size = <65536 65536 65536 65536>;
1077 snps,priority = <0 1 2 3>;
1078 snps,axi-max-burst-len = <16>;
1079 };
1080
1081 aoncrg: clock-controller@17000000 {
1082 compatible = "starfive,jh7110-aoncrg";
1083 reg = <0x0 0x17000000 0x0 0x10000>;
1084 clocks = <&osc>, <&gmac0_rmii_refin>,
1085 <&gmac0_rgmii_rxin>,
1086 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
1087 <&syscrg JH7110_SYSCLK_APB_BUS>,
1088 <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>,
1089 <&rtc_osc>;
1090 clock-names = "osc", "gmac0_rmii_refin",
1091 "gmac0_rgmii_rxin", "stg_axiahb",
1092 "apb_bus", "gmac0_gtxclk",
1093 "rtc_osc";
1094 #clock-cells = <1>;
1095 #reset-cells = <1>;
1096 };
1097
1098 aon_syscon: syscon@17010000 {
1099 compatible = "starfive,jh7110-aon-syscon", "syscon";
1100 reg = <0x0 0x17010000 0x0 0x1000>;
1101 #power-domain-cells = <1>;
1102 };
1103
1104 aongpio: pinctrl@17020000 {
1105 compatible = "starfive,jh7110-aon-pinctrl";
1106 reg = <0x0 0x17020000 0x0 0x10000>;
1107 resets = <&aoncrg JH7110_AONRST_IOMUX>;
1108 interrupts = <85>;
1109 interrupt-controller;
1110 #interrupt-cells = <2>;
1111 gpio-controller;
1112 #gpio-cells = <2>;
1113 };
1114
1115 pwrc: power-controller@17030000 {
1116 compatible = "starfive,jh7110-pmu";
1117 reg = <0x0 0x17030000 0x0 0x10000>;
1118 interrupts = <111>;
1119 #power-domain-cells = <1>;
1120 };
1121
1122 csi2rx: csi@19800000 {
1123 compatible = "starfive,jh7110-csi2rx", "cdns,csi2rx";
1124 reg = <0x0 0x19800000 0x0 0x10000>;
1125 clocks = <&ispcrg JH7110_ISPCLK_VIN_SYS>,
1126 <&ispcrg JH7110_ISPCLK_VIN_APB>,
1127 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF0>,
1128 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF1>,
1129 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF2>,
1130 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF3>;
1131 clock-names = "sys_clk", "p_clk",
1132 "pixel_if0_clk", "pixel_if1_clk",
1133 "pixel_if2_clk", "pixel_if3_clk";
1134 resets = <&ispcrg JH7110_ISPRST_VIN_SYS>,
1135 <&ispcrg JH7110_ISPRST_VIN_APB>,
1136 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF0>,
1137 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF1>,
1138 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF2>,
1139 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF3>;
1140 reset-names = "sys", "reg_bank",
1141 "pixel_if0", "pixel_if1",
1142 "pixel_if2", "pixel_if3";
1143 phys = <&csi_phy>;
1144 phy-names = "dphy";
1145 status = "disabled";
1146 };
1147
1148 ispcrg: clock-controller@19810000 {
1149 compatible = "starfive,jh7110-ispcrg";
1150 reg = <0x0 0x19810000 0x0 0x10000>;
1151 clocks = <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
1152 <&syscrg JH7110_SYSCLK_ISP_TOP_AXI>,
1153 <&syscrg JH7110_SYSCLK_NOC_BUS_ISP_AXI>,
1154 <&dvp_clk>;
1155 clock-names = "isp_top_core", "isp_top_axi",
1156 "noc_bus_isp_axi", "dvp_clk";
1157 resets = <&syscrg JH7110_SYSRST_ISP_TOP>,
1158 <&syscrg JH7110_SYSRST_ISP_TOP_AXI>,
1159 <&syscrg JH7110_SYSRST_NOC_BUS_ISP_AXI>;
1160 #clock-cells = <1>;
1161 #reset-cells = <1>;
1162 power-domains = <&pwrc JH7110_PD_ISP>;
1163 };
1164
1165 csi_phy: phy@19820000 {
1166 compatible = "starfive,jh7110-dphy-rx";
1167 reg = <0x0 0x19820000 0x0 0x10000>;
1168 clocks = <&ispcrg JH7110_ISPCLK_M31DPHY_CFG_IN>,
1169 <&ispcrg JH7110_ISPCLK_M31DPHY_REF_IN>,
1170 <&ispcrg JH7110_ISPCLK_M31DPHY_TX_ESC_LAN0>;
1171 clock-names = "cfg", "ref", "tx";
1172 resets = <&ispcrg JH7110_ISPRST_M31DPHY_HW>,
1173 <&ispcrg JH7110_ISPRST_M31DPHY_B09_AON>;
1174 power-domains = <&aon_syscon JH7110_AON_PD_DPHY_RX>;
1175 #phy-cells = <0>;
1176 };
1177
1178 camss: isp@19840000 {
1179 compatible = "starfive,jh7110-camss";
1180 reg = <0x0 0x19840000 0x0 0x10000>,
1181 <0x0 0x19870000 0x0 0x30000>;
1182 reg-names = "syscon", "isp";
1183 clocks = <&ispcrg JH7110_ISPCLK_DOM4_APB_FUNC>,
1184 <&ispcrg JH7110_ISPCLK_ISPV2_TOP_WRAPPER_C>,
1185 <&ispcrg JH7110_ISPCLK_DVP_INV>,
1186 <&ispcrg JH7110_ISPCLK_VIN_P_AXI_WR>,
1187 <&ispcrg JH7110_ISPCLK_MIPI_RX0_PXL>,
1188 <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
1189 <&syscrg JH7110_SYSCLK_ISP_TOP_AXI>;
1190 clock-names = "apb_func", "wrapper_clk_c", "dvp_inv",
1191 "axiwr", "mipi_rx0_pxl", "ispcore_2x",
1192 "isp_axi";
1193 resets = <&ispcrg JH7110_ISPRST_ISPV2_TOP_WRAPPER_P>,
1194 <&ispcrg JH7110_ISPRST_ISPV2_TOP_WRAPPER_C>,
1195 <&ispcrg JH7110_ISPRST_VIN_P_AXI_RD>,
1196 <&ispcrg JH7110_ISPRST_VIN_P_AXI_WR>,
1197 <&syscrg JH7110_SYSRST_ISP_TOP>,
1198 <&syscrg JH7110_SYSRST_ISP_TOP_AXI>;
1199 reset-names = "wrapper_p", "wrapper_c", "axird",
1200 "axiwr", "isp_top_n", "isp_top_axi";
1201 power-domains = <&pwrc JH7110_PD_ISP>;
1202 interrupts = <92>, <87>, <90>, <88>;
1203 status = "disabled";
1204 };
1205
1206 voutcrg: clock-controller@295c0000 {
1207 compatible = "starfive,jh7110-voutcrg";
1208 reg = <0x0 0x295c0000 0x0 0x10000>;
1209 clocks = <&syscrg JH7110_SYSCLK_VOUT_SRC>,
1210 <&syscrg JH7110_SYSCLK_VOUT_TOP_AHB>,
1211 <&syscrg JH7110_SYSCLK_VOUT_TOP_AXI>,
1212 <&syscrg JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK>,
1213 <&syscrg JH7110_SYSCLK_I2STX0_BCLK>,
1214 <&hdmitx0_pixelclk>;
1215 clock-names = "vout_src", "vout_top_ahb",
1216 "vout_top_axi", "vout_top_hdmitx0_mclk",
1217 "i2stx0_bclk", "hdmitx0_pixelclk";
1218 resets = <&syscrg JH7110_SYSRST_VOUT_TOP_SRC>;
1219 #clock-cells = <1>;
1220 #reset-cells = <1>;
1221 power-domains = <&pwrc JH7110_PD_VOUT>;
1222 };
1223
1224 pcie0: pcie@940000000 {
1225 compatible = "starfive,jh7110-pcie";
1226 reg = <0x9 0x40000000 0x0 0x1000000>,
1227 <0x0 0x2b000000 0x0 0x100000>;
1228 reg-names = "cfg", "apb";
1229 linux,pci-domain = <0>;
1230 #address-cells = <3>;
1231 #size-cells = <2>;
1232 #interrupt-cells = <1>;
1233 ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>,
1234 <0xc3000000 0x9 0x00000000 0x9 0x00000000 0x0 0x40000000>;
1235 interrupts = <56>;
1236 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1237 interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc0 0x1>,
1238 <0x0 0x0 0x0 0x2 &pcie_intc0 0x2>,
1239 <0x0 0x0 0x0 0x3 &pcie_intc0 0x3>,
1240 <0x0 0x0 0x0 0x4 &pcie_intc0 0x4>;
1241 msi-controller;
1242 device_type = "pci";
1243 starfive,stg-syscon = <&stg_syscon>;
1244 bus-range = <0x0 0xff>;
1245 clocks = <&syscrg JH7110_SYSCLK_NOC_BUS_STG_AXI>,
1246 <&stgcrg JH7110_STGCLK_PCIE0_TL>,
1247 <&stgcrg JH7110_STGCLK_PCIE0_AXI_MST0>,
1248 <&stgcrg JH7110_STGCLK_PCIE0_APB>;
1249 clock-names = "noc", "tl", "axi_mst0", "apb";
1250 resets = <&stgcrg JH7110_STGRST_PCIE0_AXI_MST0>,
1251 <&stgcrg JH7110_STGRST_PCIE0_AXI_SLV0>,
1252 <&stgcrg JH7110_STGRST_PCIE0_AXI_SLV>,
1253 <&stgcrg JH7110_STGRST_PCIE0_BRG>,
1254 <&stgcrg JH7110_STGRST_PCIE0_CORE>,
1255 <&stgcrg JH7110_STGRST_PCIE0_APB>;
1256 reset-names = "mst0", "slv0", "slv", "brg",
1257 "core", "apb";
1258 status = "disabled";
1259
1260 pcie_intc0: interrupt-controller {
1261 #address-cells = <0>;
1262 #interrupt-cells = <1>;
1263 interrupt-controller;
1264 };
1265 };
1266
1267 pcie1: pcie@9c0000000 {
1268 compatible = "starfive,jh7110-pcie";
1269 reg = <0x9 0xc0000000 0x0 0x1000000>,
1270 <0x0 0x2c000000 0x0 0x100000>;
1271 reg-names = "cfg", "apb";
1272 linux,pci-domain = <1>;
1273 #address-cells = <3>;
1274 #size-cells = <2>;
1275 #interrupt-cells = <1>;
1276 ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>,
1277 <0xc3000000 0x9 0x80000000 0x9 0x80000000 0x0 0x40000000>;
1278 interrupts = <57>;
1279 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1280 interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc1 0x1>,
1281 <0x0 0x0 0x0 0x2 &pcie_intc1 0x2>,
1282 <0x0 0x0 0x0 0x3 &pcie_intc1 0x3>,
1283 <0x0 0x0 0x0 0x4 &pcie_intc1 0x4>;
1284 msi-controller;
1285 device_type = "pci";
1286 starfive,stg-syscon = <&stg_syscon>;
1287 bus-range = <0x0 0xff>;
1288 clocks = <&syscrg JH7110_SYSCLK_NOC_BUS_STG_AXI>,
1289 <&stgcrg JH7110_STGCLK_PCIE1_TL>,
1290 <&stgcrg JH7110_STGCLK_PCIE1_AXI_MST0>,
1291 <&stgcrg JH7110_STGCLK_PCIE1_APB>;
1292 clock-names = "noc", "tl", "axi_mst0", "apb";
1293 resets = <&stgcrg JH7110_STGRST_PCIE1_AXI_MST0>,
1294 <&stgcrg JH7110_STGRST_PCIE1_AXI_SLV0>,
1295 <&stgcrg JH7110_STGRST_PCIE1_AXI_SLV>,
1296 <&stgcrg JH7110_STGRST_PCIE1_BRG>,
1297 <&stgcrg JH7110_STGRST_PCIE1_CORE>,
1298 <&stgcrg JH7110_STGRST_PCIE1_APB>;
1299 reset-names = "mst0", "slv0", "slv", "brg",
1300 "core", "apb";
1301 status = "disabled";
1302
1303 pcie_intc1: interrupt-controller {
1304 #address-cells = <0>;
1305 #interrupt-cells = <1>;
1306 interrupt-controller;
1307 };
1308 };
1309 };
1310};