1 // SPDX-License-Identifier: GPL-2.0 OR MIT
3 * Copyright (C) 2022 StarFive Technology Co., Ltd.
4 * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com>
8 #include "jh7110_clk.dtsi"
9 #include <dt-bindings/reset/starfive-jh7110.h>
10 #include <dt-bindings/clock/starfive-jh7110-clkgen.h>
11 #include <dt-bindings/clock/starfive-jh7110-vout.h>
12 #include <dt-bindings/clock/starfive-jh7110-isp.h>
15 compatible = "starfive,jh7110";
24 compatible = "sifive,u74-mc", "riscv";
26 d-cache-block-size = <64>;
28 d-cache-size = <8192>;
32 i-cache-block-size = <64>;
34 i-cache-size = <16384>;
37 mmu-type = "riscv,sv39";
38 next-level-cache = <&cachectrl>;
39 riscv,isa = "rv64imac";
43 cpu0intctrl: interrupt-controller {
44 #interrupt-cells = <1>;
45 compatible = "riscv,cpu-intc";
51 compatible = "sifive,u74-mc", "riscv";
53 d-cache-block-size = <64>;
55 d-cache-size = <32768>;
59 i-cache-block-size = <64>;
61 i-cache-size = <32768>;
64 mmu-type = "riscv,sv39";
65 next-level-cache = <&cachectrl>;
66 riscv,isa = "rv64imafdc";
70 cpu1intctrl: interrupt-controller {
71 #interrupt-cells = <1>;
72 compatible = "riscv,cpu-intc";
78 compatible = "sifive,u74-mc", "riscv";
80 d-cache-block-size = <64>;
82 d-cache-size = <32768>;
86 i-cache-block-size = <64>;
88 i-cache-size = <32768>;
91 mmu-type = "riscv,sv39";
92 next-level-cache = <&cachectrl>;
93 riscv,isa = "rv64imafdc";
97 cpu2intctrl: interrupt-controller {
98 #interrupt-cells = <1>;
99 compatible = "riscv,cpu-intc";
100 interrupt-controller;
105 compatible = "sifive,u74-mc", "riscv";
107 d-cache-block-size = <64>;
109 d-cache-size = <32768>;
113 i-cache-block-size = <64>;
115 i-cache-size = <32768>;
118 mmu-type = "riscv,sv39";
119 next-level-cache = <&cachectrl>;
120 riscv,isa = "rv64imafdc";
124 cpu3intctrl: interrupt-controller {
125 #interrupt-cells = <1>;
126 compatible = "riscv,cpu-intc";
127 interrupt-controller;
132 compatible = "sifive,u74-mc", "riscv";
134 d-cache-block-size = <64>;
136 d-cache-size = <32768>;
140 i-cache-block-size = <64>;
142 i-cache-size = <32768>;
145 mmu-type = "riscv,sv39";
146 next-level-cache = <&cachectrl>;
147 riscv,isa = "rv64imafdc";
151 cpu4intctrl: interrupt-controller {
152 #interrupt-cells = <1>;
153 compatible = "riscv,cpu-intc";
154 interrupt-controller;
160 compatible = "simple-bus";
161 interrupt-parent = <&plic>;
162 #address-cells = <2>;
167 cachectrl: cache-controller@2010000 {
168 compatible = "sifive,fu740-c000-ccache", "cache";
169 reg = <0x0 0x2010000 0x0 0x4000 0x0 0x8000000 0x0 0x2000000>;
170 reg-names = "control", "sideband";
171 interrupts = <1 3 4 2>;
172 cache-block-size = <64>;
175 cache-size = <2097152>;
179 aon_syscon: aon_syscon@17010000 {
180 compatible = "syscon";
181 reg = <0x0 0x17010000 0x0 0x1000>;
184 stg_syscon: stg_syscon@10240000 {
185 compatible = "syscon";
186 reg = <0x0 0x10240000 0x0 0x1000>;
189 sys_syscon: sys_syscon@13030000 {
190 compatible = "syscon";
191 reg = <0x0 0x13030000 0x0 0x1000>;
194 clint: clint@2000000 {
195 compatible = "riscv,clint0";
196 reg = <0x0 0x2000000 0x0 0x10000>;
197 reg-names = "control";
198 interrupts-extended = <&cpu0intctrl 3 &cpu0intctrl 7
199 &cpu1intctrl 3 &cpu1intctrl 7
200 &cpu2intctrl 3 &cpu2intctrl 7
201 &cpu3intctrl 3 &cpu3intctrl 7
202 &cpu4intctrl 3 &cpu4intctrl 7>;
203 #interrupt-cells = <1>;
207 compatible = "riscv,plic0";
208 reg = <0x0 0xc000000 0x0 0x4000000>;
209 reg-names = "control";
210 interrupts-extended = <&cpu0intctrl 11
211 &cpu1intctrl 11 &cpu1intctrl 9
212 &cpu2intctrl 11 &cpu2intctrl 9
213 &cpu3intctrl 11 &cpu3intctrl 9
214 &cpu4intctrl 11 &cpu4intctrl 9>;
215 interrupt-controller;
216 #interrupt-cells = <1>;
217 riscv,max-priority = <7>;
221 clkgen: clock-controller {
222 compatible = "starfive,jh7110-clkgen";
223 reg = <0x0 0x13020000 0x0 0x10000>,
224 <0x0 0x10230000 0x0 0x10000>,
225 <0x0 0x17000000 0x0 0x10000>;
226 reg-names = "sys", "stg", "aon";
227 clocks = <&osc>, <&gmac1_rmii_refin>,
229 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
230 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
231 <&tdm_ext>, <&mclk_ext>,
232 <&jtag_tck_inner>, <&bist_apb>,
233 <&stg_apb>, <&clk_rtc>,
234 <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>;
235 clock-names = "osc", "gmac1_rmii_refin",
237 "i2stx_bclk_ext", "i2stx_lrck_ext",
238 "i2srx_bclk_ext", "i2srx_lrck_ext",
239 "tdm_ext", "mclk_ext",
240 "jtag_tck_inner", "bist_apb",
241 "stg_apb", "clk_rtc",
242 "gmac0_rmii_refin", "gmac0_rgmii_rxin";
247 clkvout: clock-controller@295C0000 {
248 compatible = "starfive,jh7110-clk-vout";
249 reg = <0x0 0x295C0000 0x0 0x10000>;
251 clocks = <&hdmitx0_pixelclk>,
252 <&mipitx_dphy_rxesc>,
253 <&mipitx_dphy_txbytehs>;
254 clock-names = "hdmitx0_pixelclk",
256 "mipitx_dphy_txbytehs";
261 clkisp: clock-controller@19810000 {
262 compatible = "starfive,jh7110-clk-isp";
263 reg = <0x0 0x19810000 0x0 0x10000>;
269 qspi: qspi@13010000 {
270 compatible = "cadence,qspi","cdns,qspi-nor";
271 #address-cells = <1>;
273 reg = <0x0 0x13010000 0x0 0x10000
274 0x0 0x21000000 0x0 0x400000>;
275 clocks = <&clkgen JH7110_QSPI_CLK_REF>;
276 clock-names = "clk_ref";
277 resets = <&rstgen RSTN_U0_CDNS_QSPI_APB>,
278 <&rstgen RSTN_U0_CDNS_QSPI_AHB>,
279 <&rstgen RSTN_U0_CDNS_QSPI_REF>;
280 resets-names = "rst_apb", "rst_ahb", "rst_ref";
281 cdns,fifo-depth = <256>;
282 cdns,fifo-width = <4>;
283 spi-max-frequency = <250000000>;
285 nor_flash: nor-flash@0 {
286 compatible = "jedec,spi-nor";
288 spi-max-frequency = <100000000>;
297 compatible = "starfive,jh7110-otp";
298 reg = <0x0 0x17050000 0x0 0x10000>;
299 clock-frequency = <4000000>;
300 clocks = <&clkgen JH7110_OTPC_CLK_APB>;
304 USB30: usb@10100000 {
305 compatible = "cdns,usb3";
306 reg = <0x0 0x10100000 0x0 0x10000>,
307 <0x0 0x10110000 0x0 0x10000>,
308 <0x0 0x10120000 0x0 0x10000>;
309 reg-names = "otg", "xhci", "dev";
310 phy-names = "cdns3,usb3-phy", "cnds3,usb2-phy";
311 clocks = <&clkgen JH7110_USB0_CLK_APP_125>,
312 <&clkgen JH7110_USB0_CLK_LPM>,
313 <&clkgen JH7110_USB0_CLK_STB>,
314 <&clkgen JH7110_USB0_CLK_USB_APB>,
315 <&clkgen JH7110_USB0_CLK_AXI>,
316 <&clkgen JH7110_USB0_CLK_UTMI_APB>;
317 clock-names = "app","lpm","stb","apb","axi","utmi";
318 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
319 <&rstgen RSTN_U0_CDN_USB_APB>,
320 <&rstgen RSTN_U0_CDN_USB_AXI>,
321 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>;
322 reset-names = "rst_pwrup","rst_apb","rst_axi","rst_utmi";
325 timer: timer@13050000 {
326 compatible = "starfive,si5-timers";
327 reg = <0x0 0x13050000 0x0 0x10000>;
328 interrupts = <69>, <70>, <71> ,<72>;
329 interrupt-names = "timer0", "timer1",
331 clocks = <&clkgen JH7110_TIMER_CLK_TIMER0>,
332 <&clkgen JH7110_TIMER_CLK_TIMER1>,
333 <&clkgen JH7110_TIMER_CLK_TIMER2>,
334 <&clkgen JH7110_TIMER_CLK_TIMER3>,
335 <&clkgen JH7110_TIMER_CLK_APB>;
336 clock-names = "timer0", "timer1",
337 "timer2", "timer3", "apb_clk";
338 clock-frequency = <2000000>;
342 wdog: wdog@13070000 {
343 compatible = "starfive,dskit-wdt";
344 reg = <0x0 0x13070000 0x0 0x10000>;
346 interrupt-names = "wdog";
347 clock-frequency = <2000000>;
348 clocks = <&clkgen JH7110_DSKIT_WDT_CLK_WDT>,
349 <&clkgen JH7110_DSKIT_WDT_CLK_APB>;
350 clock-names = "core_clk", "apb_clk";
351 resets = <&rstgen RSTN_U0_DSKIT_WDT_APB>,
352 <&rstgen RSTN_U0_DSKIT_WDT_CORE>;
353 reset-names = "rst_apb", "rst_core";
359 compatible = "starfive,rtc_hms";
360 reg = <0x0 0x17040000 0x0 0x10000>;
361 interrupts = <10>, <11>, <12>;
362 interrupt-names = "rtc_ms_pulse", "rtc_sec_pulse", "rtc";
363 clocks = <&clkgen JH7110_RTC_HMS_CLK_APB>,
364 <&clkgen JH7110_RTC_HMS_CLK_CAL>;
365 clock-names = "pclk", "cal_clk";
366 resets = <&rstgen RSTN_U0_RTC_HMS_APB>,
367 <&rstgen RSTN_U0_RTC_HMS_CAL>,
368 <&rstgen RSTN_U0_RTC_HMS_OSC32K>;
369 reset-names = "rst_apb", "rst_cal", "rst_osc";
370 rtc,cal-clock-freq = <1000000>;
375 compatible = "starfive,jh7110-pmu";
376 reg = <0x0 0x17030000 0x0 0x10000>;
381 uart0: serial@10000000 {
382 compatible = "snps,dw-apb-uart";
383 reg = <0x0 0x10000000 0x0 0x10000>;
386 clocks = <&clkgen JH7110_UART0_CLK_CORE>,
387 <&clkgen JH7110_UART0_CLK_APB>;
388 clock-names = "baudclk", "apb_pclk";
389 resets = <&rstgen RSTN_U0_DW_UART_APB>;
394 uart1: serial@10010000 {
395 compatible = "snps,dw-apb-uart";
396 reg = <0x0 0x10010000 0x0 0x10000>;
399 clocks = <&clkgen JH7110_UART1_CLK_CORE>,
400 <&clkgen JH7110_UART1_CLK_APB>;
401 clock-names = "baudclk", "apb_pclk";
402 resets = <&rstgen RSTN_U1_DW_UART_APB>;
407 uart2: serial@10020000 {
408 compatible = "snps,dw-apb-uart";
409 reg = <0x0 0x10020000 0x0 0x10000>;
412 clocks = <&clkgen JH7110_UART2_CLK_CORE>,
413 <&clkgen JH7110_UART2_CLK_APB>;
414 clock-names = "baudclk", "apb_pclk";
415 resets = <&rstgen RSTN_U2_DW_UART_APB>;
420 uart3: serial@12000000 {
421 compatible = "snps,dw-apb-uart";
422 reg = <0x0 0x12000000 0x0 0x10000>;
425 clocks = <&clkgen JH7110_UART3_CLK_CORE>,
426 <&clkgen JH7110_UART3_CLK_APB>;
427 clock-names = "baudclk", "apb_pclk";
428 resets = <&rstgen RSTN_U3_DW_UART_APB>;
433 uart4: serial@12010000 {
434 compatible = "snps,dw-apb-uart";
435 reg = <0x0 0x12010000 0x0 0x10000>;
438 clocks = <&clkgen JH7110_UART4_CLK_CORE>,
439 <&clkgen JH7110_UART4_CLK_APB>;
440 clock-names = "baudclk", "apb_pclk";
441 resets = <&rstgen RSTN_U4_DW_UART_APB>;
446 uart5: serial@12020000 {
447 compatible = "snps,dw-apb-uart";
448 reg = <0x0 0x12020000 0x0 0x10000>;
451 clocks = <&clkgen JH7110_UART5_CLK_CORE>,
452 <&clkgen JH7110_UART5_CLK_APB>;
453 clock-names = "baudclk", "apb_pclk";
454 resets = <&rstgen RSTN_U5_DW_UART_APB>;
459 dma: dma-controller@16050000 {
460 compatible = "starfive,axi-dma";
461 reg = <0x0 0x16050000 0x0 0x10000>;
462 clocks = <&clkgen JH7110_DMA1P_CLK_AXI>,
463 <&clkgen JH7110_DMA1P_CLK_AHB>;
464 clock-names = "core-clk", "cfgr-clk";
465 resets = <&rstgen RSTN_U0_DW_DMA1P_AXI>,
466 <&rstgen RSTN_U0_DW_DMA1P_AHB>;
467 reset-names = "rst_axi",
472 snps,dma-masters = <1>;
473 snps,data-width = <3>;
474 snps,num-hs-if = <56>;
475 snps,block-size = <65536 65536 65536 65536>;
476 snps,priority = <0 1 2 3>;
477 snps,axi-max-burst-len = <16>;
481 gpio: gpio@13040000 {
482 compatible = "starfive_jh7110-sys-pinctrl";
483 reg = <0x0 0x13040000 0x0 0x10000>;
484 reg-names = "control";
486 interrupt-controller;
492 gpioa: gpio@17020000 {
493 compatible = "starfive_jh7110-aon-pinctrl";
494 reg = <0x0 0x17020000 0x0 0x10000>;
495 reg-names = "control";
497 interrupt-controller;
503 trng: trng@1600C000 {
504 compatible = "starfive,trng";
505 reg = <0x0 0x1600C000 0x0 0x4000>;
506 clocks = <&clkgen JH7110_SEC_HCLK>,
507 <&clkgen JH7110_SEC_MISCAHB_CLK>;
508 clock-names = "hclk", "miscahb_clk";
509 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
515 compatible = "snps,designware-i2c";
516 reg = <0x0 0x12060000 0x0 0x10000>;
517 clocks = <&clkgen JH7110_I2C6_CLK_CORE>,
518 <&clkgen JH7110_I2C6_CLK_APB>;
519 clock-names = "ref", "pclk";
520 resets = <&rstgen RSTN_U6_DW_I2C_APB>;
522 #address-cells = <1>;
528 compatible = "snps,designware-i2c";
529 reg = <0x0 0x10030000 0x0 0x10000>;
530 clocks = <&clkgen JH7110_I2C0_CLK_CORE>,
531 <&clkgen JH7110_I2C0_CLK_APB>;
532 clock-names = "ref", "pclk";
533 resets = <&rstgen RSTN_U0_DW_I2C_APB>;
535 #address-cells = <1>;
541 compatible = "snps,designware-i2c";
542 reg = <0x0 0x10040000 0x0 0x10000>;
543 clocks = <&clkgen JH7110_I2C1_CLK_CORE>,
544 <&clkgen JH7110_I2C1_CLK_APB>;
545 clock-names = "ref", "pclk";
546 resets = <&rstgen RSTN_U1_DW_I2C_APB>;
548 #address-cells = <1>;
553 /* unremovable emmc as mmcblk0 */
554 sdio0: sdio0@16010000 {
555 compatible = "snps,dw-mshc";
556 reg = <0x0 0x16010000 0x0 0x10000>;
557 clocks = <&clkgen JH7110_SDIO0_CLK_AHB>,
558 <&clkgen JH7110_SDIO0_CLK_SDCARD>;
559 clock-names = "biu","ciu";
560 resets = <&rstgen RSTN_U0_DW_SDIO_AHB>;
561 reset-names = "reset";
564 fifo-watermark-aligned;
569 sdio1: sdio1@16020000 {
570 compatible = "snps,dw-mshc";
571 reg = <0x0 0x16020000 0x0 0x10000>;
572 clocks = <&clkgen JH7110_SDIO1_CLK_AHB>,
573 <&clkgen JH7110_SDIO1_CLK_SDCARD>;
574 clock-names = "biu","ciu";
575 resets = <&rstgen RSTN_U1_DW_SDIO_AHB>;
576 reset-names = "reset";
579 fifo-watermark-aligned;
584 vin_sysctl: vin_sysctl@19800000 {
585 compatible = "starfive,stf-vin";
586 reg = <0x0 0x19800000 0x0 0x10000>,
587 <0x0 0x19810000 0x0 0x10000>,
588 <0x0 0x19820000 0x0 0x10000>,
589 <0x0 0x19830000 0x0 0x10000>,
590 <0x0 0x19840000 0x0 0x10000>,
591 <0x0 0x19870000 0x0 0x30000>,
592 <0x0 0x198a0000 0x0 0x30000>,
593 <0x0 0x11840000 0x0 0x10000>,
594 <0x0 0x17030000 0x0 0x10000>,
595 <0x0 0x13020000 0x0 0x10000>;
596 reg-names = "mipi0", "vclk", "vrst", "mipi1", "sctrl",
597 "isp0", "isp1", "trst", "pmu", "syscrg";
598 clocks = <&clkisp JH7110_DOM4_APB_FUNC>,
599 <&clkisp JH7110_U0_VIN_PCLK>,
600 <&clkisp JH7110_U0_VIN_SYS_CLK>,
601 <&clkisp JH7110_U0_ISPV2_TOP_WRAPPER_CLK_C>,
602 <&clkisp JH7110_DVP_INV>,
603 <&clkisp JH7110_U0_VIN_CLK_P_AXIWR>,
604 <&clkisp JH7110_MIPI_RX0_PXL>,
605 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF0>,
606 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF1>,
607 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF2>,
608 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF3>;
609 clock-names = "clk_apb_func", "clk_pclk", "clk_sys_clk",
610 "clk_wrapper_clk_c", "clk_dvp_inv", "clk_axiwr",
611 "clk_mipi_rx0_pxl", "clk_pixel_clk_if0",
612 "clk_pixel_clk_if1", "clk_pixel_clk_if2",
614 resets = <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_P>,
615 <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_C>,
616 <&rstgen RSTN_U0_VIN_N_PCLK>,
617 <&rstgen RSTN_U0_VIN_N_SYS_CLK>,
618 <&rstgen RSTN_U0_VIN_P_AXIRD>,
619 <&rstgen RSTN_U0_VIN_P_AXIWR>,
620 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF0>,
621 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF1>,
622 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF2>,
623 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF3>;
624 reset-names = "rst_wrapper_p", "rst_wrapper_c", "rst_pclk",
625 "rst_sys_clk", "rst_axird", "rst_axiwr", "rst_pixel_clk_if0",
626 "rst_pixel_clk_if1", "rst_pixel_clk_if2", "rst_pixel_clk_if3";
627 interrupts = <92 87 86>;
632 compatible = "starfive,jpu";
633 reg = <0x0 0x13090000 0x0 0x300>;
635 clocks = <&clkgen JH7110_CODAJ12_CLK_AXI>,
636 <&clkgen JH7110_CODAJ12_CLK_CORE>,
637 <&clkgen JH7110_CODAJ12_CLK_APB>;
638 clock-names = "axi_clk", "core_clk", "apb_clk";
639 resets = <&rstgen RSTN_U0_CODAJ12_AXI>,
640 <&rstgen RSTN_U0_CODAJ12_CORE>,
641 <&rstgen RSTN_U0_CODAJ12_APB>;
642 reset-names = "rst_axi", "rst_core", "rst_apb";
646 vpu_dec: vpu_dec@130A0000 {
647 compatible = "starfive,vdec";
648 reg = <0x0 0x130A0000 0x0 0x10000>;
650 clocks = <&clkgen JH7110_WAVE511_CLK_AXI>,
651 <&clkgen JH7110_WAVE511_CLK_BPU>,
652 <&clkgen JH7110_WAVE511_CLK_VCE>,
653 <&clkgen JH7110_WAVE511_CLK_APB>,
654 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
655 clock-names = "axi_clk",
660 resets = <&rstgen RSTN_U0_WAVE511_AXI>,
661 <&rstgen RSTN_U0_WAVE511_BPU>,
662 <&rstgen RSTN_U0_WAVE511_VCE>,
663 <&rstgen RSTN_U0_WAVE511_APB>,
664 <&rstgen RSTN_U0_AXIMEM_128B_AXI>;
665 reset-names = "rst_axi",
670 starfive,vdec_noc_ctrl;
674 vpu_enc: vpu_enc@130B0000 {
675 compatible = "starfive,venc";
676 reg = <0x0 0x130B0000 0x0 0x10000>;
678 clocks = <&clkgen JH7110_WAVE420L_CLK_AXI>,
679 <&clkgen JH7110_WAVE420L_CLK_BPU>,
680 <&clkgen JH7110_WAVE420L_CLK_VCE>,
681 <&clkgen JH7110_WAVE420L_CLK_APB>,
682 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>;
683 clock-names = "axi_clk",
688 resets = <&rstgen RSTN_U0_WAVE420L_AXI>,
689 <&rstgen RSTN_U0_WAVE420L_BPU>,
690 <&rstgen RSTN_U0_WAVE420L_VCE>,
691 <&rstgen RSTN_U0_WAVE420L_APB>,
692 <&rstgen RSTN_U1_AXIMEM_128B_AXI>;
693 reset-names = "rst_axi",
698 starfive,venc_noc_ctrl;
702 rstgen: reset-controller {
703 compatible = "starfive,jh7110-reset";
704 reg = <0x0 0x13020000 0x0 0x10000>,
705 <0x0 0x10230000 0x0 0x10000>,
706 <0x0 0x17000000 0x0 0x10000>,
707 <0x0 0x19810000 0x0 0x10000>,
708 <0x0 0x295C0000 0x0 0x10000>;
709 reg-names = "syscrg", "stgcrg", "aoncrg", "ispcrg", "voutcrg";
714 stmmac_axi_setup: stmmac-axi-config {
715 snps,wr_osr_lmt = <0xf>;
716 snps,rd_osr_lmt = <0xf>;
717 snps,blen = <256 128 64 32 0 0 0>;
720 gmac0: ethernet@16030000 {
721 compatible = "starfive,jh7110-eqos-5.20";
722 reg = <0x0 0x16030000 0x0 0x10000>;
728 clocks = <&clkgen JH7110_GMAC0_GTXCLK>,
729 <&clkgen JH7110_U0_GMAC5_CLK_TX>,
730 <&clkgen JH7110_GMAC0_PTP>,
731 <&clkgen JH7110_U0_GMAC5_CLK_AHB>,
732 <&clkgen JH7110_U0_GMAC5_CLK_AXI>;
733 resets = <&rstgen RSTN_U0_DW_GMAC5_AXI64_AHB>,
734 <&rstgen RSTN_U0_DW_GMAC5_AXI64_AXI>;
735 reset-names = "ahb", "stmmaceth";
736 interrupts = <7>, <6>, <5> ;
737 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
738 max-frame-size = <9000>;
739 phy-mode = "rgmii-id";
740 snps,multicast-filter-bins = <256>;
741 snps,perfect-filter-entries = <128>;
742 rx-fifo-depth = <262144>;
743 tx-fifo-depth = <131072>;
746 snps,force_thresh_dma_mode;
747 snps,axi-config = <&stmmac_axi_setup>;
749 snps,en-tx-lpi-clockgating;
751 snps,write-requests = <2>;
752 snps,read-requests = <16>;
753 snps,burst-map = <0x7>;
759 gmac1: ethernet@16040000 {
760 compatible = "starfive,jh7110-eqos-5.20";
761 reg = <0x0 0x16040000 0x0 0x10000>;
767 clocks = <&clkgen JH7110_GMAC1_GTXCLK>,
768 <&clkgen JH7110_GMAC5_CLK_TX>,
769 <&clkgen JH7110_GMAC5_CLK_PTP>,
770 <&clkgen JH7110_GMAC5_CLK_AHB>,
771 <&clkgen JH7110_GMAC5_CLK_AXI>;
772 resets = <&rstgen RSTN_U1_DW_GMAC5_AXI64_H_N>,
773 <&rstgen RSTN_U1_DW_GMAC5_AXI64_A_I>;
774 reset-names = "ahb", "stmmaceth";
775 interrupts = <78>, <77>, <76> ;
776 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
777 max-frame-size = <9000>;
778 phy-mode = "rgmii-id";
779 snps,multicast-filter-bins = <256>;
780 snps,perfect-filter-entries = <128>;
781 rx-fifo-depth = <262144>;
782 tx-fifo-depth = <131072>;
785 snps,force_thresh_dma_mode;
786 snps,axi-config = <&stmmac_axi_setup>;
788 snps,en-tx-lpi-clockgating;
790 snps,write-requests = <2>;
791 snps,read-requests = <16>;
792 snps,burst-map = <0x7>;
799 compatible = "img-gpu";
800 reg = <0x0 0x18000000 0x0 0x100000 0x0 0x130C000 0x0 0x10000>;
801 clocks = <&gpu_core_clk>, <&gpu_sys_clk>;
802 clock-names = "gpu_core_clk","gpu_sys_clk";
804 current-clock = <8000000>;
809 compatible = "ipms,can";
810 reg = <0x0 0x130d0000 0x0 0x1000>;
812 clocks = <&clkgen JH7110_CAN0_CTRL_CLK_APB>,
813 <&clkgen JH7110_CAN0_CTRL_CLK_CAN>,
814 <&clkgen JH7110_CAN0_CTRL_CLK_TIMER>;
815 clock-names = "apb_clk",
818 resets = <&rstgen RSTN_U0_CAN_CTRL_APB>,
819 <&rstgen RSTN_U0_CAN_CTRL_CORE>,
820 <&rstgen RSTN_U0_CAN_CTRL_TIMER>;
821 reset-names = "rst_apb",
824 starfive,sys-syscon = <&sys_syscon 0x10 0x3 0x8>;
825 syscon,can_or_canfd = <0>;
830 compatible = "ipms,can";
831 reg = <0x0 0x130e0000 0x0 0x1000>;
833 clocks = <&clkgen JH7110_CAN1_CTRL_CLK_APB>,
834 <&clkgen JH7110_CAN1_CTRL_CLK_CAN>,
835 <&clkgen JH7110_CAN1_CTRL_CLK_TIMER>;
836 clock-names = "apb_clk",
839 resets = <&rstgen RSTN_U1_CAN_CTRL_APB>,
840 <&rstgen RSTN_U1_CAN_CTRL_CORE>,
841 <&rstgen RSTN_U1_CAN_CTRL_TIMER>;
842 reset-names = "rst_apb",
845 starfive,sys-syscon = <&sys_syscon 0x88 0x12 0x40000>;
846 syscon,can_or_canfd = <0>;
851 compatible = "starfive,tdm";
852 reg = <0x0 0x10090000 0x0 0x1000>;
854 clocks = <&audioclk>;
855 clock-names = "audioclk";
856 dmas = <&dma 20 1>, <&dma 21 1>;
857 dma-names = "rx","tx";
858 #sound-dai-cells = <0>;
862 spdif0: spdif0@100a0000 {
863 compatible = "starfive,sf-spdif";
864 reg = <0x0 0x100a0000 0x0 0x1000>;
865 clocks = <&audioclk>;
866 clock-names = "audioclk";
868 interrupt-names = "tx";
869 #sound-dai-cells = <0>;
873 pwmdac: pwmdac@100b0000 {
874 compatible = "sf,pwmdac";
875 reg = <0x0 0x100b0000 0x0 0x1000>;
879 #sound-dai-cells = <0>;
883 i2stx: i2stx@100c0000 {
884 compatible = "snps,designware-i2stx";
885 reg = <0x0 0x100c0000 0x0 0x1000>;
887 clock-names = "i2sclk";
888 interrupt-names = "tx";
889 #sound-dai-cells = <0>;
896 compatible = "starfive,sf-pdm";
897 reg = <0x0 0x100d0000 0x0 0x1000>;
899 clocks = <&audioclk>;
900 clock-names = "audioclk";
901 #sound-dai-cells = <0>;
905 i2srx_3ch: i2srx-3ch@100e0000 {
906 compatible = "snps,designware-i2srx";
907 reg = <0x0 0x100e0000 0x0 0x1000>;
909 clock-names = "i2sclk";
911 interrupt-names = "rx";
912 #sound-dai-cells = <0>;
916 i2stx_4ch0: i2stx-4ch0@120b0000 {
917 compatible = "snps,designware-i2stx-4ch0";
918 reg = <0x0 0x120b0000 0x0 0x1000>;
920 clock-names = "i2sclk";
922 interrupt-names = "tx";
923 #sound-dai-cells = <0>;
927 i2stx_4ch1: i2sdac1@120c0000 {
928 compatible = "snps,designware-i2stx-4ch1";
929 reg = <0x0 0x120c0000 0x0 0x1000>;
931 clock-names = "i2sclk";
933 interrupt-names = "tx";
934 #sound-dai-cells = <0>;
939 compatible = "starfive,pwm0";
940 reg = <0x0 0x120d0000 0x0 0x10000>;
941 reg-names = "control";
942 clocks = <&clkgen JH7110_PWM_CLK_APB>;
943 resets = <&rstgen RSTN_U0_PWM_8CH_APB>;
944 starfive,approx-period = <2000000>;
950 spdif_transmitter: spdif_transmitter {
951 compatible = "linux,spdif-dit";
952 #sound-dai-cells = <0>;
956 spdif_receiver: spdif_receiver {
957 compatible = "linux,spdif-dir";
958 #sound-dai-cells = <0>;
962 pwmdac_codec: pwmdac-transmitter {
963 compatible = "linux,pwmdac-dit";
964 #sound-dai-cells = <0>;
968 dmic_codec: dmic_codec {
969 compatible = "dmic-codec";
970 #sound-dai-cells = <0>;
974 spi0: spi0@10060000 {
975 compatible = "arm,pl022", "arm,primecell";
976 reg = <0x0 0x10060000 0x0 0x10000>;
978 clock-names = "apb_pclk";
980 dmas = <&dma 14 1>, <&dma 15 1>;
981 dma-names = "rx","tx";
982 arm,primecell-periphid = <0x00041022>;
984 #address-cells = <1>;
989 pcie0: pcie0@2B000000 {
990 compatible = "plda,pci-xpressrich3-axi";
991 reg = <0x0 0x2B000000 0x0 0x1000000
992 0x9 0x40000000 0x0 0x10000000>;
993 reg-names = "reg", "config";
995 interrupt-controller;
996 interrupt-names = "msi";
997 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
998 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
999 <0x0 0x0 0x0 0x2 &plic 0x2>,
1000 <0x0 0x0 0x0 0x3 &plic 0x3>,
1001 <0x0 0x0 0x0 0x4 &plic 0x4>;
1002 resets = <&rstgen RSTN_U0_PLDA_PCIE_AXI_MST0>,
1003 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV0>,
1004 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV>,
1005 <&rstgen RSTN_U0_PLDA_PCIE_BRG>,
1006 <&rstgen RSTN_U0_PLDA_PCIE_CORE>,
1007 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
1008 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1009 "rst_brg", "rst_core", "rst_apb";
1010 clocks = <&clkgen JH7110_PCIE0_CLK_TL>,
1011 <&clkgen JH7110_PCIE0_CLK_AXI_MST0>,
1012 <&clkgen JH7110_PCIE0_CLK_APB>;
1013 clock-names = "tl", "axi_mst0", "apb";
1014 #interrupt-cells = <1>;
1015 device_type = "pci";
1016 starfive,stg-syscon = <&stg_syscon 0xc0 0xc4 0x130>;
1017 bus-range = <0x0 0xff>;
1018 msi-parent = <&plic>;
1019 #address-cells = <3>;
1021 ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x06000000>;
1022 status = "disabled";
1025 pcie1:pcie1@2C000000 {
1026 compatible = "plda,pci-xpressrich3-axi";
1027 reg = <0x0 0x2C000000 0x0 0x1000000
1028 0x9 0xc0000000 0x0 0x10000000>;
1029 reg-names = "reg", "config";
1030 device_type = "pci";
1031 starfive,stg-syscon = <&stg_syscon 0x270 0x274 0x2e0>;
1032 bus-range = <0x0 0xff>;
1033 #address-cells = <3>;
1035 #interrupt-cells = <1>;
1036 ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x06000000>;
1037 msi-parent = <&plic>;
1039 interrupt-controller;
1040 interrupt-names = "msi";
1041 interrupt-parent = <&plic>;
1042 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1043 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1044 <0x0 0x0 0x0 0x2 &plic 0x2>,
1045 <0x0 0x0 0x0 0x3 &plic 0x3>,
1046 <0x0 0x0 0x0 0x4 &plic 0x4>;
1047 resets = <&rstgen RSTN_U1_PLDA_PCIE_AXI_MST0>,
1048 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV0>,
1049 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV>,
1050 <&rstgen RSTN_U1_PLDA_PCIE_BRG>,
1051 <&rstgen RSTN_U1_PLDA_PCIE_CORE>,
1052 <&rstgen RSTN_U1_PLDA_PCIE_APB>;
1053 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1054 "rst_brg", "rst_core", "rst_apb";
1055 clocks = <&clkgen JH7110_PCIE1_CLK_TL>,
1056 <&clkgen JH7110_PCIE1_CLK_AXI_MST0>,
1057 <&clkgen JH7110_PCIE1_CLK_APB>;
1058 clock-names = "tl", "axi_mst0", "apb";
1059 status = "disabled";
1062 mailbox_contrl0: mailbox@0 {
1063 compatible = "starfive,mail_box";
1064 reg = <0x0 0x13060000 0x0 0x0001000>;
1065 interrupts = <26 27>;
1067 status = "disabled";
1070 mailbox_client0: mailbox_client@0 {
1071 compatible = "starfive,mailbox-test";
1072 mbox-names = "rx", "tx";
1073 mboxes = <&mailbox_contrl0 0 1>,<&mailbox_contrl0 1 0>;
1074 status = "disabled";
1077 display: display-subsystem {
1078 compatible = "verisilicon,display-subsystem";
1079 ports = <&dc_out_dpi0>;
1080 status = "disabled";
1083 encoder: display-encoder {
1084 compatible = "starfive,display-encoder";
1085 status = "disabled";
1089 compatible = "verisilicon,dc8200";
1090 reg = <0x0 0x29400000 0x0 0x100>,<0x0 0x29400800 0x0 0x2000>;
1094 #address-cells = <1>;
1096 dc_out_dpi0: endpoint@0 {
1098 remote-endpoint = <&hdmi_input>;*/
1100 dc_out_dpi1: endpoint@1 {
1102 remote-endpoint = <&vd_input>;*/
1107 sound_pwmdac: snd-card_pwmdac {
1108 compatible = "simple-audio-card";
1109 simple-audio-card,name = "Starfive-Pwmdac-Sound-Card";
1110 simple-audio-card,bitclock-master = <&pwmdac_dailink_master>;
1111 simple-audio-card,frame-master = <&pwmdac_dailink_master>;
1112 simple-audio-card,format = "left_j";
1113 status = "disabled";
1115 pwmdac_dailink_master: simple-audio-card,cpu {
1116 sound-dai = <&pwmdac>;
1119 simple-audio-card,codec {
1120 sound-dai = <&pwmdac_codec>;