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>
13 #include <dt-bindings/power/jh7110-power.h>
14 #include <dt-bindings/interrupt-controller/irq.h>
17 compatible = "starfive,jh7110";
21 cluster0_opp: opp-table-0 {
22 compatible = "operating-points-v2";
25 opp-hz = /bits/ 64 <375000000>;
26 opp-microvolt = <800000>;
29 opp-hz = /bits/ 64 <500000000>;
30 opp-microvolt = <800000>;
33 opp-hz = /bits/ 64 <750000000>;
34 opp-microvolt = <800000>;
37 opp-hz = /bits/ 64 <1500000000>;
38 opp-microvolt = <1040000>;
47 compatible = "sifive,u74-mc", "riscv";
49 d-cache-block-size = <64>;
51 d-cache-size = <8192>;
55 i-cache-block-size = <64>;
57 i-cache-size = <16384>;
60 mmu-type = "riscv,sv39";
61 next-level-cache = <&cachectrl>;
62 riscv,isa = "rv64imac";
66 cpu0intctrl: interrupt-controller {
67 #interrupt-cells = <1>;
68 compatible = "riscv,cpu-intc";
74 compatible = "sifive,u74-mc", "riscv";
76 d-cache-block-size = <64>;
78 d-cache-size = <32768>;
82 i-cache-block-size = <64>;
84 i-cache-size = <32768>;
87 mmu-type = "riscv,sv39";
88 next-level-cache = <&cachectrl>;
89 riscv,isa = "rv64imafdc";
92 operating-points-v2 = <&cluster0_opp>;
94 cpu1intctrl: interrupt-controller {
95 #interrupt-cells = <1>;
96 compatible = "riscv,cpu-intc";
102 compatible = "sifive,u74-mc", "riscv";
104 d-cache-block-size = <64>;
106 d-cache-size = <32768>;
110 i-cache-block-size = <64>;
112 i-cache-size = <32768>;
115 mmu-type = "riscv,sv39";
116 next-level-cache = <&cachectrl>;
117 riscv,isa = "rv64imafdc";
120 operating-points-v2 = <&cluster0_opp>;
122 cpu2intctrl: interrupt-controller {
123 #interrupt-cells = <1>;
124 compatible = "riscv,cpu-intc";
125 interrupt-controller;
130 compatible = "sifive,u74-mc", "riscv";
132 d-cache-block-size = <64>;
134 d-cache-size = <32768>;
138 i-cache-block-size = <64>;
140 i-cache-size = <32768>;
143 mmu-type = "riscv,sv39";
144 next-level-cache = <&cachectrl>;
145 riscv,isa = "rv64imafdc";
148 operating-points-v2 = <&cluster0_opp>;
150 cpu3intctrl: interrupt-controller {
151 #interrupt-cells = <1>;
152 compatible = "riscv,cpu-intc";
153 interrupt-controller;
158 compatible = "sifive,u74-mc", "riscv";
160 d-cache-block-size = <64>;
162 d-cache-size = <32768>;
166 i-cache-block-size = <64>;
168 i-cache-size = <32768>;
171 mmu-type = "riscv,sv39";
172 next-level-cache = <&cachectrl>;
173 riscv,isa = "rv64imafdc";
176 operating-points-v2 = <&cluster0_opp>;
178 cpu4intctrl: interrupt-controller {
179 #interrupt-cells = <1>;
180 compatible = "riscv,cpu-intc";
181 interrupt-controller;
187 compatible = "simple-bus";
188 interrupt-parent = <&plic>;
189 #address-cells = <2>;
194 cachectrl: cache-controller@2010000 {
195 compatible = "sifive,fu740-c000-ccache", "cache";
196 reg = <0x0 0x2010000 0x0 0x4000 0x0 0x8000000 0x0 0x2000000>;
197 reg-names = "control", "sideband";
198 interrupts = <1 3 4 2>;
199 cache-block-size = <64>;
202 cache-size = <2097152>;
206 aon_syscon: aon_syscon@17010000 {
207 compatible = "syscon";
208 reg = <0x0 0x17010000 0x0 0x1000>;
211 stg_syscon: stg_syscon@10240000 {
212 compatible = "syscon";
213 reg = <0x0 0x10240000 0x0 0x1000>;
216 sys_syscon: sys_syscon@13030000 {
217 compatible = "syscon";
218 reg = <0x0 0x13030000 0x0 0x1000>;
221 clint: clint@2000000 {
222 compatible = "riscv,clint0";
223 reg = <0x0 0x2000000 0x0 0x10000>;
224 reg-names = "control";
225 interrupts-extended = <&cpu0intctrl 3 &cpu0intctrl 7
226 &cpu1intctrl 3 &cpu1intctrl 7
227 &cpu2intctrl 3 &cpu2intctrl 7
228 &cpu3intctrl 3 &cpu3intctrl 7
229 &cpu4intctrl 3 &cpu4intctrl 7>;
230 #interrupt-cells = <1>;
234 compatible = "riscv,plic0";
235 reg = <0x0 0xc000000 0x0 0x4000000>;
236 reg-names = "control";
237 interrupts-extended = <&cpu0intctrl 11
238 &cpu1intctrl 11 &cpu1intctrl 9
239 &cpu2intctrl 11 &cpu2intctrl 9
240 &cpu3intctrl 11 &cpu3intctrl 9
241 &cpu4intctrl 11 &cpu4intctrl 9>;
242 interrupt-controller;
243 #interrupt-cells = <1>;
244 riscv,max-priority = <7>;
248 clkgen: clock-controller {
249 compatible = "starfive,jh7110-clkgen";
250 reg = <0x0 0x13020000 0x0 0x10000>,
251 <0x0 0x10230000 0x0 0x10000>,
252 <0x0 0x17000000 0x0 0x10000>;
253 reg-names = "sys", "stg", "aon";
254 clocks = <&osc>, <&gmac1_rmii_refin>,
256 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
257 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
258 <&tdm_ext>, <&mclk_ext>,
259 <&jtag_tck_inner>, <&bist_apb>,
261 <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>;
262 clock-names = "osc", "gmac1_rmii_refin",
264 "i2stx_bclk_ext", "i2stx_lrck_ext",
265 "i2srx_bclk_ext", "i2srx_lrck_ext",
266 "tdm_ext", "mclk_ext",
267 "jtag_tck_inner", "bist_apb",
269 "gmac0_rmii_refin", "gmac0_rgmii_rxin";
271 starfive,sys-syscon = <&sys_syscon 0x18 0x1c
272 0x20 0x24 0x28 0x2c 0x30 0x34>;
276 clkvout: clock-controller@295C0000 {
277 compatible = "starfive,jh7110-clk-vout";
278 reg = <0x0 0x295C0000 0x0 0x10000>;
280 clocks = <&hdmitx0_pixelclk>,
281 <&mipitx_dphy_rxesc>,
282 <&mipitx_dphy_txbytehs>,
283 <&clkgen JH7110_VOUT_SRC>,
284 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AHB>;
285 clock-names = "hdmitx0_pixelclk",
287 "mipitx_dphy_txbytehs",
290 resets = <&rstgen RSTN_U0_DOM_VOUT_TOP_SRC>;
291 reset-names = "vout_src";
293 power-domains = <&pwrc JH7110_PD_VOUT>;
297 clkisp: clock-controller@19810000 {
298 compatible = "starfive,jh7110-clk-isp";
299 reg = <0x0 0x19810000 0x0 0x10000>;
302 clocks = <&clkgen JH7110_ISP_TOP_CLK_DVP>,
303 <&clkgen JH7110_ISP_TOP_CLK_ISPCORE_2X>,
304 <&clkgen JH7110_ISP_TOP_CLK_ISP_AXI>,
305 <&clkgen JH7110_NOC_BUS_CLK_ISP_AXI>;
306 clock-names = "u0_dom_isp_top_clk_dom_isp_top_clk_dvp",
307 "u0_dom_isp_top_clk_dom_isp_top_clk_ispcore_2x",
308 "u0_dom_isp_top_clk_dom_isp_top_clk_isp_axi",
309 "u0_sft7110_noc_bus_clk_isp_axi";
310 resets = <&rstgen RSTN_U0_DOM_ISP_TOP_N>,
311 <&rstgen RSTN_U0_DOM_ISP_TOP_AXI>,
312 <&rstgen RSTN_U0_NOC_BUS_ISP_AXI_N>;
313 reset-names = "rst_isp_top_n", "rst_isp_top_axi",
315 power-domains = <&pwrc JH7110_PD_ISP>;
320 compatible = "cdns,qspi-nor";
321 #address-cells = <1>;
323 reg = <0x0 0x13010000 0x0 0x10000
324 0x0 0x21000000 0x0 0x400000>;
326 clocks = <&clkgen JH7110_QSPI_CLK_REF>,
327 <&clkgen JH7110_QSPI_CLK_APB>,
328 <&clkgen JH7110_AHB1>,
329 <&clkgen JH7110_QSPI_CLK_AHB>;
330 clock-names = "clk_ref",
334 resets = <&rstgen RSTN_U0_CDNS_QSPI_APB>,
335 <&rstgen RSTN_U0_CDNS_QSPI_AHB>,
336 <&rstgen RSTN_U0_CDNS_QSPI_REF>;
337 resets-names = "rst_apb", "rst_ahb", "rst_ref";
338 cdns,fifo-depth = <256>;
339 cdns,fifo-width = <4>;
340 cdns,trigger-address = <0x0>;
341 spi-max-frequency = <250000000>;
343 nor_flash: nor-flash@0 {
344 compatible = "jedec,spi-nor";
346 cdns,read-delay = <5>;
347 spi-max-frequency = <100000000>;
354 compatible = "fixed-partitions";
355 #address-cells = <1>;
362 reg = <0x100000 0x300000>;
365 reg = <0xf00000 0x100000>;
372 compatible = "starfive,jh7110-otp";
373 reg = <0x0 0x17050000 0x0 0x10000>;
374 clock-frequency = <4000000>;
375 clocks = <&clkgen JH7110_OTPC_CLK_APB>;
380 compatible = "starfive,jh7110-cdns3";
381 reg = <0x0 0x10210000 0x0 0x1000>,
382 <0x0 0x10200000 0x0 0x1000>;
383 clocks = <&clkgen JH7110_USB_125M>,
384 <&clkgen JH7110_USB0_CLK_APP_125>,
385 <&clkgen JH7110_USB0_CLK_LPM>,
386 <&clkgen JH7110_USB0_CLK_STB>,
387 <&clkgen JH7110_USB0_CLK_USB_APB>,
388 <&clkgen JH7110_USB0_CLK_AXI>,
389 <&clkgen JH7110_USB0_CLK_UTMI_APB>,
390 <&clkgen JH7110_PCIE0_CLK_APB>;
391 clock-names = "125m","app","lpm","stb","apb","axi","utmi", "phy";
392 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
393 <&rstgen RSTN_U0_CDN_USB_APB>,
394 <&rstgen RSTN_U0_CDN_USB_AXI>,
395 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>,
396 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
397 reset-names = "pwrup","apb","axi","utmi", "phy";
398 starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>;
399 starfive,sys-syscon = <&sys_syscon 0x18>;
401 #address-cells = <2>;
403 #interrupt-cells = <1>;
405 usbdrd_cdns3: usb@10100000 {
406 compatible = "cdns,usb3";
407 reg = <0x0 0x10100000 0x0 0x10000>,
408 <0x0 0x10110000 0x0 0x10000>,
409 <0x0 0x10120000 0x0 0x10000>;
410 reg-names = "otg", "xhci", "dev";
411 interrupts = <100>, <108>, <110>;
412 interrupt-names = "host", "peripheral", "otg";
413 phy-names = "cdns3,usb3-phy", "cnds3,usb2-phy";
414 maximum-speed = "super-speed";
418 timer: timer@13050000 {
419 compatible = "starfive,jh7110-timers";
420 reg = <0x0 0x13050000 0x0 0x10000>;
421 interrupts = <69>, <70>, <71> ,<72>;
422 interrupt-names = "timer0", "timer1",
424 clocks = <&clkgen JH7110_TIMER_CLK_TIMER0>,
425 <&clkgen JH7110_TIMER_CLK_TIMER1>,
426 <&clkgen JH7110_TIMER_CLK_TIMER2>,
427 <&clkgen JH7110_TIMER_CLK_TIMER3>,
428 <&clkgen JH7110_TIMER_CLK_APB>;
429 clock-names = "timer0", "timer1",
430 "timer2", "timer3", "apb_clk";
431 resets = <&rstgen RSTN_U0_TIMER_TIMER0>,
432 <&rstgen RSTN_U0_TIMER_TIMER1>,
433 <&rstgen RSTN_U0_TIMER_TIMER2>,
434 <&rstgen RSTN_U0_TIMER_TIMER3>,
435 <&rstgen RSTN_U0_TIMER_APB>;
436 reset-names = "timer0", "timer1",
437 "timer2", "timer3", "apb_rst";
438 clock-frequency = <24000000>;
442 wdog: wdog@13070000 {
443 compatible = "starfive,jh7110-wdt";
444 reg = <0x0 0x13070000 0x0 0x10000>;
446 interrupt-names = "wdog";
447 clocks = <&clkgen JH7110_DSKIT_WDT_CLK_WDT>,
448 <&clkgen JH7110_DSKIT_WDT_CLK_APB>;
449 clock-names = "core_clk", "apb_clk";
450 resets = <&rstgen RSTN_U0_DSKIT_WDT_APB>,
451 <&rstgen RSTN_U0_DSKIT_WDT_CORE>;
452 reset-names = "rst_apb", "rst_core";
458 compatible = "starfive,jh7110-rtc";
459 reg = <0x0 0x17040000 0x0 0x10000>;
460 interrupts = <10>, <11>, <12>;
461 interrupt-names = "rtc_ms_pulse", "rtc_sec_pulse", "rtc";
462 clocks = <&clkgen JH7110_RTC_HMS_CLK_APB>,
463 <&clkgen JH7110_RTC_HMS_CLK_CAL>;
464 clock-names = "pclk", "cal_clk";
465 resets = <&rstgen RSTN_U0_RTC_HMS_OSC32K>,
466 <&rstgen RSTN_U0_RTC_HMS_APB>,
467 <&rstgen RSTN_U0_RTC_HMS_CAL>;
468 reset-names = "rst_osc", "rst_apb", "rst_cal";
469 rtc,cal-clock-freq = <1000000>;
473 pwrc: power-controller@17030000 {
474 compatible = "starfive,jh7110-pmu";
475 reg = <0x0 0x17030000 0x0 0x10000>;
477 #power-domain-cells = <1>;
481 uart0: serial@10000000 {
482 compatible = "snps,dw-apb-uart";
483 reg = <0x0 0x10000000 0x0 0x10000>;
486 clocks = <&clkgen JH7110_UART0_CLK_CORE>,
487 <&clkgen JH7110_UART0_CLK_APB>;
488 clock-names = "baudclk", "apb_pclk";
489 resets = <&rstgen RSTN_U0_DW_UART_APB>,
490 <&rstgen RSTN_U0_DW_UART_CORE>;
495 uart1: serial@10010000 {
496 compatible = "snps,dw-apb-uart";
497 reg = <0x0 0x10010000 0x0 0x10000>;
500 clocks = <&clkgen JH7110_UART1_CLK_CORE>,
501 <&clkgen JH7110_UART1_CLK_APB>;
502 clock-names = "baudclk", "apb_pclk";
503 resets = <&rstgen RSTN_U1_DW_UART_APB>,
504 <&rstgen RSTN_U1_DW_UART_CORE>;
509 uart2: serial@10020000 {
510 compatible = "snps,dw-apb-uart";
511 reg = <0x0 0x10020000 0x0 0x10000>;
514 clocks = <&clkgen JH7110_UART2_CLK_CORE>,
515 <&clkgen JH7110_UART2_CLK_APB>;
516 clock-names = "baudclk", "apb_pclk";
517 resets = <&rstgen RSTN_U2_DW_UART_APB>,
518 <&rstgen RSTN_U2_DW_UART_CORE>;
523 uart3: serial@12000000 {
524 compatible = "snps,dw-apb-uart";
525 reg = <0x0 0x12000000 0x0 0x10000>;
528 clocks = <&clkgen JH7110_UART3_CLK_CORE>,
529 <&clkgen JH7110_UART3_CLK_APB>;
530 clock-names = "baudclk", "apb_pclk";
531 resets = <&rstgen RSTN_U3_DW_UART_APB>,
532 <&rstgen RSTN_U3_DW_UART_CORE>;
537 uart4: serial@12010000 {
538 compatible = "snps,dw-apb-uart";
539 reg = <0x0 0x12010000 0x0 0x10000>;
542 clocks = <&clkgen JH7110_UART4_CLK_CORE>,
543 <&clkgen JH7110_UART4_CLK_APB>;
544 clock-names = "baudclk", "apb_pclk";
545 resets = <&rstgen RSTN_U4_DW_UART_APB>,
546 <&rstgen RSTN_U4_DW_UART_CORE>;
551 uart5: serial@12020000 {
552 compatible = "snps,dw-apb-uart";
553 reg = <0x0 0x12020000 0x0 0x10000>;
556 clocks = <&clkgen JH7110_UART5_CLK_CORE>,
557 <&clkgen JH7110_UART5_CLK_APB>;
558 clock-names = "baudclk", "apb_pclk";
559 resets = <&rstgen RSTN_U5_DW_UART_APB>,
560 <&rstgen RSTN_U5_DW_UART_CORE>;
565 dma: dma-controller@16050000 {
566 compatible = "starfive,jh7110-dma", "snps,axi-dma-1.01a";
567 reg = <0x0 0x16050000 0x0 0x10000>;
568 clocks = <&clkgen JH7110_DMA1P_CLK_AXI>,
569 <&clkgen JH7110_DMA1P_CLK_AHB>,
570 <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>;
571 clock-names = "core-clk", "cfgr-clk", "stg_clk";
572 resets = <&rstgen RSTN_U0_DW_DMA1P_AXI>,
573 <&rstgen RSTN_U0_DW_DMA1P_AHB>,
574 <&rstgen RSTN_U0_NOC_BUS_STG_AXI_N>;
575 reset-names = "rst_axi", "rst_ahb", "rst_stg";
579 snps,dma-masters = <1>;
580 snps,data-width = <3>;
581 snps,num-hs-if = <56>;
582 snps,block-size = <65536 65536 65536 65536>;
583 snps,priority = <0 1 2 3>;
584 snps,axi-max-burst-len = <16>;
588 gpio: gpio@13040000 {
589 compatible = "starfive,jh7110-sys-pinctrl";
590 reg = <0x0 0x13040000 0x0 0x10000>;
591 reg-names = "control";
592 clocks = <&clkgen JH7110_SYS_IOMUX_PCLK>;
593 resets = <&rstgen RSTN_U0_SYS_IOMUX_PRESETN>;
595 interrupt-controller;
601 gpioa: gpio@17020000 {
602 compatible = "starfive,jh7110-aon-pinctrl";
603 reg = <0x0 0x17020000 0x0 0x10000>;
604 reg-names = "control";
605 resets = <&rstgen RSTN_U0_AON_IOMUX_PRESETN>;
607 interrupt-controller;
613 sfctemp: tmon@120e0000 {
614 compatible = "starfive,jh7110-temp";
615 reg = <0x0 0x120e0000 0x0 0x10000>;
617 clocks = <&clkgen JH7110_TEMP_SENSOR_CLK_TEMP>,
618 <&clkgen JH7110_TEMP_SENSOR_CLK_APB>;
619 clock-names = "sense", "bus";
620 resets = <&rstgen RSTN_U0_TEMP_SENSOR_TEMP>,
621 <&rstgen RSTN_U0_TEMP_SENSOR_APB>;
622 reset-names = "sense", "bus";
623 #thermal-sensor-cells = <0>;
629 polling-delay-passive = <250>;
630 polling-delay = <15000>;
632 thermal-sensors = <&sfctemp>;
638 cpu_alert0: cpu_alert0 {
640 temperature = <75000>;
647 temperature = <90000>;
655 trng: trng@1600C000 {
656 compatible = "starfive,jh7110-trng";
657 reg = <0x0 0x1600C000 0x0 0x4000>;
658 clocks = <&clkgen JH7110_SEC_HCLK>,
659 <&clkgen JH7110_SEC_MISCAHB_CLK>;
660 clock-names = "hclk", "ahb";
661 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
666 sec_dma: sec_dma@16008000 {
667 compatible = "arm,pl080", "arm,primecell";
668 arm,primecell-periphid = <0x00041080>;
669 reg = <0x0 0x16008000 0x0 0x4000>;
670 reg-names = "sec_dma";
672 clocks = <&clkgen JH7110_SEC_HCLK>,
673 <&clkgen JH7110_SEC_MISCAHB_CLK>;
674 clock-names = "sec_hclk","apb_pclk";
675 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
676 reset-names = "sec_hre";
677 lli-bus-interface-ahb1;
678 mem-bus-interface-ahb1;
679 memcpy-burst-size = <256>;
680 memcpy-bus-width = <32>;
685 crypto: crypto@16000000 {
686 compatible = "starfive,jh7110-sec";
687 reg = <0x0 0x16000000 0x0 0x4000>,
688 <0x0 0x16008000 0x0 0x4000>;
689 reg-names = "secreg","secdma";
690 interrupts = <28>, <29>;
691 interrupt-names = "secirq", "dmairq";
692 clocks = <&clkgen JH7110_SEC_HCLK>,
693 <&clkgen JH7110_SEC_MISCAHB_CLK>;
694 clock-names = "sec_hclk","sec_ahb";
695 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
696 reset-names = "sec_hre";
697 enable-side-channel-mitigation = "true";
699 dmas = <&sec_dma 1 2>,
701 dma-names = "sec_m","sec_p";
706 compatible = "snps,designware-i2c";
707 reg = <0x0 0x10030000 0x0 0x10000>;
708 clocks = <&clkgen JH7110_I2C0_CLK_CORE>,
709 <&clkgen JH7110_I2C0_CLK_APB>;
710 clock-names = "ref", "pclk";
711 resets = <&rstgen RSTN_U0_DW_I2C_APB>;
713 #address-cells = <1>;
719 compatible = "snps,designware-i2c";
720 reg = <0x0 0x10040000 0x0 0x10000>;
721 clocks = <&clkgen JH7110_I2C1_CLK_CORE>,
722 <&clkgen JH7110_I2C1_CLK_APB>;
723 clock-names = "ref", "pclk";
724 resets = <&rstgen RSTN_U1_DW_I2C_APB>;
726 #address-cells = <1>;
732 compatible = "snps,designware-i2c";
733 reg = <0x0 0x10050000 0x0 0x10000>;
734 clocks = <&clkgen JH7110_I2C2_CLK_CORE>,
735 <&clkgen JH7110_I2C2_CLK_APB>;
736 clock-names = "ref", "pclk";
737 resets = <&rstgen RSTN_U2_DW_I2C_APB>;
739 #address-cells = <1>;
745 compatible = "snps,designware-i2c";
746 reg = <0x0 0x12030000 0x0 0x10000>;
747 clocks = <&clkgen JH7110_I2C3_CLK_CORE>,
748 <&clkgen JH7110_I2C3_CLK_APB>;
749 clock-names = "ref", "pclk";
750 resets = <&rstgen RSTN_U3_DW_I2C_APB>;
752 #address-cells = <1>;
758 compatible = "snps,designware-i2c";
759 reg = <0x0 0x12040000 0x0 0x10000>;
760 clocks = <&clkgen JH7110_I2C4_CLK_CORE>,
761 <&clkgen JH7110_I2C4_CLK_APB>;
762 clock-names = "ref", "pclk";
763 resets = <&rstgen RSTN_U4_DW_I2C_APB>;
765 #address-cells = <1>;
771 compatible = "snps,designware-i2c";
772 reg = <0x0 0x12050000 0x0 0x10000>;
773 clocks = <&clkgen JH7110_I2C5_CLK_CORE>,
774 <&clkgen JH7110_I2C5_CLK_APB>;
775 clock-names = "ref", "pclk";
776 resets = <&rstgen RSTN_U5_DW_I2C_APB>;
778 #address-cells = <1>;
784 compatible = "snps,designware-i2c";
785 reg = <0x0 0x12060000 0x0 0x10000>;
786 clocks = <&clkgen JH7110_I2C6_CLK_CORE>,
787 <&clkgen JH7110_I2C6_CLK_APB>;
788 clock-names = "ref", "pclk";
789 resets = <&rstgen RSTN_U6_DW_I2C_APB>;
791 #address-cells = <1>;
796 /* unremovable emmc as mmcblk0 */
797 sdio0: sdio0@16010000 {
798 compatible = "starfive,jh7110-sdio";
799 reg = <0x0 0x16010000 0x0 0x10000>;
800 clocks = <&clkgen JH7110_SDIO0_CLK_AHB>,
801 <&clkgen JH7110_SDIO0_CLK_SDCARD>;
802 clock-names = "biu","ciu";
803 resets = <&rstgen RSTN_U0_DW_SDIO_AHB>;
804 reset-names = "reset";
807 fifo-watermark-aligned;
809 starfive,sys-syscon = <&sys_syscon 0x14 0x1a 0x7c000000>;
813 sdio1: sdio1@16020000 {
814 compatible = "starfive,jh7110-sdio";
815 reg = <0x0 0x16020000 0x0 0x10000>;
816 clocks = <&clkgen JH7110_SDIO1_CLK_AHB>,
817 <&clkgen JH7110_SDIO1_CLK_SDCARD>;
818 clock-names = "biu","ciu";
819 resets = <&rstgen RSTN_U1_DW_SDIO_AHB>;
820 reset-names = "reset";
823 fifo-watermark-aligned;
825 starfive,sys-syscon = <&sys_syscon 0x9c 0x1 0x3e>;
829 vin_sysctl: vin_sysctl@19800000 {
830 compatible = "starfive,jh7110-vin";
831 reg = <0x0 0x19800000 0x0 0x10000>,
832 <0x0 0x19810000 0x0 0x10000>,
833 <0x0 0x19820000 0x0 0x10000>,
834 <0x0 0x19840000 0x0 0x10000>,
835 <0x0 0x19870000 0x0 0x30000>,
836 <0x0 0x11840000 0x0 0x10000>,
837 <0x0 0x17030000 0x0 0x10000>,
838 <0x0 0x13020000 0x0 0x10000>;
839 reg-names = "csi2rx", "vclk", "vrst", "sctrl",
840 "isp", "trst", "pmu", "syscrg";
841 clocks = <&clkisp JH7110_DOM4_APB_FUNC>,
842 <&clkisp JH7110_U0_VIN_PCLK>,
843 <&clkisp JH7110_U0_VIN_SYS_CLK>,
844 <&clkisp JH7110_U0_ISPV2_TOP_WRAPPER_CLK_C>,
845 <&clkisp JH7110_DVP_INV>,
846 <&clkisp JH7110_U0_VIN_CLK_P_AXIWR>,
847 <&clkisp JH7110_MIPI_RX0_PXL>,
848 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF0>,
849 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF1>,
850 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF2>,
851 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF3>,
852 <&clkisp JH7110_U0_M31DPHY_CFGCLK_IN>,
853 <&clkisp JH7110_U0_M31DPHY_REFCLK_IN>,
854 <&clkisp JH7110_U0_M31DPHY_TXCLKESC_LAN0>,
855 <&clkgen JH7110_ISP_TOP_CLK_ISPCORE_2X>,
856 <&clkgen JH7110_ISP_TOP_CLK_ISP_AXI>;
857 clock-names = "clk_apb_func", "clk_pclk", "clk_sys_clk",
858 "clk_wrapper_clk_c", "clk_dvp_inv", "clk_axiwr",
859 "clk_mipi_rx0_pxl", "clk_pixel_clk_if0",
860 "clk_pixel_clk_if1", "clk_pixel_clk_if2",
861 "clk_pixel_clk_if3", "clk_m31dphy_cfgclk_in",
862 "clk_m31dphy_refclk_in", "clk_m31dphy_txclkesc_lan0",
863 "clk_ispcore_2x", "clk_isp_axi";
864 resets = <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_P>,
865 <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_C>,
866 <&rstgen RSTN_U0_VIN_N_PCLK>,
867 <&rstgen RSTN_U0_VIN_N_SYS_CLK>,
868 <&rstgen RSTN_U0_VIN_P_AXIRD>,
869 <&rstgen RSTN_U0_VIN_P_AXIWR>,
870 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF0>,
871 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF1>,
872 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF2>,
873 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF3>,
874 <&rstgen RSTN_U0_M31DPHY_HW>,
875 <&rstgen RSTN_U0_M31DPHY_B09_ALWAYS_ON>,
876 <&rstgen RSTN_U0_DOM_ISP_TOP_N>,
877 <&rstgen RSTN_U0_DOM_ISP_TOP_AXI>;
878 reset-names = "rst_wrapper_p", "rst_wrapper_c", "rst_pclk",
879 "rst_sys_clk", "rst_axird", "rst_axiwr", "rst_pixel_clk_if0",
880 "rst_pixel_clk_if1", "rst_pixel_clk_if2", "rst_pixel_clk_if3",
881 "rst_m31dphy_hw", "rst_m31dphy_b09_always_on",
882 "rst_isp_top_n", "rst_isp_top_axi";
883 starfive,aon-syscon = <&aon_syscon 0x00>;
884 power-domains = <&pwrc JH7110_PD_ISP>;
885 /* irq nr: vin, isp, isp_csi, isp_scd, isp_csiline */
886 interrupts = <92 87 88 89 90>;
891 compatible = "starfive,jpu";
892 reg = <0x0 0x13090000 0x0 0x300>;
894 clocks = <&clkgen JH7110_CODAJ12_CLK_AXI>,
895 <&clkgen JH7110_CODAJ12_CLK_CORE>,
896 <&clkgen JH7110_CODAJ12_CLK_APB>,
897 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
898 clock-names = "axi_clk", "core_clk",
899 "apb_clk", "noc_bus";
900 resets = <&rstgen RSTN_U0_CODAJ12_AXI>,
901 <&rstgen RSTN_U0_CODAJ12_CORE>,
902 <&rstgen RSTN_U0_CODAJ12_APB>;
903 reset-names = "rst_axi", "rst_core", "rst_apb";
904 power-domains = <&pwrc JH7110_PD_VDEC>;
908 vpu_dec: vpu_dec@130A0000 {
909 compatible = "starfive,vdec";
910 reg = <0x0 0x130A0000 0x0 0x10000>;
912 clocks = <&clkgen JH7110_WAVE511_CLK_AXI>,
913 <&clkgen JH7110_WAVE511_CLK_BPU>,
914 <&clkgen JH7110_WAVE511_CLK_VCE>,
915 <&clkgen JH7110_WAVE511_CLK_APB>,
916 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
917 clock-names = "axi_clk", "bpu_clk", "vce_clk",
918 "apb_clk", "noc_bus";
919 resets = <&rstgen RSTN_U0_WAVE511_AXI>,
920 <&rstgen RSTN_U0_WAVE511_BPU>,
921 <&rstgen RSTN_U0_WAVE511_VCE>,
922 <&rstgen RSTN_U0_WAVE511_APB>,
923 <&rstgen RSTN_U0_AXIMEM_128B_AXI>;
924 reset-names = "rst_axi", "rst_bpu", "rst_vce",
925 "rst_apb", "rst_sram";
926 starfive,vdec_noc_ctrl;
927 power-domains = <&pwrc JH7110_PD_VDEC>;
931 vpu_enc: vpu_enc@130B0000 {
932 compatible = "starfive,venc";
933 reg = <0x0 0x130B0000 0x0 0x10000>;
935 clocks = <&clkgen JH7110_WAVE420L_CLK_AXI>,
936 <&clkgen JH7110_WAVE420L_CLK_BPU>,
937 <&clkgen JH7110_WAVE420L_CLK_VCE>,
938 <&clkgen JH7110_WAVE420L_CLK_APB>,
939 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>;
940 clock-names = "axi_clk", "bpu_clk", "vce_clk",
941 "apb_clk", "noc_bus";
942 resets = <&rstgen RSTN_U0_WAVE420L_AXI>,
943 <&rstgen RSTN_U0_WAVE420L_BPU>,
944 <&rstgen RSTN_U0_WAVE420L_VCE>,
945 <&rstgen RSTN_U0_WAVE420L_APB>,
946 <&rstgen RSTN_U1_AXIMEM_128B_AXI>;
947 reset-names = "rst_axi", "rst_bpu", "rst_vce",
948 "rst_apb", "rst_sram";
949 starfive,venc_noc_ctrl;
950 power-domains = <&pwrc JH7110_PD_VENC>;
954 rstgen: reset-controller {
955 compatible = "starfive,jh7110-reset";
956 reg = <0x0 0x13020000 0x0 0x10000>,
957 <0x0 0x10230000 0x0 0x10000>,
958 <0x0 0x17000000 0x0 0x10000>,
959 <0x0 0x19810000 0x0 0x10000>,
960 <0x0 0x295C0000 0x0 0x10000>;
961 reg-names = "syscrg", "stgcrg", "aoncrg", "ispcrg", "voutcrg";
966 stmmac_axi_setup: stmmac-axi-config {
967 snps,wr_osr_lmt = <0xf>;
968 snps,rd_osr_lmt = <0xf>;
969 snps,blen = <256 128 64 32 0 0 0>;
972 gmac0: ethernet@16030000 {
973 compatible = "starfive,dwmac","snps,dwmac-5.10a";
974 reg = <0x0 0x16030000 0x0 0x10000>;
982 clocks = <&clkgen JH7110_GMAC0_GTXCLK>,
983 <&clkgen JH7110_U0_GMAC5_CLK_TX>,
984 <&clkgen JH7110_GMAC0_PTP>,
985 <&clkgen JH7110_U0_GMAC5_CLK_AHB>,
986 <&clkgen JH7110_U0_GMAC5_CLK_AXI>,
987 <&clkgen JH7110_GMAC0_GTXC>,
988 <&clkgen JH7110_GMAC0_RMII_RTX>;
989 resets = <&rstgen RSTN_U0_DW_GMAC5_AXI64_AHB>,
990 <&rstgen RSTN_U0_DW_GMAC5_AXI64_AXI>;
991 reset-names = "ahb", "stmmaceth";
992 interrupts = <7>, <6>, <5> ;
993 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
994 max-frame-size = <9000>;
995 phy-mode = "rgmii-id";
996 snps,multicast-filter-bins = <64>;
997 snps,perfect-filter-entries = <128>;
998 rx-fifo-depth = <2048>;
999 tx-fifo-depth = <2048>;
1002 snps,force_thresh_dma_mode;
1003 snps,axi-config = <&stmmac_axi_setup>;
1005 snps,en-tx-lpi-clockgating;
1007 snps,write-requests = <4>;
1008 snps,read-requests = <4>;
1009 snps,burst-map = <0x7>;
1012 status = "disabled";
1015 gmac1: ethernet@16040000 {
1016 compatible = "starfive,dwmac","snps,dwmac-5.10a";
1017 reg = <0x0 0x16040000 0x0 0x10000>;
1018 clock-names = "gtx",
1025 clocks = <&clkgen JH7110_GMAC1_GTXCLK>,
1026 <&clkgen JH7110_GMAC5_CLK_TX>,
1027 <&clkgen JH7110_GMAC5_CLK_PTP>,
1028 <&clkgen JH7110_GMAC5_CLK_AHB>,
1029 <&clkgen JH7110_GMAC5_CLK_AXI>,
1030 <&clkgen JH7110_GMAC1_GTXC>,
1031 <&clkgen JH7110_GMAC1_RMII_RTX>;
1032 resets = <&rstgen RSTN_U1_DW_GMAC5_AXI64_H_N>,
1033 <&rstgen RSTN_U1_DW_GMAC5_AXI64_A_I>;
1034 reset-names = "ahb", "stmmaceth";
1035 interrupts = <78>, <77>, <76> ;
1036 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1037 max-frame-size = <9000>;
1038 phy-mode = "rgmii-id";
1039 snps,multicast-filter-bins = <64>;
1040 snps,perfect-filter-entries = <128>;
1041 rx-fifo-depth = <2048>;
1042 tx-fifo-depth = <2048>;
1045 snps,force_thresh_dma_mode;
1046 snps,axi-config = <&stmmac_axi_setup>;
1048 snps,en-tx-lpi-clockgating;
1050 snps,write-requests = <4>;
1051 snps,read-requests = <4>;
1052 snps,burst-map = <0x7>;
1055 status = "disabled";
1059 compatible = "img-gpu";
1060 reg = <0x0 0x18000000 0x0 0x100000>,
1061 <0x0 0x130C000 0x0 0x10000>;
1062 clocks = <&clkgen JH7110_GPU_CORE>,
1063 <&clkgen JH7110_GPU_CLK_APB>,
1064 <&clkgen JH7110_GPU_RTC_TOGGLE>,
1065 <&clkgen JH7110_GPU_CORE_CLK>,
1066 <&clkgen JH7110_GPU_SYS_CLK>,
1067 <&clkgen JH7110_NOC_BUS_CLK_GPU_AXI>;
1068 clock-names = "clk_bv", "clk_apb", "clk_rtc",
1069 "clk_core", "clk_sys", "clk_axi";
1070 resets = <&rstgen RSTN_U0_IMG_GPU_APB>,
1071 <&rstgen RSTN_U0_IMG_GPU_DOMA>;
1072 reset-names = "rst_apb", "rst_doma";
1073 power-domains = <&pwrc JH7110_PD_GPUA>;
1075 current-clock = <8000000>;
1076 status = "disabled";
1079 can0: can@130d0000 {
1080 compatible = "starfive,jh7110-can", "ipms,can";
1081 reg = <0x0 0x130d0000 0x0 0x1000>;
1083 clocks = <&clkgen JH7110_CAN0_CTRL_CLK_APB>,
1084 <&clkgen JH7110_CAN0_CTRL_CLK_CAN>,
1085 <&clkgen JH7110_CAN0_CTRL_CLK_TIMER>;
1086 clock-names = "apb_clk", "core_clk", "timer_clk";
1087 resets = <&rstgen RSTN_U0_CAN_CTRL_APB>,
1088 <&rstgen RSTN_U0_CAN_CTRL_CORE>,
1089 <&rstgen RSTN_U0_CAN_CTRL_TIMER>;
1090 reset-names = "rst_apb", "rst_core", "rst_timer";
1091 frequency = <40000000>;
1092 starfive,sys-syscon = <&sys_syscon 0x10 0x3 0x8>;
1093 syscon,can_or_canfd = <0>;
1094 status = "disabled";
1097 can1: can@130e0000 {
1098 compatible = "starfive,jh7110-can", "ipms,can";
1099 reg = <0x0 0x130e0000 0x0 0x1000>;
1101 clocks = <&clkgen JH7110_CAN1_CTRL_CLK_APB>,
1102 <&clkgen JH7110_CAN1_CTRL_CLK_CAN>,
1103 <&clkgen JH7110_CAN1_CTRL_CLK_TIMER>;
1104 clock-names = "apb_clk", "core_clk", "timer_clk";
1105 resets = <&rstgen RSTN_U1_CAN_CTRL_APB>,
1106 <&rstgen RSTN_U1_CAN_CTRL_CORE>,
1107 <&rstgen RSTN_U1_CAN_CTRL_TIMER>;
1108 reset-names = "rst_apb", "rst_core", "rst_timer";
1109 frequency = <40000000>;
1110 starfive,sys-syscon = <&sys_syscon 0x88 0x12 0x40000>;
1111 syscon,can_or_canfd = <1>;
1112 status = "disabled";
1116 compatible = "starfive,jh7110-tdm";
1117 reg = <0x0 0x10090000 0x0 0x1000>;
1119 clocks = <&clkgen JH7110_AHB0>,
1120 <&clkgen JH7110_TDM_CLK_AHB>,
1121 <&clkgen JH7110_APB0>,
1122 <&clkgen JH7110_TDM_CLK_APB>,
1123 <&clkgen JH7110_TDM_INTERNAL>,
1125 <&clkgen JH7110_TDM_CLK_TDM>,
1126 <&clkgen JH7110_MCLK_INNER>;
1127 clock-names = "clk_ahb0", "clk_tdm_ahb",
1128 "clk_apb0", "clk_tdm_apb",
1129 "clk_tdm_internal", "clk_tdm_ext",
1130 "clk_tdm", "mclk_inner";
1131 resets = <&rstgen RSTN_U0_TDM16SLOT_AHB>,
1132 <&rstgen RSTN_U0_TDM16SLOT_APB>,
1133 <&rstgen RSTN_U0_TDM16SLOT_TDM>;
1134 reset-names = "tdm_ahb", "tdm_apb", "tdm_rst";
1135 dmas = <&dma 20 1>, <&dma 21 1>;
1136 dma-names = "rx","tx";
1137 #sound-dai-cells = <0>;
1138 status = "disabled";
1141 spdif0: spdif0@100a0000 {
1142 compatible = "starfive,jh7110-spdif";
1143 reg = <0x0 0x100a0000 0x0 0x1000>;
1144 clocks = <&clkgen JH7110_SPDIF_CLK_APB>,
1145 <&clkgen JH7110_SPDIF_CLK_CORE>,
1146 <&clkgen JH7110_AUDIO_ROOT>,
1147 <&clkgen JH7110_MCLK_INNER>,
1148 <&mclk_ext>, <&clkgen JH7110_MCLK>;
1149 clock-names = "spdif-apb", "spdif-core",
1150 "audroot", "mclk_inner",
1152 resets = <&rstgen RSTN_U0_CDNS_SPDIF_APB>;
1153 reset-names = "rst_apb";
1155 interrupt-names = "tx";
1156 #sound-dai-cells = <0>;
1157 status = "disabled";
1160 pwmdac: pwmdac@100b0000 {
1161 compatible = "starfive,jh7110-pwmdac";
1162 reg = <0x0 0x100b0000 0x0 0x1000>;
1163 clocks = <&clkgen JH7110_APB0>,
1164 <&clkgen JH7110_PWMDAC_CLK_APB>,
1165 <&clkgen JH7110_PWMDAC_CLK_CORE>;
1166 clock-names = "apb0", "pwmdac-apb", "pwmdac-core";
1167 resets = <&rstgen RSTN_U0_PWMDAC_APB>;
1168 reset-names = "rst-apb";
1171 #sound-dai-cells = <0>;
1172 status = "disabled";
1175 i2stx: i2stx@100c0000 {
1176 compatible = "snps,designware-i2stx";
1177 reg = <0x0 0x100c0000 0x0 0x1000>;
1178 interrupt-names = "tx";
1179 #sound-dai-cells = <0>;
1182 status = "disabled";
1186 compatible = "starfive,jh7110-pdm";
1187 reg = <0x0 0x100d0000 0x0 0x1000>;
1189 clocks = <&clkgen JH7110_PDM_CLK_DMIC>,
1190 <&clkgen JH7110_APB0>,
1191 <&clkgen JH7110_PDM_CLK_APB>,
1192 <&clkgen JH7110_MCLK>,
1194 clock-names = "pdm_mclk", "clk_apb0",
1195 "pdm_apb", "clk_mclk",
1197 resets = <&rstgen RSTN_U0_PDM_4MIC_DMIC>,
1198 <&rstgen RSTN_U0_PDM_4MIC_APB>;
1199 reset-names = "pdm_dmic", "pdm_apb";
1200 #sound-dai-cells = <0>;
1203 i2srx_mst: i2srx_mst@100e0000 {
1204 compatible = "starfive,jh7110-i2srx-master";
1205 reg = <0x0 0x100e0000 0x0 0x1000>;
1206 clocks = <&clkgen JH7110_APB0>,
1207 <&clkgen JH7110_I2SRX0_3CH_CLK_APB>,
1208 <&clkgen JH7110_I2SRX_3CH_BCLK_MST>,
1209 <&clkgen JH7110_I2SRX_3CH_LRCK_MST>,
1210 <&clkgen JH7110_I2SRX0_3CH_BCLK>,
1211 <&clkgen JH7110_I2SRX0_3CH_LRCK>;
1212 clock-names = "apb0", "i2srx_apb",
1213 "i2srx_bclk_mst", "i2srx_lrck_mst",
1214 "i2srx_bclk", "i2srx_lrck";
1215 resets = <&rstgen RSTN_U0_I2SRX_3CH_APB>,
1216 <&rstgen RSTN_U0_I2SRX_3CH_BCLK>;
1217 reset-names = "rst_apb_rx", "rst_bclk_rx";
1220 starfive,sys-syscon = <&sys_syscon 0x18 0x34>;
1221 #sound-dai-cells = <0>;
1222 status = "disabled";
1225 i2srx_3ch: i2srx_3ch@100e0000 {
1226 compatible = "starfive,jh7110-i2srx", "snps,designware-i2s";
1227 reg = <0x0 0x100e0000 0x0 0x1000>;
1228 clocks = <&clkgen JH7110_APB0>,
1229 <&clkgen JH7110_I2SRX0_3CH_CLK_APB>,
1230 <&clkgen JH7110_AUDIO_ROOT>,
1231 <&clkgen JH7110_MCLK_INNER>,
1232 <&clkgen JH7110_I2SRX_3CH_BCLK_MST>,
1233 <&clkgen JH7110_I2SRX_3CH_LRCK_MST>,
1234 <&clkgen JH7110_I2SRX0_3CH_BCLK>,
1235 <&clkgen JH7110_I2SRX0_3CH_LRCK>,
1236 <&clkgen JH7110_MCLK>,
1239 clock-names = "apb0", "3ch-apb",
1240 "audioroot", "mclk-inner",
1241 "bclk_mst", "3ch-lrck",
1242 "rx-bclk", "rx-lrck",
1245 resets = <&rstgen RSTN_U0_I2SRX_3CH_APB>,
1246 <&rstgen RSTN_U0_I2SRX_3CH_BCLK>;
1249 starfive,sys-syscon = <&sys_syscon 0x18 0x34>;
1250 #sound-dai-cells = <0>;
1251 status = "disabled";
1254 i2stx_4ch0: i2stx_4ch0@120b0000 {
1255 compatible = "starfive,jh7110-i2stx-4ch0", "snps,designware-i2s";
1256 reg = <0x0 0x120b0000 0x0 0x1000>;
1257 clocks = <&clkgen JH7110_MCLK_INNER>,
1258 <&clkgen JH7110_I2STX_4CH0_BCLK_MST>,
1259 <&clkgen JH7110_I2STX_4CH0_LRCK_MST>,
1260 <&clkgen JH7110_MCLK>,
1261 <&clkgen JH7110_I2STX0_4CHBCLK>,
1262 <&clkgen JH7110_I2STX0_4CHLRCK>,
1263 <&clkgen JH7110_I2STX0_4CHCLK_APB>,
1265 clock-names = "inner", "bclk-mst",
1268 "i2s_apb", "mclk_ext";
1269 resets = <&rstgen RSTN_U0_I2STX_4CH_APB>,
1270 <&rstgen RSTN_U0_I2STX_4CH_BCLK>;
1271 reset-names = "rst_apb", "rst_bclk";
1274 #sound-dai-cells = <0>;
1275 status = "disabled";
1278 i2stx_4ch1: i2stx_4ch1@120c0000 {
1279 compatible = "starfive,jh7110-i2stx-4ch1", "snps,designware-i2s";
1280 reg = <0x0 0x120c0000 0x0 0x1000>;
1281 clocks = <&clkgen JH7110_AUDIO_ROOT>,
1282 <&clkgen JH7110_MCLK_INNER>,
1283 <&clkgen JH7110_I2STX_4CH1_BCLK_MST>,
1284 <&clkgen JH7110_I2STX_4CH1_LRCK_MST>,
1285 <&clkgen JH7110_MCLK>,
1286 <&clkgen JH7110_I2STX1_4CHBCLK>,
1287 <&clkgen JH7110_I2STX1_4CHLRCK>,
1288 <&clkgen JH7110_MCLK_OUT>,
1289 <&clkgen JH7110_APB0>,
1290 <&clkgen JH7110_I2STX1_4CHCLK_APB>,
1294 clock-names = "audroot", "mclk_inner", "bclk_mst",
1295 "lrck_mst", "mclk", "4chbclk",
1296 "4chlrck", "mclk_out",
1298 "mclk_ext", "bclk_ext", "lrck_ext";
1299 resets = <&rstgen RSTN_U1_I2STX_4CH_APB>,
1300 <&rstgen RSTN_U1_I2STX_4CH_BCLK>;
1303 #sound-dai-cells = <0>;
1304 status = "disabled";
1308 compatible = "starfive,jh7110-pwm";
1309 reg = <0x0 0x120d0000 0x0 0x10000>;
1310 reg-names = "control";
1311 clocks = <&clkgen JH7110_PWM_CLK_APB>;
1312 resets = <&rstgen RSTN_U0_PWM_8CH_APB>;
1313 starfive,approx-freq = <2000000>;
1315 starfive,npwm = <8>;
1316 status = "disabled";
1319 spdif_transmitter: spdif_transmitter {
1320 compatible = "linux,spdif-dit";
1321 #sound-dai-cells = <0>;
1322 status = "disabled";
1325 pwmdac_codec: pwmdac-transmitter {
1326 compatible = "starfive,jh7110-pwmdac-dit";
1327 #sound-dai-cells = <0>;
1328 status = "disabled";
1331 dmic_codec: dmic_codec {
1332 compatible = "dmic-codec";
1333 #sound-dai-cells = <0>;
1334 status = "disabled";
1337 spi0: spi@10060000 {
1338 compatible = "arm,pl022", "arm,primecell";
1339 reg = <0x0 0x10060000 0x0 0x10000>;
1340 clocks = <&clkgen JH7110_SPI0_CLK_APB>;
1341 clock-names = "apb_pclk";
1342 resets = <&rstgen RSTN_U0_SSP_SPI_APB>;
1343 reset-names = "rst_apb";
1345 /* shortage of dma channel that not be used */
1346 /*dmas = <&dma 14 1>, <&dma 15 1>;*/
1347 /*dma-names = "rx","tx";*/
1348 arm,primecell-periphid = <0x00041022>;
1350 #address-cells = <1>;
1352 status = "disabled";
1355 spi1: spi@10070000 {
1356 compatible = "arm,pl022", "arm,primecell";
1357 reg = <0x0 0x10070000 0x0 0x10000>;
1358 clocks = <&clkgen JH7110_SPI1_CLK_APB>;
1359 clock-names = "apb_pclk";
1360 resets = <&rstgen RSTN_U1_SSP_SPI_APB>;
1361 reset-names = "rst_apb";
1363 /* shortage of dma channel that not be used */
1364 /*dmas = <&dma 16 1>, <&dma 17 1>;*/
1365 /*dma-names = "rx","tx";*/
1366 arm,primecell-periphid = <0x00041022>;
1368 #address-cells = <1>;
1370 status = "disabled";
1373 spi2: spi@10080000 {
1374 compatible = "arm,pl022", "arm,primecell";
1375 reg = <0x0 0x10080000 0x0 0x10000>;
1376 clocks = <&clkgen JH7110_SPI2_CLK_APB>;
1377 clock-names = "apb_pclk";
1378 resets = <&rstgen RSTN_U2_SSP_SPI_APB>;
1379 reset-names = "rst_apb";
1381 /* shortage of dma channel that not be used */
1382 /*dmas = <&dma 18 1>, <&dma 19 1>;*/
1383 /*dma-names = "rx","tx";*/
1384 arm,primecell-periphid = <0x00041022>;
1386 #address-cells = <1>;
1388 status = "disabled";
1391 spi3: spi@12070000 {
1392 compatible = "arm,pl022", "arm,primecell";
1393 reg = <0x0 0x12070000 0x0 0x10000>;
1394 clocks = <&clkgen JH7110_SPI3_CLK_APB>;
1395 clock-names = "apb_pclk";
1396 resets = <&rstgen RSTN_U3_SSP_SPI_APB>;
1397 reset-names = "rst_apb";
1399 /* shortage of dma channel that not be used */
1400 /*dmas = <&dma 39 1>, <&dma 40 1>;*/
1401 /*dma-names = "rx","tx";*/
1402 arm,primecell-periphid = <0x00041022>;
1404 #address-cells = <1>;
1406 status = "disabled";
1409 spi4: spi@12080000 {
1410 compatible = "arm,pl022", "arm,primecell";
1411 reg = <0x0 0x12080000 0x0 0x10000>;
1412 clocks = <&clkgen JH7110_SPI4_CLK_APB>;
1413 clock-names = "apb_pclk";
1414 resets = <&rstgen RSTN_U4_SSP_SPI_APB>;
1415 reset-names = "rst_apb";
1417 /* shortage of dma channel that not be used */
1418 /*dmas = <&dma 41 1>, <&dma 42 1>;*/
1419 /*dma-names = "rx","tx";*/
1420 arm,primecell-periphid = <0x00041022>;
1422 #address-cells = <1>;
1424 status = "disabled";
1427 spi5: spi@12090000 {
1428 compatible = "arm,pl022", "arm,primecell";
1429 reg = <0x0 0x12090000 0x0 0x10000>;
1430 clocks = <&clkgen JH7110_SPI5_CLK_APB>;
1431 clock-names = "apb_pclk";
1432 resets = <&rstgen RSTN_U5_SSP_SPI_APB>;
1433 reset-names = "rst_apb";
1435 /* shortage of dma channel that not be used */
1436 /*dmas = <&dma 43 1>, <&dma 44 1>;*/
1437 /*dma-names = "rx","tx";*/
1438 arm,primecell-periphid = <0x00041022>;
1440 #address-cells = <1>;
1442 status = "disabled";
1445 spi6: spi@120A0000 {
1446 compatible = "arm,pl022", "arm,primecell";
1447 reg = <0x0 0x120A0000 0x0 0x10000>;
1448 clocks = <&clkgen JH7110_SPI6_CLK_APB>;
1449 clock-names = "apb_pclk";
1450 resets = <&rstgen RSTN_U6_SSP_SPI_APB>;
1451 reset-names = "rst_apb";
1453 /* shortage of dma channel that not be used */
1454 /*dmas = <&dma 45 1>, <&dma 46 1>;*/
1455 /*dma-names = "rx","tx";*/
1456 arm,primecell-periphid = <0x00041022>;
1458 #address-cells = <1>;
1460 status = "disabled";
1463 pcie0: pcie@2B000000 {
1464 compatible = "starfive,jh7110-pcie","plda,pci-xpressrich3-axi";
1465 #address-cells = <3>;
1467 #interrupt-cells = <1>;
1468 reg = <0x0 0x2B000000 0x0 0x1000000
1469 0x9 0x40000000 0x0 0x10000000>;
1470 reg-names = "reg", "config";
1471 device_type = "pci";
1472 starfive,stg-syscon = <&stg_syscon 0xc0 0xc4 0x130 0x1b8>;
1473 bus-range = <0x0 0xff>;
1474 ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>,
1475 <0xc3000000 0x9 0x00000000 0x9 0x00000000 0x0 0x40000000>;
1476 msi-parent = <&plic>;
1478 interrupt-controller;
1479 interrupt-names = "msi";
1480 interrupt-parent = <&plic>;
1481 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1482 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1483 <0x0 0x0 0x0 0x2 &plic 0x2>,
1484 <0x0 0x0 0x0 0x3 &plic 0x3>,
1485 <0x0 0x0 0x0 0x4 &plic 0x4>;
1486 resets = <&rstgen RSTN_U0_PLDA_PCIE_AXI_MST0>,
1487 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV0>,
1488 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV>,
1489 <&rstgen RSTN_U0_PLDA_PCIE_BRG>,
1490 <&rstgen RSTN_U0_PLDA_PCIE_CORE>,
1491 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
1492 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1493 "rst_brg", "rst_core", "rst_apb";
1494 clocks = <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1495 <&clkgen JH7110_PCIE0_CLK_TL>,
1496 <&clkgen JH7110_PCIE0_CLK_AXI_MST0>,
1497 <&clkgen JH7110_PCIE0_CLK_APB>;
1498 clock-names = "noc", "tl", "axi_mst0", "apb";
1499 status = "disabled";
1502 pcie1: pcie@2C000000 {
1503 compatible = "starfive,jh7110-pcie","plda,pci-xpressrich3-axi";
1504 #address-cells = <3>;
1506 #interrupt-cells = <1>;
1507 reg = <0x0 0x2C000000 0x0 0x1000000
1508 0x9 0xc0000000 0x0 0x10000000>;
1509 reg-names = "reg", "config";
1510 device_type = "pci";
1511 starfive,stg-syscon = <&stg_syscon 0x270 0x274 0x2e0 0x368>;
1512 bus-range = <0x0 0xff>;
1513 ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>,
1514 <0xc3000000 0x9 0x80000000 0x9 0x80000000 0x0 0x40000000>;
1515 msi-parent = <&plic>;
1517 interrupt-controller;
1518 interrupt-names = "msi";
1519 interrupt-parent = <&plic>;
1520 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1521 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1522 <0x0 0x0 0x0 0x2 &plic 0x2>,
1523 <0x0 0x0 0x0 0x3 &plic 0x3>,
1524 <0x0 0x0 0x0 0x4 &plic 0x4>;
1525 resets = <&rstgen RSTN_U1_PLDA_PCIE_AXI_MST0>,
1526 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV0>,
1527 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV>,
1528 <&rstgen RSTN_U1_PLDA_PCIE_BRG>,
1529 <&rstgen RSTN_U1_PLDA_PCIE_CORE>,
1530 <&rstgen RSTN_U1_PLDA_PCIE_APB>;
1531 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1532 "rst_brg", "rst_core", "rst_apb";
1533 clocks = <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1534 <&clkgen JH7110_PCIE1_CLK_TL>,
1535 <&clkgen JH7110_PCIE1_CLK_AXI_MST0>,
1536 <&clkgen JH7110_PCIE1_CLK_APB>;
1537 clock-names = "noc", "tl", "axi_mst0", "apb";
1538 status = "disabled";
1541 mailbox_contrl0: mailbox@0 {
1542 compatible = "starfive,mail_box";
1543 reg = <0x0 0x13060000 0x0 0x0001000>;
1544 clocks = <&clkgen JH7110_MAILBOX_CLK_APB>;
1545 clock-names = "clk_apb";
1546 resets = <&rstgen RSTN_U0_MAILBOX_RRESETN>;
1547 reset-names = "mbx_rre";
1548 interrupts = <26 27>;
1550 status = "disabled";
1553 mailbox_client0: mailbox_client@0 {
1554 compatible = "starfive,mailbox-test";
1555 mbox-names = "rx", "tx";
1556 mboxes = <&mailbox_contrl0 0 1>,<&mailbox_contrl0 1 0>;
1557 status = "disabled";
1560 display: display-subsystem {
1561 compatible = "starfive,jh7110-display","verisilicon,display-subsystem";
1562 ports = <&dc_out_dpi0>;
1563 status = "disabled";
1566 dssctrl: dssctrl@295B0000 {
1567 compatible = "starfive,jh7110-dssctrl","verisilicon,dss-ctrl", "syscon";
1568 reg = <0 0x295B0000 0 0x90>;
1571 tda988x_pin: tda988x_pin {
1572 compatible = "starfive,tda998x_rgb_pin";
1573 status = "disabled";
1576 rgb_output: rgb-output {
1577 compatible = "starfive,jh7110-rgb_output","verisilicon,rgb-encoder";
1578 //verisilicon,dss-syscon = <&dssctrl>;
1579 //verisilicon,mux-mask = <0x70 0x380>;
1580 //verisilicon,mux-val = <0x40 0x280>;
1581 status = "disabled";
1584 dc8200: dc8200@29400000 {
1585 compatible = "starfive,jh7110-dc8200","verisilicon,dc8200";
1586 verisilicon,dss-syscon = <&dssctrl>;//20220624 panel syscon
1587 reg = <0x0 0x29400000 0x0 0x100>,
1588 <0x0 0x29400800 0x0 0x2000>,
1589 <0x0 0x17030000 0x0 0x1000>;
1591 status = "disabled";
1592 clocks = <&clkgen JH7110_NOC_BUS_CLK_DISP_AXI>,
1593 <&clkgen JH7110_VOUT_SRC>,
1594 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AXI>,
1595 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AHB>,
1596 <&clkvout JH7110_U0_DC8200_CLK_PIX0>,
1597 <&clkvout JH7110_U0_DC8200_CLK_PIX1>,
1598 <&clkvout JH7110_U0_DC8200_CLK_AXI>,
1599 <&clkvout JH7110_U0_DC8200_CLK_CORE>,
1600 <&clkvout JH7110_U0_DC8200_CLK_AHB>,
1601 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AXI>,
1602 <&clkvout JH7110_DOM_VOUT_TOP_LCD_CLK>,
1603 <&hdmitx0_pixelclk>,
1604 <&clkvout JH7110_DC8200_PIX0>,
1605 <&clkvout JH7110_U0_DC8200_CLK_PIX0_OUT>,
1606 <&clkvout JH7110_U0_DC8200_CLK_PIX1_OUT>;
1607 clock-names = "noc_disp","vout_src",
1608 "top_vout_axi","top_vout_ahb",
1609 "pix_clk","vout_pix1",
1610 "axi_clk","core_clk","vout_ahb",
1611 "vout_top_axi","vout_top_lcd","hdmitx0_pixelclk","dc8200_pix0",
1612 "dc8200_pix0_out","dc8200_pix1_out";
1613 resets = <&rstgen RSTN_U0_DOM_VOUT_TOP_SRC>,
1614 <&rstgen RSTN_U0_DC8200_AXI>,
1615 <&rstgen RSTN_U0_DC8200_AHB>,
1616 <&rstgen RSTN_U0_DC8200_CORE>,
1617 <&rstgen RSTN_U0_NOC_BUS_DISP_AXI_N>;
1618 reset-names = "rst_vout_src","rst_axi","rst_ahb","rst_core",
1622 dsi_output: dsi-output {
1623 compatible = "starfive,jh7110-display-encoder","verisilicon,dsi-encoder";
1624 status = "disabled";
1627 mipi_dphy: mipi-dphy@295e0000{
1628 compatible = "starfive,jh7110-mipi-dphy-tx","m31,mipi-dphy-tx";
1629 reg = <0x0 0x295e0000 0x0 0x10000>;
1630 clocks = <&clkvout JH7110_U0_MIPITX_DPHY_CLK_TXESC>;
1631 clock-names = "dphy_txesc";
1632 resets = <&rstgen RSTN_U0_MIPITX_DPHY_SYS>,
1633 <&rstgen RSTN_U0_MIPITX_DPHY_TXBYTEHS>;
1634 reset-names = "dphy_sys", "dphy_txbytehs";
1636 status = "disabled";
1639 mipi_dsi: mipi@295d0000 {
1640 compatible = "starfive,jh7110-mipi_dsi","cdns,dsi";
1641 reg = <0x0 0x295d0000 0x0 0x10000>;
1644 clocks = <&clkvout JH7110_U0_CDNS_DSITX_CLK_SYS>,
1645 <&clkvout JH7110_U0_CDNS_DSITX_CLK_APB>,
1646 <&clkvout JH7110_U0_CDNS_DSITX_CLK_TXESC>,
1647 <&clkvout JH7110_U0_CDNS_DSITX_CLK_DPI>;
1648 clock-names = "sys", "apb", "txesc", "dpi";
1649 resets = <&rstgen RSTN_U0_CDNS_DSITX_DPI>,
1650 <&rstgen RSTN_U0_CDNS_DSITX_APB>,
1651 <&rstgen RSTN_U0_CDNS_DSITX_RXESC>,
1652 <&rstgen RSTN_U0_CDNS_DSITX_SYS>,
1653 <&rstgen RSTN_U0_CDNS_DSITX_TXBYTEHS>,
1654 <&rstgen RSTN_U0_CDNS_DSITX_TXESC>;
1655 reset-names = "dsi_dpi", "dsi_apb", "dsi_rxesc",
1656 "dsi_sys", "dsi_txbytehs", "dsi_txesc";
1657 phys = <&mipi_dphy>;
1659 status = "disabled";
1663 hdmi: hdmi@29590000 {
1664 compatible = "starfive,jh7110-hdmi","inno,hdmi";
1665 reg = <0x0 0x29590000 0x0 0x4000>;
1667 /*interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;*/
1668 /*clocks = <&cru PCLK_HDMI>;*/
1669 /*clock-names = "pclk";*/
1670 /*pinctrl-names = "default";*/
1671 /*pinctrl-0 = <&hdmi_ctl>;*/
1672 status = "disabled";
1673 clocks = <&clkvout JH7110_U0_HDMI_TX_CLK_SYS>,
1674 <&clkvout JH7110_U0_HDMI_TX_CLK_MCLK>,
1675 <&clkvout JH7110_U0_HDMI_TX_CLK_BCLK>,
1676 <&hdmitx0_pixelclk>;
1677 clock-names = "sysclk", "mclk","bclk","pclk";
1678 resets = <&rstgen RSTN_U0_HDMI_TX_HDMI>;
1679 reset-names = "hdmi_tx";
1680 #sound-dai-cells = <0>;
1684 compatible = "simple-audio-card";
1685 simple-audio-card,name = "Starfive-AC108-Sound-Card";
1686 #address-cells = <1>;
1691 compatible = "simple-audio-card";
1692 simple-audio-card,name = "Starfive-HDMI-Sound-Card";
1693 #address-cells = <1>;
1698 compatible = "simple-audio-card";
1699 simple-audio-card,name = "Starfive-PDM-Sound-Card";
1700 #address-cells = <1>;
1705 compatible = "simple-audio-card";
1706 simple-audio-card,name = "Starfive-PWMDAC-Sound-Card";
1707 #address-cells = <1>;
1712 compatible = "simple-audio-card";
1713 simple-audio-card,name = "Starfive-SPDIF-Sound-Card";
1714 #address-cells = <1>;
1719 compatible = "simple-audio-card";
1720 simple-audio-card,name = "Starfive-TDM-Sound-Card";
1721 #address-cells = <1>;
1726 compatible = "simple-audio-card";
1727 simple-audio-card,name = "Starfive-WM8960-Sound-Card";
1728 #address-cells = <1>;
1733 compatible = "starfive,e24";
1734 reg = <0x0 0xc0110000 0x0 0x00001000>,
1735 <0x0 0xc0111000 0x0 0x0001f000>;
1736 reg-names = "ecmd", "espace";
1737 clocks = <&clkgen JH7110_E2_RTC_CLK>,
1738 <&clkgen JH7110_E2_CLK_CORE>,
1739 <&clkgen JH7110_E2_CLK_DBG>;
1740 clock-names = "clk_rtc", "clk_core", "clk_dbg";
1741 resets = <&rstgen RSTN_U0_E24_CORE>;
1742 reset-names = "e24_core";
1743 starfive,stg-syscon = <&stg_syscon>;
1744 interrupt-parent = <&plic>;
1745 firmware-name = "e24_elf";
1747 mbox-names = "tx", "rx";
1748 mboxes = <&mailbox_contrl0 0 2>,<&mailbox_contrl0 2 0>;
1749 #address-cells = <1>;
1751 ranges = <0xc0000000 0x0 0xc0000000 0x200000>;
1752 status = "disabled";
1757 compatible = "cdns,xrp";
1758 reg = <0x0 0x10230000 0x0 0x00010000
1759 0x0 0x10240000 0x0 0x00010000>;
1760 memory-region = <&xrp_reserved>;
1761 clocks = <&clkgen JH7110_HIFI4_CLK_CORE>;
1762 clock-names = "core_clk";
1763 resets = <&rstgen RSTN_U0_HIFI4_CORE>,
1764 <&rstgen RSTN_U0_HIFI4_AXI>;
1765 reset-names = "rst_core","rst_axi";
1766 starfive,stg-syscon = <&stg_syscon>;
1767 firmware-name = "hifi4_elf";
1768 #address-cells = <1>;
1770 ranges = <0x40000000 0x0 0x20000000 0x040000
1771 0xf0000000 0x0 0xf0000000 0x03000000>;
1772 status = "disabled";
1777 starfive_cpufreq: starfive,jh7110-cpufreq {
1778 compatible = "starfive,jh7110-cpufreq";
1779 clocks = <&clkgen JH7110_CPU_CORE>;
1780 clock-names = "cpu_clk";