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>
14 compatible = "starfive,jh7110";
23 compatible = "sifive,u74-mc", "riscv";
25 d-cache-block-size = <64>;
27 d-cache-size = <8192>;
31 i-cache-block-size = <64>;
33 i-cache-size = <16384>;
36 mmu-type = "riscv,sv39";
37 next-level-cache = <&cachectrl>;
38 riscv,isa = "rv64imac";
42 cpu0intctrl: interrupt-controller {
43 #interrupt-cells = <1>;
44 compatible = "riscv,cpu-intc";
50 compatible = "sifive,u74-mc", "riscv";
52 d-cache-block-size = <64>;
54 d-cache-size = <32768>;
58 i-cache-block-size = <64>;
60 i-cache-size = <32768>;
63 mmu-type = "riscv,sv39";
64 next-level-cache = <&cachectrl>;
65 riscv,isa = "rv64imafdc";
69 cpu1intctrl: interrupt-controller {
70 #interrupt-cells = <1>;
71 compatible = "riscv,cpu-intc";
77 compatible = "sifive,u74-mc", "riscv";
79 d-cache-block-size = <64>;
81 d-cache-size = <32768>;
85 i-cache-block-size = <64>;
87 i-cache-size = <32768>;
90 mmu-type = "riscv,sv39";
91 next-level-cache = <&cachectrl>;
92 riscv,isa = "rv64imafdc";
96 cpu2intctrl: interrupt-controller {
97 #interrupt-cells = <1>;
98 compatible = "riscv,cpu-intc";
104 compatible = "sifive,u74-mc", "riscv";
106 d-cache-block-size = <64>;
108 d-cache-size = <32768>;
112 i-cache-block-size = <64>;
114 i-cache-size = <32768>;
117 mmu-type = "riscv,sv39";
118 next-level-cache = <&cachectrl>;
119 riscv,isa = "rv64imafdc";
123 cpu3intctrl: interrupt-controller {
124 #interrupt-cells = <1>;
125 compatible = "riscv,cpu-intc";
126 interrupt-controller;
131 compatible = "sifive,u74-mc", "riscv";
133 d-cache-block-size = <64>;
135 d-cache-size = <32768>;
139 i-cache-block-size = <64>;
141 i-cache-size = <32768>;
144 mmu-type = "riscv,sv39";
145 next-level-cache = <&cachectrl>;
146 riscv,isa = "rv64imafdc";
150 cpu4intctrl: interrupt-controller {
151 #interrupt-cells = <1>;
152 compatible = "riscv,cpu-intc";
153 interrupt-controller;
159 compatible = "simple-bus";
160 interrupt-parent = <&plic>;
161 #address-cells = <2>;
166 cachectrl: cache-controller@2010000 {
167 compatible = "sifive,fu740-c000-ccache", "cache";
168 reg = <0x0 0x2010000 0x0 0x4000 0x0 0x8000000 0x0 0x2000000>;
169 reg-names = "control", "sideband";
170 interrupts = <1 3 4 2>;
171 cache-block-size = <64>;
174 cache-size = <2097152>;
178 aon_syscon: aon_syscon@17010000 {
179 compatible = "syscon";
180 reg = <0x0 0x17010000 0x0 0x1000>;
183 stg_syscon: stg_syscon@10240000 {
184 compatible = "syscon";
185 reg = <0x0 0x10240000 0x0 0x1000>;
188 sys_syscon: sys_syscon@13030000 {
189 compatible = "syscon";
190 reg = <0x0 0x13030000 0x0 0x1000>;
193 clint: clint@2000000 {
194 compatible = "riscv,clint0";
195 reg = <0x0 0x2000000 0x0 0x10000>;
196 reg-names = "control";
197 interrupts-extended = <&cpu0intctrl 3 &cpu0intctrl 7
198 &cpu1intctrl 3 &cpu1intctrl 7
199 &cpu2intctrl 3 &cpu2intctrl 7
200 &cpu3intctrl 3 &cpu3intctrl 7
201 &cpu4intctrl 3 &cpu4intctrl 7>;
202 #interrupt-cells = <1>;
206 compatible = "riscv,plic0";
207 reg = <0x0 0xc000000 0x0 0x4000000>;
208 reg-names = "control";
209 interrupts-extended = <&cpu0intctrl 11
210 &cpu1intctrl 11 &cpu1intctrl 9
211 &cpu2intctrl 11 &cpu2intctrl 9
212 &cpu3intctrl 11 &cpu3intctrl 9
213 &cpu4intctrl 11 &cpu4intctrl 9>;
214 interrupt-controller;
215 #interrupt-cells = <1>;
216 riscv,max-priority = <7>;
220 clkgen: clock-controller {
221 compatible = "starfive,jh7110-clkgen";
222 reg = <0x0 0x13020000 0x0 0x10000>,
223 <0x0 0x10230000 0x0 0x10000>,
224 <0x0 0x17000000 0x0 0x10000>;
225 reg-names = "sys", "stg", "aon";
226 clocks = <&osc>, <&gmac1_rmii_refin>,
228 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
229 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
230 <&tdm_ext>, <&mclk_ext>,
231 <&jtag_tck_inner>, <&bist_apb>,
232 <&stg_apb>, <&clk_rtc>,
233 <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>;
234 clock-names = "osc", "gmac1_rmii_refin",
236 "i2stx_bclk_ext", "i2stx_lrck_ext",
237 "i2srx_bclk_ext", "i2srx_lrck_ext",
238 "tdm_ext", "mclk_ext",
239 "jtag_tck_inner", "bist_apb",
240 "stg_apb", "clk_rtc",
241 "gmac0_rmii_refin", "gmac0_rgmii_rxin";
246 clkvout: clock-controller@295C0000 {
247 compatible = "starfive,jh7110-clk-vout";
248 reg = <0x0 0x295C0000 0x0 0x10000>;
250 clocks = <&hdmitx0_pixelclk>,
251 <&mipitx_dphy_rxesc>,
252 <&mipitx_dphy_txbytehs>;
253 clock-names = "hdmitx0_pixelclk",
255 "mipitx_dphy_txbytehs";
260 clkisp: clock-controller@19810000 {
261 compatible = "starfive,jh7110-clk-isp";
262 reg = <0x0 0x19810000 0x0 0x10000>;
268 qspi: qspi@13010000 {
269 compatible = "cadence,qspi","cdns,qspi-nor";
270 #address-cells = <1>;
272 reg = <0x0 0x13010000 0x0 0x10000
273 0x0 0x21000000 0x0 0x400000>;
274 clocks = <&clkgen JH7110_QSPI_CLK_REF>;
275 clock-names = "clk_ref";
276 resets = <&rstgen RSTN_U0_CDNS_QSPI_APB>,
277 <&rstgen RSTN_U0_CDNS_QSPI_AHB>,
278 <&rstgen RSTN_U0_CDNS_QSPI_REF>;
279 resets-names = "rst_apb", "rst_ahb", "rst_ref";
280 cdns,fifo-depth = <256>;
281 cdns,fifo-width = <4>;
282 spi-max-frequency = <250000000>;
284 nor_flash: nor-flash@0 {
285 compatible = "jedec,spi-nor";
287 spi-max-frequency = <100000000>;
296 compatible = "starfive,jh7110-otp";
297 reg = <0x0 0x17050000 0x0 0x10000>;
298 clock-frequency = <4000000>;
299 clocks = <&clkgen JH7110_OTPC_CLK_APB>;
303 USB30: usb@10100000 {
304 compatible = "cdns,usb3";
305 reg = <0x0 0x10100000 0x0 0x10000>,
306 <0x0 0x10110000 0x0 0x10000>,
307 <0x0 0x10120000 0x0 0x10000>;
308 reg-names = "otg", "xhci", "dev";
309 phy-names = "cdns3,usb3-phy", "cnds3,usb2-phy";
310 clocks = <&clkgen JH7110_USB0_CLK_APP_125>,
311 <&clkgen JH7110_USB0_CLK_LPM>,
312 <&clkgen JH7110_USB0_CLK_STB>,
313 <&clkgen JH7110_USB0_CLK_USB_APB>,
314 <&clkgen JH7110_USB0_CLK_AXI>,
315 <&clkgen JH7110_USB0_CLK_UTMI_APB>;
316 clock-names = "app","lpm","stb","apb","axi","utmi";
317 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
318 <&rstgen RSTN_U0_CDN_USB_APB>,
319 <&rstgen RSTN_U0_CDN_USB_AXI>,
320 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>;
321 reset-names = "rst_pwrup","rst_apb","rst_axi","rst_utmi";
324 timer: timer@13050000 {
325 compatible = "starfive,si5-timers";
326 reg = <0x0 0x13050000 0x0 0x10000>;
327 interrupts = <69>, <70>, <71> ,<72>;
328 interrupt-names = "timer0", "timer1",
330 clocks = <&clkgen JH7110_TIMER_CLK_TIMER0>,
331 <&clkgen JH7110_TIMER_CLK_TIMER1>,
332 <&clkgen JH7110_TIMER_CLK_TIMER2>,
333 <&clkgen JH7110_TIMER_CLK_TIMER3>,
334 <&clkgen JH7110_TIMER_CLK_APB>;
335 clock-names = "timer0", "timer1",
336 "timer2", "timer3", "apb_clk";
337 clock-frequency = <2000000>;
341 wdog: wdog@13070000 {
342 compatible = "starfive,dskit-wdt";
343 reg = <0x0 0x13070000 0x0 0x10000>;
345 interrupt-names = "wdog";
346 clock-frequency = <2000000>;
347 clocks = <&clkgen JH7110_DSKIT_WDT_CLK_WDT>,
348 <&clkgen JH7110_DSKIT_WDT_CLK_APB>;
349 clock-names = "core_clk", "apb_clk";
350 resets = <&rstgen RSTN_U0_DSKIT_WDT_APB>,
351 <&rstgen RSTN_U0_DSKIT_WDT_CORE>;
352 reset-names = "rst_apb", "rst_core";
358 compatible = "starfive,rtc_hms";
359 reg = <0x0 0x17040000 0x0 0x10000>;
360 interrupts = <10>, <11>, <12>;
361 interrupt-names = "rtc_ms_pulse", "rtc_sec_pulse", "rtc";
362 clocks = <&clkgen JH7110_RTC_HMS_CLK_APB>,
363 <&clkgen JH7110_RTC_HMS_CLK_CAL>;
364 clock-names = "pclk", "cal_clk";
365 resets = <&rstgen RSTN_U0_RTC_HMS_APB>,
366 <&rstgen RSTN_U0_RTC_HMS_CAL>,
367 <&rstgen RSTN_U0_RTC_HMS_OSC32K>;
368 reset-names = "rst_apb", "rst_cal", "rst_osc";
369 rtc,cal-clock-freq = <1000000>;
374 compatible = "starfive,jh7110-pmu";
375 reg = <0x0 0x17030000 0x0 0x10000>;
380 uart0: serial@10000000 {
381 compatible = "snps,dw-apb-uart";
382 reg = <0x0 0x10000000 0x0 0x10000>;
385 clocks = <&clkgen JH7110_UART0_CLK_CORE>,
386 <&clkgen JH7110_UART0_CLK_APB>;
387 clock-names = "baudclk", "apb_pclk";
388 resets = <&rstgen RSTN_U0_DW_UART_APB>;
393 uart1: serial@10010000 {
394 compatible = "snps,dw-apb-uart";
395 reg = <0x0 0x10010000 0x0 0x10000>;
398 clocks = <&clkgen JH7110_UART1_CLK_CORE>,
399 <&clkgen JH7110_UART1_CLK_APB>;
400 clock-names = "baudclk", "apb_pclk";
401 resets = <&rstgen RSTN_U1_DW_UART_APB>;
406 uart2: serial@10020000 {
407 compatible = "snps,dw-apb-uart";
408 reg = <0x0 0x10020000 0x0 0x10000>;
411 clocks = <&clkgen JH7110_UART2_CLK_CORE>,
412 <&clkgen JH7110_UART2_CLK_APB>;
413 clock-names = "baudclk", "apb_pclk";
414 resets = <&rstgen RSTN_U2_DW_UART_APB>;
419 uart3: serial@12000000 {
420 compatible = "snps,dw-apb-uart";
421 reg = <0x0 0x12000000 0x0 0x10000>;
424 clocks = <&clkgen JH7110_UART3_CLK_CORE>,
425 <&clkgen JH7110_UART3_CLK_APB>;
426 clock-names = "baudclk", "apb_pclk";
427 resets = <&rstgen RSTN_U3_DW_UART_APB>;
432 uart4: serial@12010000 {
433 compatible = "snps,dw-apb-uart";
434 reg = <0x0 0x12010000 0x0 0x10000>;
437 clocks = <&clkgen JH7110_UART4_CLK_CORE>,
438 <&clkgen JH7110_UART4_CLK_APB>;
439 clock-names = "baudclk", "apb_pclk";
440 resets = <&rstgen RSTN_U4_DW_UART_APB>;
445 uart5: serial@12020000 {
446 compatible = "snps,dw-apb-uart";
447 reg = <0x0 0x12020000 0x0 0x10000>;
450 clocks = <&clkgen JH7110_UART5_CLK_CORE>,
451 <&clkgen JH7110_UART5_CLK_APB>;
452 clock-names = "baudclk", "apb_pclk";
453 resets = <&rstgen RSTN_U5_DW_UART_APB>;
458 dma: dma-controller@16050000 {
459 compatible = "starfive,axi-dma";
460 reg = <0x0 0x16050000 0x0 0x10000>;
461 clocks = <&clkgen JH7110_DMA1P_CLK_AXI>,
462 <&clkgen JH7110_DMA1P_CLK_AHB>;
463 clock-names = "core-clk", "cfgr-clk";
464 resets = <&rstgen RSTN_U0_DW_DMA1P_AXI>,
465 <&rstgen RSTN_U0_DW_DMA1P_AHB>;
466 reset-names = "rst_axi",
471 snps,dma-masters = <1>;
472 snps,data-width = <3>;
473 snps,num-hs-if = <56>;
474 snps,block-size = <65536 65536 65536 65536>;
475 snps,priority = <0 1 2 3>;
476 snps,axi-max-burst-len = <16>;
480 gpio: gpio@13040000 {
481 compatible = "starfive_jh7110-sys-pinctrl";
482 reg = <0x0 0x13040000 0x0 0x10000>;
483 reg-names = "control";
485 interrupt-controller;
491 gpioa: gpio@17020000 {
492 compatible = "starfive_jh7110-aon-pinctrl";
493 reg = <0x0 0x17020000 0x0 0x10000>;
494 reg-names = "control";
496 interrupt-controller;
502 trng: trng@1600C000 {
503 compatible = "starfive,trng";
504 reg = <0x0 0x1600C000 0x0 0x4000>;
505 clocks = <&clkgen JH7110_SEC_HCLK>,
506 <&clkgen JH7110_SEC_MISCAHB_CLK>;
507 clock-names = "hclk", "miscahb_clk";
508 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
514 compatible = "snps,designware-i2c";
515 reg = <0x0 0x12060000 0x0 0x10000>;
516 clocks = <&clkgen JH7110_I2C6_CLK_CORE>,
517 <&clkgen JH7110_I2C6_CLK_APB>;
518 clock-names = "ref", "pclk";
519 resets = <&rstgen RSTN_U6_DW_I2C_APB>;
521 #address-cells = <1>;
527 compatible = "snps,designware-i2c";
528 reg = <0x0 0x10030000 0x0 0x10000>;
529 clocks = <&clkgen JH7110_I2C0_CLK_CORE>,
530 <&clkgen JH7110_I2C0_CLK_APB>;
531 clock-names = "ref", "pclk";
532 resets = <&rstgen RSTN_U0_DW_I2C_APB>;
534 #address-cells = <1>;
540 compatible = "snps,designware-i2c";
541 reg = <0x0 0x10040000 0x0 0x10000>;
542 clocks = <&clkgen JH7110_I2C1_CLK_CORE>,
543 <&clkgen JH7110_I2C1_CLK_APB>;
544 clock-names = "ref", "pclk";
545 resets = <&rstgen RSTN_U1_DW_I2C_APB>;
547 #address-cells = <1>;
552 /* unremovable emmc as mmcblk0 */
553 sdio0: sdio0@16010000 {
554 compatible = "snps,dw-mshc";
555 reg = <0x0 0x16010000 0x0 0x10000>;
556 clocks = <&clkgen JH7110_SDIO0_CLK_AHB>,
557 <&clkgen JH7110_SDIO0_CLK_SDCARD>;
558 clock-names = "biu","ciu";
559 resets = <&rstgen RSTN_U0_DW_SDIO_AHB>;
560 reset-names = "reset";
563 fifo-watermark-aligned;
568 sdio1: sdio1@16020000 {
569 compatible = "snps,dw-mshc";
570 reg = <0x0 0x16020000 0x0 0x10000>;
571 clocks = <&clkgen JH7110_SDIO1_CLK_AHB>,
572 <&clkgen JH7110_SDIO1_CLK_SDCARD>;
573 clock-names = "biu","ciu";
574 resets = <&rstgen RSTN_U1_DW_SDIO_AHB>;
575 reset-names = "reset";
578 fifo-watermark-aligned;
583 vin_sysctl: vin_sysctl@19800000 {
584 compatible = "starfive,stf-vin";
585 reg = <0x0 0x19800000 0x0 0x10000>,
586 <0x0 0x19810000 0x0 0x10000>,
587 <0x0 0x19820000 0x0 0x10000>,
588 <0x0 0x19830000 0x0 0x10000>,
589 <0x0 0x19840000 0x0 0x10000>,
590 <0x0 0x19870000 0x0 0x30000>,
591 <0x0 0x198a0000 0x0 0x30000>,
592 <0x0 0x11800000 0x0 0x10000>,
593 <0x0 0x11840000 0x0 0x10000>,
594 <0x0 0x11858000 0x0 0x10000>,
595 <0x0 0x17030000 0x0 0x10000>,
596 <0x0 0x13020000 0x0 0x10000>;
597 reg-names = "mipi0", "vclk", "vrst", "mipi1", "sctrl", "isp0", "isp1", "tclk", "trst", "iopad", "pmu", "syscrg";
598 interrupts = <92 87 86>;
603 compatible = "starfive,jpu";
604 reg = <0x0 0x13090000 0x0 0x300>;
606 clocks = <&clkgen JH7110_CODAJ12_CLK_AXI>,
607 <&clkgen JH7110_CODAJ12_CLK_CORE>,
608 <&clkgen JH7110_CODAJ12_CLK_APB>;
609 clock-names = "axi_clk", "core_clk", "apb_clk";
610 resets = <&rstgen RSTN_U0_CODAJ12_AXI>,
611 <&rstgen RSTN_U0_CODAJ12_CORE>,
612 <&rstgen RSTN_U0_CODAJ12_APB>;
613 reset-names = "rst_axi", "rst_core", "rst_apb";
617 vpu_dec: vpu_dec@130A0000 {
618 compatible = "starfive,vdec";
619 reg = <0x0 0x130A0000 0x0 0x10000>;
621 clocks = <&clkgen JH7110_WAVE511_CLK_AXI>,
622 <&clkgen JH7110_WAVE511_CLK_BPU>,
623 <&clkgen JH7110_WAVE511_CLK_VCE>,
624 <&clkgen JH7110_WAVE511_CLK_APB>,
625 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
626 clock-names = "axi_clk",
631 resets = <&rstgen RSTN_U0_WAVE511_AXI>,
632 <&rstgen RSTN_U0_WAVE511_BPU>,
633 <&rstgen RSTN_U0_WAVE511_VCE>,
634 <&rstgen RSTN_U0_WAVE511_APB>,
635 <&rstgen RSTN_U0_AXIMEM_128B_AXI>;
636 reset-names = "rst_axi",
641 starfive,vdec_noc_ctrl;
645 vpu_enc: vpu_enc@130B0000 {
646 compatible = "starfive,venc";
647 reg = <0x0 0x130B0000 0x0 0x10000>;
649 clocks = <&clkgen JH7110_WAVE420L_CLK_AXI>,
650 <&clkgen JH7110_WAVE420L_CLK_BPU>,
651 <&clkgen JH7110_WAVE420L_CLK_VCE>,
652 <&clkgen JH7110_WAVE420L_CLK_APB>,
653 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>;
654 clock-names = "axi_clk",
659 resets = <&rstgen RSTN_U0_WAVE420L_AXI>,
660 <&rstgen RSTN_U0_WAVE420L_BPU>,
661 <&rstgen RSTN_U0_WAVE420L_VCE>,
662 <&rstgen RSTN_U0_WAVE420L_APB>,
663 <&rstgen RSTN_U1_AXIMEM_128B_AXI>;
664 reset-names = "rst_axi",
669 starfive,venc_noc_ctrl;
673 rstgen: reset-controller {
674 compatible = "starfive,jh7110-reset";
675 reg = <0x0 0x13020000 0x0 0x10000>,
676 <0x0 0x10230000 0x0 0x10000>,
677 <0x0 0x17000000 0x0 0x10000>,
678 <0x0 0x19810000 0x0 0x10000>,
679 <0x0 0x295C0000 0x0 0x10000>;
680 reg-names = "syscrg", "stgcrg", "aoncrg", "ispcrg", "voutcrg";
685 stmmac_axi_setup: stmmac-axi-config {
686 snps,wr_osr_lmt = <0xf>;
687 snps,rd_osr_lmt = <0xf>;
688 snps,blen = <256 128 64 32 0 0 0>;
691 gmac0: ethernet@16030000 {
692 compatible = "starfive,jh7110-eqos-5.20";
693 reg = <0x0 0x16030000 0x0 0x10000>;
699 clocks = <&clkgen JH7110_GMAC0_GTXCLK>,
700 <&clkgen JH7110_U0_GMAC5_CLK_TX>,
701 <&clkgen JH7110_GMAC0_PTP>,
702 <&clkgen JH7110_U0_GMAC5_CLK_AHB>,
703 <&clkgen JH7110_U0_GMAC5_CLK_AXI>;
704 resets = <&rstgen RSTN_U0_DW_GMAC5_AXI64_AHB>,
705 <&rstgen RSTN_U0_DW_GMAC5_AXI64_AXI>;
706 reset-names = "ahb", "stmmaceth";
707 interrupts = <7>, <6>, <5> ;
708 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
709 max-frame-size = <9000>;
710 phy-mode = "rgmii-id";
711 snps,multicast-filter-bins = <256>;
712 snps,perfect-filter-entries = <128>;
713 rx-fifo-depth = <262144>;
714 tx-fifo-depth = <131072>;
717 snps,force_thresh_dma_mode;
718 snps,axi-config = <&stmmac_axi_setup>;
720 snps,en-tx-lpi-clockgating;
722 snps,write-requests = <2>;
723 snps,read-requests = <16>;
724 snps,burst-map = <0x7>;
730 gmac1: ethernet@16040000 {
731 compatible = "starfive,jh7110-eqos-5.20";
732 reg = <0x0 0x16040000 0x0 0x10000>;
738 clocks = <&clkgen JH7110_GMAC1_GTXCLK>,
739 <&clkgen JH7110_GMAC5_CLK_TX>,
740 <&clkgen JH7110_GMAC5_CLK_PTP>,
741 <&clkgen JH7110_GMAC5_CLK_AHB>,
742 <&clkgen JH7110_GMAC5_CLK_AXI>;
743 resets = <&rstgen RSTN_U1_DW_GMAC5_AXI64_H_N>,
744 <&rstgen RSTN_U1_DW_GMAC5_AXI64_A_I>;
745 reset-names = "ahb", "stmmaceth";
746 interrupts = <78>, <77>, <76> ;
747 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
748 max-frame-size = <9000>;
749 phy-mode = "rgmii-id";
750 snps,multicast-filter-bins = <256>;
751 snps,perfect-filter-entries = <128>;
752 rx-fifo-depth = <262144>;
753 tx-fifo-depth = <131072>;
756 snps,force_thresh_dma_mode;
757 snps,axi-config = <&stmmac_axi_setup>;
759 snps,en-tx-lpi-clockgating;
761 snps,write-requests = <2>;
762 snps,read-requests = <16>;
763 snps,burst-map = <0x7>;
770 compatible = "img-gpu";
771 reg = <0x0 0x18000000 0x0 0x100000 0x0 0x130C000 0x0 0x10000>;
772 clocks = <&gpu_core_clk>, <&gpu_sys_clk>;
773 clock-names = "gpu_core_clk","gpu_sys_clk";
775 current-clock = <8000000>;
780 compatible = "ipms,can";
781 reg = <0x0 0x130d0000 0x0 0x1000>;
783 clocks = <&clkgen JH7110_CAN0_CTRL_CLK_APB>,
784 <&clkgen JH7110_CAN0_CTRL_CLK_CAN>,
785 <&clkgen JH7110_CAN0_CTRL_CLK_TIMER>;
786 clock-names = "apb_clk",
789 resets = <&rstgen RSTN_U0_CAN_CTRL_APB>,
790 <&rstgen RSTN_U0_CAN_CTRL_CORE>,
791 <&rstgen RSTN_U0_CAN_CTRL_TIMER>;
792 reset-names = "rst_apb",
795 starfive,sys-syscon = <&sys_syscon 0x10 0x3 0x8>;
796 syscon,can_or_canfd = <0>;
801 compatible = "ipms,can";
802 reg = <0x0 0x130e0000 0x0 0x1000>;
804 clocks = <&clkgen JH7110_CAN1_CTRL_CLK_APB>,
805 <&clkgen JH7110_CAN1_CTRL_CLK_CAN>,
806 <&clkgen JH7110_CAN1_CTRL_CLK_TIMER>;
807 clock-names = "apb_clk",
810 resets = <&rstgen RSTN_U1_CAN_CTRL_APB>,
811 <&rstgen RSTN_U1_CAN_CTRL_CORE>,
812 <&rstgen RSTN_U1_CAN_CTRL_TIMER>;
813 reset-names = "rst_apb",
816 starfive,sys-syscon = <&sys_syscon 0x88 0x12 0x40000>;
817 syscon,can_or_canfd = <0>;
822 compatible = "starfive,tdm";
823 reg = <0x0 0x10090000 0x0 0x1000>;
825 clocks = <&audioclk>;
826 clock-names = "audioclk";
827 dmas = <&dma 20 1>, <&dma 21 1>;
828 dma-names = "rx","tx";
829 #sound-dai-cells = <0>;
833 spdif0: spdif0@100a0000 {
834 compatible = "starfive,sf-spdif";
835 reg = <0x0 0x100a0000 0x0 0x1000>;
836 clocks = <&audioclk>;
837 clock-names = "audioclk";
839 interrupt-names = "tx";
840 #sound-dai-cells = <0>;
844 pwmdac: pwmdac@100b0000 {
845 compatible = "sf,pwmdac";
846 reg = <0x0 0x100b0000 0x0 0x1000>;
850 #sound-dai-cells = <0>;
854 i2stx: i2stx@100c0000 {
855 compatible = "snps,designware-i2stx";
856 reg = <0x0 0x100c0000 0x0 0x1000>;
858 clock-names = "i2sclk";
859 interrupt-names = "tx";
860 #sound-dai-cells = <0>;
867 compatible = "starfive,sf-pdm";
868 reg = <0x0 0x100d0000 0x0 0x1000>;
870 clocks = <&audioclk>;
871 clock-names = "audioclk";
872 #sound-dai-cells = <0>;
876 i2srx_3ch: i2srx-3ch@100e0000 {
877 compatible = "snps,designware-i2srx";
878 reg = <0x0 0x100e0000 0x0 0x1000>;
880 clock-names = "i2sclk";
882 interrupt-names = "rx";
883 #sound-dai-cells = <0>;
887 i2stx_4ch0: i2stx-4ch0@120b0000 {
888 compatible = "snps,designware-i2stx-4ch0";
889 reg = <0x0 0x120b0000 0x0 0x1000>;
891 clock-names = "i2sclk";
893 interrupt-names = "tx";
894 #sound-dai-cells = <0>;
898 i2stx_4ch1: i2sdac1@120c0000 {
899 compatible = "snps,designware-i2stx-4ch1";
900 reg = <0x0 0x120c0000 0x0 0x1000>;
902 clock-names = "i2sclk";
904 interrupt-names = "tx";
905 #sound-dai-cells = <0>;
910 compatible = "starfive,pwm0";
911 reg = <0x0 0x120d0000 0x0 0x10000>;
912 reg-names = "control";
913 clocks = <&clkgen JH7110_PWM_CLK_APB>;
914 resets = <&rstgen RSTN_U0_PWM_8CH_APB>;
915 starfive,approx-period = <2000000>;
921 spdif_transmitter: spdif_transmitter {
922 compatible = "linux,spdif-dit";
923 #sound-dai-cells = <0>;
927 spdif_receiver: spdif_receiver {
928 compatible = "linux,spdif-dir";
929 #sound-dai-cells = <0>;
933 pwmdac_codec: pwmdac-transmitter {
934 compatible = "linux,pwmdac-dit";
935 #sound-dai-cells = <0>;
939 dmic_codec: dmic_codec {
940 compatible = "dmic-codec";
941 #sound-dai-cells = <0>;
945 spi0: spi0@10060000 {
946 compatible = "arm,pl022", "arm,primecell";
947 reg = <0x0 0x10060000 0x0 0x10000>;
949 clock-names = "apb_pclk";
951 dmas = <&dma 14 1>, <&dma 15 1>;
952 dma-names = "rx","tx";
953 arm,primecell-periphid = <0x00041022>;
955 #address-cells = <1>;
960 pcie0: pcie0@2B000000 {
961 compatible = "plda,pci-xpressrich3-axi";
962 reg = <0x0 0x2B000000 0x0 0x1000000
963 0x9 0x40000000 0x0 0x10000000>;
964 reg-names = "reg", "config";
966 interrupt-controller;
967 interrupt-names = "msi";
968 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
969 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
970 <0x0 0x0 0x0 0x2 &plic 0x2>,
971 <0x0 0x0 0x0 0x3 &plic 0x3>,
972 <0x0 0x0 0x0 0x4 &plic 0x4>;
973 resets = <&rstgen RSTN_U0_PLDA_PCIE_AXI_MST0>,
974 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV0>,
975 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV>,
976 <&rstgen RSTN_U0_PLDA_PCIE_BRG>,
977 <&rstgen RSTN_U0_PLDA_PCIE_CORE>,
978 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
979 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
980 "rst_brg", "rst_core", "rst_apb";
981 clocks = <&clkgen JH7110_PCIE0_CLK_TL>,
982 <&clkgen JH7110_PCIE0_CLK_AXI_MST0>,
983 <&clkgen JH7110_PCIE0_CLK_APB>;
984 clock-names = "tl", "axi_mst0", "apb";
985 #interrupt-cells = <1>;
987 starfive,stg-syscon = <&stg_syscon 0xc0 0xc4 0x130>;
988 bus-range = <0x0 0xff>;
989 msi-parent = <&plic>;
990 #address-cells = <3>;
992 ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x06000000>;
996 pcie1:pcie1@2C000000 {
997 compatible = "plda,pci-xpressrich3-axi";
998 reg = <0x0 0x2C000000 0x0 0x1000000
999 0x9 0xc0000000 0x0 0x10000000>;
1000 reg-names = "reg", "config";
1001 device_type = "pci";
1002 starfive,stg-syscon = <&stg_syscon 0x270 0x274 0x2e0>;
1003 bus-range = <0x0 0xff>;
1004 #address-cells = <3>;
1006 #interrupt-cells = <1>;
1007 ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x06000000>;
1008 msi-parent = <&plic>;
1010 interrupt-controller;
1011 interrupt-names = "msi";
1012 interrupt-parent = <&plic>;
1013 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1014 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1015 <0x0 0x0 0x0 0x2 &plic 0x2>,
1016 <0x0 0x0 0x0 0x3 &plic 0x3>,
1017 <0x0 0x0 0x0 0x4 &plic 0x4>;
1018 resets = <&rstgen RSTN_U1_PLDA_PCIE_AXI_MST0>,
1019 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV0>,
1020 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV>,
1021 <&rstgen RSTN_U1_PLDA_PCIE_BRG>,
1022 <&rstgen RSTN_U1_PLDA_PCIE_CORE>,
1023 <&rstgen RSTN_U1_PLDA_PCIE_APB>;
1024 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1025 "rst_brg", "rst_core", "rst_apb";
1026 clocks = <&clkgen JH7110_PCIE1_CLK_TL>,
1027 <&clkgen JH7110_PCIE1_CLK_AXI_MST0>,
1028 <&clkgen JH7110_PCIE1_CLK_APB>;
1029 clock-names = "tl", "axi_mst0", "apb";
1030 status = "disabled";
1033 mailbox_contrl0: mailbox@0 {
1034 compatible = "starfive,mail_box";
1035 reg = <0x0 0x13060000 0x0 0x0001000>;
1036 interrupts = <26 27>;
1038 status = "disabled";
1041 mailbox_client0: mailbox_client@0 {
1042 compatible = "starfive,mailbox-test";
1043 mbox-names = "rx", "tx";
1044 mboxes = <&mailbox_contrl0 0 1>,<&mailbox_contrl0 1 0>;
1045 status = "disabled";
1048 display: display-subsystem {
1049 compatible = "verisilicon,display-subsystem";
1050 ports = <&dc_out_dpi0>;
1051 status = "disabled";
1054 encoder: display-encoder {
1055 compatible = "starfive,display-encoder";
1056 status = "disabled";
1060 compatible = "verisilicon,dc8200";
1061 reg = <0x0 0x29400000 0x0 0x100>,<0x0 0x29400800 0x0 0x2000>;
1065 #address-cells = <1>;
1067 dc_out_dpi0: endpoint@0 {
1069 remote-endpoint = <&hdmi_input>;*/
1071 dc_out_dpi1: endpoint@1 {
1073 remote-endpoint = <&vd_input>;*/
1078 sound_pwmdac: snd-card_pwmdac {
1079 compatible = "simple-audio-card";
1080 simple-audio-card,name = "Starfive-Pwmdac-Sound-Card";
1081 simple-audio-card,bitclock-master = <&pwmdac_dailink_master>;
1082 simple-audio-card,frame-master = <&pwmdac_dailink_master>;
1083 simple-audio-card,format = "left_j";
1084 status = "disabled";
1086 pwmdac_dailink_master: simple-audio-card,cpu {
1087 sound-dai = <&pwmdac>;
1090 simple-audio-card,codec {
1091 sound-dai = <&pwmdac_codec>;