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>
16 compatible = "starfive,jh7110";
20 cluster0_opp: opp-table-0 {
21 compatible = "operating-points-v2";
24 opp-hz = /bits/ 64 <375000000>;
25 opp-microvolt = <880000>;
28 opp-hz = /bits/ 64 <500000000>;
29 opp-microvolt = <880000>;
32 opp-hz = /bits/ 64 <750000000>;
33 opp-microvolt = <880000>;
36 opp-hz = /bits/ 64 <1500000000>;
37 opp-microvolt = <1000000>;
46 compatible = "sifive,u74-mc", "riscv";
48 d-cache-block-size = <64>;
50 d-cache-size = <8192>;
54 i-cache-block-size = <64>;
56 i-cache-size = <16384>;
59 mmu-type = "riscv,sv39";
60 cpu-idle-states = <&CPU_NONRET_0_0>;
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 cpu-idle-states = <&CPU_NONRET_0_0>;
89 next-level-cache = <&cachectrl>;
90 riscv,isa = "rv64imafdc";
93 operating-points-v2 = <&cluster0_opp>;
95 cpu1intctrl: interrupt-controller {
96 #interrupt-cells = <1>;
97 compatible = "riscv,cpu-intc";
103 compatible = "sifive,u74-mc", "riscv";
105 d-cache-block-size = <64>;
107 d-cache-size = <32768>;
111 i-cache-block-size = <64>;
113 i-cache-size = <32768>;
116 mmu-type = "riscv,sv39";
117 cpu-idle-states = <&CPU_NONRET_0_0>;
118 next-level-cache = <&cachectrl>;
119 riscv,isa = "rv64imafdc";
122 operating-points-v2 = <&cluster0_opp>;
124 cpu2intctrl: 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 cpu-idle-states = <&CPU_NONRET_0_0>;
147 next-level-cache = <&cachectrl>;
148 riscv,isa = "rv64imafdc";
151 operating-points-v2 = <&cluster0_opp>;
153 cpu3intctrl: interrupt-controller {
154 #interrupt-cells = <1>;
155 compatible = "riscv,cpu-intc";
156 interrupt-controller;
161 compatible = "sifive,u74-mc", "riscv";
163 d-cache-block-size = <64>;
165 d-cache-size = <32768>;
169 i-cache-block-size = <64>;
171 i-cache-size = <32768>;
174 mmu-type = "riscv,sv39";
175 cpu-idle-states = <&CPU_NONRET_0_0>;
176 next-level-cache = <&cachectrl>;
177 riscv,isa = "rv64imafdc";
180 operating-points-v2 = <&cluster0_opp>;
182 cpu4intctrl: interrupt-controller {
183 #interrupt-cells = <1>;
184 compatible = "riscv,cpu-intc";
185 interrupt-controller;
191 CPU_NONRET_0_0: cpu-nonretentive-0-0 {
192 compatible = "riscv,idle-state";
193 riscv,sbi-suspend-param = <0x80000000>;
194 entry-latency-us = <600>;
195 exit-latency-us = <1100>;
196 min-residency-us = <2700>;
197 wakeup-latency-us = <1500>;
202 compatible = "simple-bus";
203 interrupt-parent = <&plic>;
204 #address-cells = <2>;
209 cachectrl: cache-controller@2010000 {
210 compatible = "sifive,fu740-c000-ccache", "cache";
211 reg = <0x0 0x2010000 0x0 0x4000 0x0 0x8000000 0x0 0x2000000>;
212 reg-names = "control", "sideband";
213 interrupts = <1 3 4 2>;
214 cache-block-size = <64>;
217 cache-size = <2097152>;
221 aon_syscon: aon_syscon@17010000 {
222 compatible = "syscon";
223 reg = <0x0 0x17010000 0x0 0x1000>;
226 stg_syscon: stg_syscon@10240000 {
227 compatible = "syscon";
228 reg = <0x0 0x10240000 0x0 0x1000>;
231 sys_syscon: sys_syscon@13030000 {
232 compatible = "syscon";
233 reg = <0x0 0x13030000 0x0 0x1000>;
236 clint: clint@2000000 {
237 compatible = "riscv,clint0";
238 reg = <0x0 0x2000000 0x0 0x10000>;
239 reg-names = "control";
240 interrupts-extended = <&cpu0intctrl 3 &cpu0intctrl 7
241 &cpu1intctrl 3 &cpu1intctrl 7
242 &cpu2intctrl 3 &cpu2intctrl 7
243 &cpu3intctrl 3 &cpu3intctrl 7
244 &cpu4intctrl 3 &cpu4intctrl 7>;
245 #interrupt-cells = <1>;
249 compatible = "riscv,plic0";
250 reg = <0x0 0xc000000 0x0 0x4000000>;
251 reg-names = "control";
252 interrupts-extended = <&cpu0intctrl 11
253 &cpu1intctrl 11 &cpu1intctrl 9
254 &cpu2intctrl 11 &cpu2intctrl 9
255 &cpu3intctrl 11 &cpu3intctrl 9
256 &cpu4intctrl 11 &cpu4intctrl 9>;
257 interrupt-controller;
258 #interrupt-cells = <1>;
259 riscv,max-priority = <7>;
263 clkgen: clock-controller {
264 compatible = "starfive,jh7110-clkgen";
265 reg = <0x0 0x13020000 0x0 0x10000>,
266 <0x0 0x10230000 0x0 0x10000>,
267 <0x0 0x17000000 0x0 0x10000>;
268 reg-names = "sys", "stg", "aon";
269 clocks = <&osc>, <&gmac1_rmii_refin>,
271 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
272 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
273 <&tdm_ext>, <&mclk_ext>,
274 <&jtag_tck_inner>, <&bist_apb>,
276 <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>;
277 clock-names = "osc", "gmac1_rmii_refin",
279 "i2stx_bclk_ext", "i2stx_lrck_ext",
280 "i2srx_bclk_ext", "i2srx_lrck_ext",
281 "tdm_ext", "mclk_ext",
282 "jtag_tck_inner", "bist_apb",
284 "gmac0_rmii_refin", "gmac0_rgmii_rxin";
286 starfive,sys-syscon = <&sys_syscon 0x18 0x1c
287 0x20 0x24 0x28 0x2c 0x30 0x34>;
291 clkvout: clock-controller@295C0000 {
292 compatible = "starfive,jh7110-clk-vout";
293 reg = <0x0 0x295C0000 0x0 0x10000>;
295 clocks = <&hdmitx0_pixelclk>,
296 <&mipitx_dphy_rxesc>,
297 <&mipitx_dphy_txbytehs>,
298 <&clkgen JH7110_VOUT_SRC>,
299 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AHB>;
300 clock-names = "hdmitx0_pixelclk",
302 "mipitx_dphy_txbytehs",
305 resets = <&rstgen RSTN_U0_DOM_VOUT_TOP_SRC>;
306 reset-names = "vout_src";
308 power-domains = <&pwrc JH7110_PD_VOUT>;
312 clkisp: clock-controller@19810000 {
313 compatible = "starfive,jh7110-clk-isp";
314 reg = <0x0 0x19810000 0x0 0x10000>;
317 clocks = <&clkgen JH7110_ISP_TOP_CLK_DVP>,
318 <&clkgen JH7110_ISP_TOP_CLK_ISPCORE_2X>,
319 <&clkgen JH7110_ISP_TOP_CLK_ISP_AXI>,
320 <&clkgen JH7110_NOC_BUS_CLK_ISP_AXI>;
321 clock-names = "u0_dom_isp_top_clk_dom_isp_top_clk_dvp",
322 "u0_dom_isp_top_clk_dom_isp_top_clk_ispcore_2x",
323 "u0_dom_isp_top_clk_dom_isp_top_clk_isp_axi",
324 "u0_sft7110_noc_bus_clk_isp_axi";
325 resets = <&rstgen RSTN_U0_DOM_ISP_TOP_N>,
326 <&rstgen RSTN_U0_DOM_ISP_TOP_AXI>,
327 <&rstgen RSTN_U0_NOC_BUS_ISP_AXI_N>;
328 reset-names = "rst_isp_top_n", "rst_isp_top_axi",
330 power-domains = <&pwrc JH7110_PD_ISP>;
335 compatible = "cdns,qspi-nor";
336 #address-cells = <1>;
338 reg = <0x0 0x13010000 0x0 0x10000
339 0x0 0x21000000 0x0 0x400000>;
340 clocks = <&clkgen JH7110_QSPI_CLK_REF>;
341 clock-names = "clk_ref";
342 resets = <&rstgen RSTN_U0_CDNS_QSPI_APB>,
343 <&rstgen RSTN_U0_CDNS_QSPI_AHB>,
344 <&rstgen RSTN_U0_CDNS_QSPI_REF>;
345 resets-names = "rst_apb", "rst_ahb", "rst_ref";
346 cdns,fifo-depth = <256>;
347 cdns,fifo-width = <4>;
348 spi-max-frequency = <250000000>;
350 nor_flash: nor-flash@0 {
351 compatible = "jedec,spi-nor";
353 spi-max-frequency = <100000000>;
362 compatible = "starfive,jh7110-otp";
363 reg = <0x0 0x17050000 0x0 0x10000>;
364 clock-frequency = <4000000>;
365 clocks = <&clkgen JH7110_OTPC_CLK_APB>;
370 compatible = "starfive,jh7110-cdns3";
371 reg = <0x0 0x10210000 0x0 0x1000>,
372 <0x0 0x10200000 0x0 0x1000>;
373 clocks = <&clkgen JH7110_USB_125M>,
374 <&clkgen JH7110_USB0_CLK_APP_125>,
375 <&clkgen JH7110_USB0_CLK_LPM>,
376 <&clkgen JH7110_USB0_CLK_STB>,
377 <&clkgen JH7110_USB0_CLK_USB_APB>,
378 <&clkgen JH7110_USB0_CLK_AXI>,
379 <&clkgen JH7110_USB0_CLK_UTMI_APB>,
380 <&clkgen JH7110_PCIE0_CLK_APB>;
381 clock-names = "125m","app","lpm","stb","apb","axi","utmi", "phy";
382 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
383 <&rstgen RSTN_U0_CDN_USB_APB>,
384 <&rstgen RSTN_U0_CDN_USB_AXI>,
385 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>,
386 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
387 reset-names = "pwrup","apb","axi","utmi", "phy";
388 starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>;
389 starfive,sys-syscon = <&sys_syscon 0x18>;
391 #address-cells = <2>;
393 #interrupt-cells = <1>;
395 usbdrd_cdns3: usb@10100000 {
396 compatible = "cdns,usb3";
397 reg = <0x0 0x10100000 0x0 0x10000>,
398 <0x0 0x10110000 0x0 0x10000>,
399 <0x0 0x10120000 0x0 0x10000>;
400 reg-names = "otg", "xhci", "dev";
401 interrupts = <100>, <108>, <110>;
402 interrupt-names = "host", "peripheral", "otg";
403 phy-names = "cdns3,usb3-phy", "cnds3,usb2-phy";
404 maximum-speed = "super-speed";
408 timer: timer@13050000 {
409 compatible = "starfive,jh7110-timers";
410 reg = <0x0 0x13050000 0x0 0x10000>;
411 interrupts = <69>, <70>, <71> ,<72>;
412 interrupt-names = "timer0", "timer1",
414 clocks = <&clkgen JH7110_TIMER_CLK_TIMER0>,
415 <&clkgen JH7110_TIMER_CLK_TIMER1>,
416 <&clkgen JH7110_TIMER_CLK_TIMER2>,
417 <&clkgen JH7110_TIMER_CLK_TIMER3>,
418 <&clkgen JH7110_TIMER_CLK_APB>;
419 clock-names = "timer0", "timer1",
420 "timer2", "timer3", "apb_clk";
421 resets = <&rstgen RSTN_U0_TIMER_TIMER0>,
422 <&rstgen RSTN_U0_TIMER_TIMER1>,
423 <&rstgen RSTN_U0_TIMER_TIMER2>,
424 <&rstgen RSTN_U0_TIMER_TIMER3>,
425 <&rstgen RSTN_U0_TIMER_APB>;
426 reset-names = "timer0", "timer1",
427 "timer2", "timer3", "apb_rst";
428 clock-frequency = <24000000>;
432 wdog: wdog@13070000 {
433 compatible = "starfive,jh7110-wdt";
434 reg = <0x0 0x13070000 0x0 0x10000>;
436 interrupt-names = "wdog";
437 clocks = <&clkgen JH7110_DSKIT_WDT_CLK_WDT>,
438 <&clkgen JH7110_DSKIT_WDT_CLK_APB>;
439 clock-names = "core_clk", "apb_clk";
440 resets = <&rstgen RSTN_U0_DSKIT_WDT_APB>,
441 <&rstgen RSTN_U0_DSKIT_WDT_CORE>;
442 reset-names = "rst_apb", "rst_core";
448 compatible = "starfive,jh7110-rtc";
449 reg = <0x0 0x17040000 0x0 0x10000>;
450 interrupts = <10>, <11>, <12>;
451 interrupt-names = "rtc_ms_pulse", "rtc_sec_pulse", "rtc";
452 clocks = <&clkgen JH7110_RTC_HMS_CLK_APB>,
453 <&clkgen JH7110_RTC_HMS_CLK_CAL>;
454 clock-names = "pclk", "cal_clk";
455 resets = <&rstgen RSTN_U0_RTC_HMS_OSC32K>,
456 <&rstgen RSTN_U0_RTC_HMS_APB>,
457 <&rstgen RSTN_U0_RTC_HMS_CAL>;
458 reset-names = "rst_osc", "rst_apb", "rst_cal";
459 rtc,cal-clock-freq = <1000000>;
463 pwrc: power-controller@17030000 {
464 compatible = "starfive,jh7110-pmu";
465 reg = <0x0 0x17030000 0x0 0x10000>;
467 #power-domain-cells = <1>;
471 uart0: serial@10000000 {
472 compatible = "snps,dw-apb-uart";
473 reg = <0x0 0x10000000 0x0 0x10000>;
476 clocks = <&clkgen JH7110_UART0_CLK_CORE>,
477 <&clkgen JH7110_UART0_CLK_APB>;
478 clock-names = "baudclk", "apb_pclk";
479 resets = <&rstgen RSTN_U0_DW_UART_APB>,
480 <&rstgen RSTN_U0_DW_UART_CORE>;
485 uart1: serial@10010000 {
486 compatible = "snps,dw-apb-uart";
487 reg = <0x0 0x10010000 0x0 0x10000>;
490 clocks = <&clkgen JH7110_UART1_CLK_CORE>,
491 <&clkgen JH7110_UART1_CLK_APB>;
492 clock-names = "baudclk", "apb_pclk";
493 resets = <&rstgen RSTN_U1_DW_UART_APB>,
494 <&rstgen RSTN_U1_DW_UART_CORE>;
499 uart2: serial@10020000 {
500 compatible = "snps,dw-apb-uart";
501 reg = <0x0 0x10020000 0x0 0x10000>;
504 clocks = <&clkgen JH7110_UART2_CLK_CORE>,
505 <&clkgen JH7110_UART2_CLK_APB>;
506 clock-names = "baudclk", "apb_pclk";
507 resets = <&rstgen RSTN_U2_DW_UART_APB>,
508 <&rstgen RSTN_U2_DW_UART_CORE>;
513 uart3: serial@12000000 {
514 compatible = "snps,dw-apb-uart";
515 reg = <0x0 0x12000000 0x0 0x10000>;
518 clocks = <&clkgen JH7110_UART3_CLK_CORE>,
519 <&clkgen JH7110_UART3_CLK_APB>;
520 clock-names = "baudclk", "apb_pclk";
521 resets = <&rstgen RSTN_U3_DW_UART_APB>,
522 <&rstgen RSTN_U3_DW_UART_CORE>;
527 uart4: serial@12010000 {
528 compatible = "snps,dw-apb-uart";
529 reg = <0x0 0x12010000 0x0 0x10000>;
532 clocks = <&clkgen JH7110_UART4_CLK_CORE>,
533 <&clkgen JH7110_UART4_CLK_APB>;
534 clock-names = "baudclk", "apb_pclk";
535 resets = <&rstgen RSTN_U4_DW_UART_APB>,
536 <&rstgen RSTN_U4_DW_UART_CORE>;
541 uart5: serial@12020000 {
542 compatible = "snps,dw-apb-uart";
543 reg = <0x0 0x12020000 0x0 0x10000>;
546 clocks = <&clkgen JH7110_UART5_CLK_CORE>,
547 <&clkgen JH7110_UART5_CLK_APB>;
548 clock-names = "baudclk", "apb_pclk";
549 resets = <&rstgen RSTN_U5_DW_UART_APB>,
550 <&rstgen RSTN_U5_DW_UART_CORE>;
555 dma: dma-controller@16050000 {
556 compatible = "starfive,jh7110-dma", "snps,axi-dma-1.01a";
557 reg = <0x0 0x16050000 0x0 0x10000>;
558 clocks = <&clkgen JH7110_DMA1P_CLK_AXI>,
559 <&clkgen JH7110_DMA1P_CLK_AHB>;
560 clock-names = "core-clk", "cfgr-clk";
561 resets = <&rstgen RSTN_U0_DW_DMA1P_AXI>,
562 <&rstgen RSTN_U0_DW_DMA1P_AHB>;
563 reset-names = "rst_axi", "rst_ahb";
567 snps,dma-masters = <1>;
568 snps,data-width = <3>;
569 snps,num-hs-if = <56>;
570 snps,block-size = <65536 65536 65536 65536>;
571 snps,priority = <0 1 2 3>;
572 snps,axi-max-burst-len = <16>;
576 gpio: gpio@13040000 {
577 compatible = "starfive,jh7110-sys-pinctrl";
578 reg = <0x0 0x13040000 0x0 0x10000>;
579 reg-names = "control";
580 clocks = <&clkgen JH7110_SYS_IOMUX_PCLK>;
581 resets = <&rstgen RSTN_U0_SYS_IOMUX_PRESETN>;
583 interrupt-controller;
589 gpioa: gpio@17020000 {
590 compatible = "starfive,jh7110-aon-pinctrl";
591 reg = <0x0 0x17020000 0x0 0x10000>;
592 reg-names = "control";
593 resets = <&rstgen RSTN_U0_AON_IOMUX_PRESETN>;
595 interrupt-controller;
601 sfctemp: tmon@120e0000 {
602 compatible = "starfive,jh7110-temp";
603 reg = <0x0 0x120e0000 0x0 0x10000>;
605 clocks = <&clkgen JH7110_TEMP_SENSOR_CLK_TEMP>,
606 <&clkgen JH7110_TEMP_SENSOR_CLK_APB>;
607 clock-names = "sense", "bus";
608 resets = <&rstgen RSTN_U0_TEMP_SENSOR_TEMP>,
609 <&rstgen RSTN_U0_TEMP_SENSOR_APB>;
610 reset-names = "sense", "bus";
611 #thermal-sensor-cells = <0>;
617 polling-delay-passive = <250>;
618 polling-delay = <15000>;
620 thermal-sensors = <&sfctemp>;
626 cpu_alert0: cpu_alert0 {
628 temperature = <75000>;
635 temperature = <90000>;
643 trng: trng@1600C000 {
644 compatible = "starfive,jh7110-trng";
645 reg = <0x0 0x1600C000 0x0 0x4000>;
646 clocks = <&clkgen JH7110_SEC_HCLK>,
647 <&clkgen JH7110_SEC_MISCAHB_CLK>;
648 clock-names = "hclk", "miscahb_clk";
649 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
654 sec_dma: sec_dma@16008000 {
655 compatible = "arm,pl080", "arm,primecell";
656 arm,primecell-periphid = <0x00041080>;
657 reg = <0x0 0x16008000 0x0 0x4000>;
658 reg-names = "sec_dma";
660 clocks = <&clkgen JH7110_SEC_HCLK>,
661 <&clkgen JH7110_SEC_MISCAHB_CLK>;
662 clock-names = "sec_hclk","apb_pclk";
663 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
664 reset-names = "sec_hre";
665 lli-bus-interface-ahb1;
666 mem-bus-interface-ahb1;
667 memcpy-burst-size = <256>;
668 memcpy-bus-width = <32>;
673 crypto: crypto@16000000 {
674 compatible = "starfive,jh7110-sec";
675 reg = <0x0 0x16000000 0x0 0x4000>,
676 <0x0 0x16008000 0x0 0x4000>;
677 reg-names = "secreg","secdma";
678 interrupts = <28>, <29>;
679 interrupt-names = "secirq", "dmairq";
680 clocks = <&clkgen JH7110_SEC_HCLK>,
681 <&clkgen JH7110_SEC_MISCAHB_CLK>;
682 clock-names = "sec_hclk","sec_ahb";
683 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
684 reset-names = "sec_hre";
685 enable-side-channel-mitigation = "true";
687 dmas = <&sec_dma 1 2>,
689 dma-names = "sec_m","sec_p";
694 compatible = "snps,designware-i2c";
695 reg = <0x0 0x10030000 0x0 0x10000>;
696 clocks = <&clkgen JH7110_I2C0_CLK_CORE>,
697 <&clkgen JH7110_I2C0_CLK_APB>;
698 clock-names = "ref", "pclk";
699 resets = <&rstgen RSTN_U0_DW_I2C_APB>;
701 #address-cells = <1>;
707 compatible = "snps,designware-i2c";
708 reg = <0x0 0x10040000 0x0 0x10000>;
709 clocks = <&clkgen JH7110_I2C1_CLK_CORE>,
710 <&clkgen JH7110_I2C1_CLK_APB>;
711 clock-names = "ref", "pclk";
712 resets = <&rstgen RSTN_U1_DW_I2C_APB>;
714 #address-cells = <1>;
720 compatible = "snps,designware-i2c";
721 reg = <0x0 0x10050000 0x0 0x10000>;
722 clocks = <&clkgen JH7110_I2C2_CLK_CORE>,
723 <&clkgen JH7110_I2C2_CLK_APB>;
724 clock-names = "ref", "pclk";
725 resets = <&rstgen RSTN_U2_DW_I2C_APB>;
727 #address-cells = <1>;
733 compatible = "snps,designware-i2c";
734 reg = <0x0 0x12030000 0x0 0x10000>;
735 clocks = <&clkgen JH7110_I2C3_CLK_CORE>,
736 <&clkgen JH7110_I2C3_CLK_APB>;
737 clock-names = "ref", "pclk";
738 resets = <&rstgen RSTN_U3_DW_I2C_APB>;
740 #address-cells = <1>;
746 compatible = "snps,designware-i2c";
747 reg = <0x0 0x12040000 0x0 0x10000>;
748 clocks = <&clkgen JH7110_I2C4_CLK_CORE>,
749 <&clkgen JH7110_I2C4_CLK_APB>;
750 clock-names = "ref", "pclk";
751 resets = <&rstgen RSTN_U4_DW_I2C_APB>;
753 #address-cells = <1>;
759 compatible = "snps,designware-i2c";
760 reg = <0x0 0x12050000 0x0 0x10000>;
761 clocks = <&clkgen JH7110_I2C5_CLK_CORE>,
762 <&clkgen JH7110_I2C5_CLK_APB>;
763 clock-names = "ref", "pclk";
764 resets = <&rstgen RSTN_U5_DW_I2C_APB>;
766 #address-cells = <1>;
772 compatible = "snps,designware-i2c";
773 reg = <0x0 0x12060000 0x0 0x10000>;
774 clocks = <&clkgen JH7110_I2C6_CLK_CORE>,
775 <&clkgen JH7110_I2C6_CLK_APB>;
776 clock-names = "ref", "pclk";
777 resets = <&rstgen RSTN_U6_DW_I2C_APB>;
779 #address-cells = <1>;
784 /* unremovable emmc as mmcblk0 */
785 sdio0: sdio0@16010000 {
786 compatible = "starfive,jh7110-sdio";
787 reg = <0x0 0x16010000 0x0 0x10000>;
788 clocks = <&clkgen JH7110_SDIO0_CLK_AHB>,
789 <&clkgen JH7110_SDIO0_CLK_SDCARD>;
790 clock-names = "biu","ciu";
791 resets = <&rstgen RSTN_U0_DW_SDIO_AHB>;
792 reset-names = "reset";
795 fifo-watermark-aligned;
797 starfive,sys-syscon = <&sys_syscon 0x14 0x1a 0x7c000000>;
801 sdio1: sdio1@16020000 {
802 compatible = "starfive,jh7110-sdio";
803 reg = <0x0 0x16020000 0x0 0x10000>;
804 clocks = <&clkgen JH7110_SDIO1_CLK_AHB>,
805 <&clkgen JH7110_SDIO1_CLK_SDCARD>;
806 clock-names = "biu","ciu";
807 resets = <&rstgen RSTN_U1_DW_SDIO_AHB>;
808 reset-names = "reset";
811 fifo-watermark-aligned;
813 starfive,sys-syscon = <&sys_syscon 0x9c 0x1 0x3e>;
817 vin_sysctl: vin_sysctl@19800000 {
818 compatible = "starfive,jh7110-vin";
819 reg = <0x0 0x19800000 0x0 0x10000>,
820 <0x0 0x19810000 0x0 0x10000>,
821 <0x0 0x19820000 0x0 0x10000>,
822 <0x0 0x19840000 0x0 0x10000>,
823 <0x0 0x19870000 0x0 0x30000>,
824 <0x0 0x11840000 0x0 0x10000>,
825 <0x0 0x17030000 0x0 0x10000>,
826 <0x0 0x13020000 0x0 0x10000>;
827 reg-names = "csi2rx", "vclk", "vrst", "sctrl",
828 "isp", "trst", "pmu", "syscrg";
829 clocks = <&clkisp JH7110_DOM4_APB_FUNC>,
830 <&clkisp JH7110_U0_VIN_PCLK>,
831 <&clkisp JH7110_U0_VIN_SYS_CLK>,
832 <&clkisp JH7110_U0_ISPV2_TOP_WRAPPER_CLK_C>,
833 <&clkisp JH7110_DVP_INV>,
834 <&clkisp JH7110_U0_VIN_CLK_P_AXIWR>,
835 <&clkisp JH7110_MIPI_RX0_PXL>,
836 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF0>,
837 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF1>,
838 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF2>,
839 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF3>,
840 <&clkisp JH7110_U0_M31DPHY_CFGCLK_IN>,
841 <&clkisp JH7110_U0_M31DPHY_REFCLK_IN>,
842 <&clkisp JH7110_U0_M31DPHY_TXCLKESC_LAN0>,
843 <&clkgen JH7110_ISP_TOP_CLK_ISPCORE_2X>,
844 <&clkgen JH7110_ISP_TOP_CLK_ISP_AXI>;
845 clock-names = "clk_apb_func", "clk_pclk", "clk_sys_clk",
846 "clk_wrapper_clk_c", "clk_dvp_inv", "clk_axiwr",
847 "clk_mipi_rx0_pxl", "clk_pixel_clk_if0",
848 "clk_pixel_clk_if1", "clk_pixel_clk_if2",
849 "clk_pixel_clk_if3", "clk_m31dphy_cfgclk_in",
850 "clk_m31dphy_refclk_in", "clk_m31dphy_txclkesc_lan0",
851 "clk_ispcore_2x", "clk_isp_axi";
852 resets = <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_P>,
853 <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_C>,
854 <&rstgen RSTN_U0_VIN_N_PCLK>,
855 <&rstgen RSTN_U0_VIN_N_SYS_CLK>,
856 <&rstgen RSTN_U0_VIN_P_AXIRD>,
857 <&rstgen RSTN_U0_VIN_P_AXIWR>,
858 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF0>,
859 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF1>,
860 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF2>,
861 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF3>,
862 <&rstgen RSTN_U0_M31DPHY_HW>,
863 <&rstgen RSTN_U0_M31DPHY_B09_ALWAYS_ON>,
864 <&rstgen RSTN_U0_DOM_ISP_TOP_N>,
865 <&rstgen RSTN_U0_DOM_ISP_TOP_AXI>;
866 reset-names = "rst_wrapper_p", "rst_wrapper_c", "rst_pclk",
867 "rst_sys_clk", "rst_axird", "rst_axiwr", "rst_pixel_clk_if0",
868 "rst_pixel_clk_if1", "rst_pixel_clk_if2", "rst_pixel_clk_if3",
869 "rst_m31dphy_hw", "rst_m31dphy_b09_always_on",
870 "rst_isp_top_n", "rst_isp_top_axi";
871 starfive,aon-syscon = <&aon_syscon 0x00>;
872 power-domains = <&pwrc JH7110_PD_ISP>;
873 /* irq nr: vin, isp, isp_csi, isp_scd, isp_csiline */
874 interrupts = <92 87 88 89 90>;
879 compatible = "starfive,jpu";
880 reg = <0x0 0x13090000 0x0 0x300>;
882 clocks = <&clkgen JH7110_CODAJ12_CLK_AXI>,
883 <&clkgen JH7110_CODAJ12_CLK_CORE>,
884 <&clkgen JH7110_CODAJ12_CLK_APB>,
885 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
886 clock-names = "axi_clk", "core_clk",
887 "apb_clk", "noc_bus";
888 resets = <&rstgen RSTN_U0_CODAJ12_AXI>,
889 <&rstgen RSTN_U0_CODAJ12_CORE>,
890 <&rstgen RSTN_U0_CODAJ12_APB>;
891 reset-names = "rst_axi", "rst_core", "rst_apb";
892 power-domains = <&pwrc JH7110_PD_VDEC>;
896 vpu_dec: vpu_dec@130A0000 {
897 compatible = "starfive,vdec";
898 reg = <0x0 0x130A0000 0x0 0x10000>;
900 clocks = <&clkgen JH7110_WAVE511_CLK_AXI>,
901 <&clkgen JH7110_WAVE511_CLK_BPU>,
902 <&clkgen JH7110_WAVE511_CLK_VCE>,
903 <&clkgen JH7110_WAVE511_CLK_APB>,
904 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
905 clock-names = "axi_clk", "bpu_clk", "vce_clk",
906 "apb_clk", "noc_bus";
907 resets = <&rstgen RSTN_U0_WAVE511_AXI>,
908 <&rstgen RSTN_U0_WAVE511_BPU>,
909 <&rstgen RSTN_U0_WAVE511_VCE>,
910 <&rstgen RSTN_U0_WAVE511_APB>,
911 <&rstgen RSTN_U0_AXIMEM_128B_AXI>;
912 reset-names = "rst_axi", "rst_bpu", "rst_vce",
913 "rst_apb", "rst_sram";
914 starfive,vdec_noc_ctrl;
915 power-domains = <&pwrc JH7110_PD_VDEC>;
919 vpu_enc: vpu_enc@130B0000 {
920 compatible = "starfive,venc";
921 reg = <0x0 0x130B0000 0x0 0x10000>;
923 clocks = <&clkgen JH7110_WAVE420L_CLK_AXI>,
924 <&clkgen JH7110_WAVE420L_CLK_BPU>,
925 <&clkgen JH7110_WAVE420L_CLK_VCE>,
926 <&clkgen JH7110_WAVE420L_CLK_APB>,
927 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>;
928 clock-names = "axi_clk", "bpu_clk", "vce_clk",
929 "apb_clk", "noc_bus";
930 resets = <&rstgen RSTN_U0_WAVE420L_AXI>,
931 <&rstgen RSTN_U0_WAVE420L_BPU>,
932 <&rstgen RSTN_U0_WAVE420L_VCE>,
933 <&rstgen RSTN_U0_WAVE420L_APB>,
934 <&rstgen RSTN_U1_AXIMEM_128B_AXI>;
935 reset-names = "rst_axi", "rst_bpu", "rst_vce",
936 "rst_apb", "rst_sram";
937 starfive,venc_noc_ctrl;
938 power-domains = <&pwrc JH7110_PD_VENC>;
942 rstgen: reset-controller {
943 compatible = "starfive,jh7110-reset";
944 reg = <0x0 0x13020000 0x0 0x10000>,
945 <0x0 0x10230000 0x0 0x10000>,
946 <0x0 0x17000000 0x0 0x10000>,
947 <0x0 0x19810000 0x0 0x10000>,
948 <0x0 0x295C0000 0x0 0x10000>;
949 reg-names = "syscrg", "stgcrg", "aoncrg", "ispcrg", "voutcrg";
954 stmmac_axi_setup: stmmac-axi-config {
955 snps,wr_osr_lmt = <0xf>;
956 snps,rd_osr_lmt = <0xf>;
957 snps,blen = <256 128 64 32 0 0 0>;
960 gmac0: ethernet@16030000 {
961 compatible = "starfive,dwmac","snps,dwmac-5.10a";
962 reg = <0x0 0x16030000 0x0 0x10000>;
969 clocks = <&clkgen JH7110_GMAC0_GTXCLK>,
970 <&clkgen JH7110_U0_GMAC5_CLK_TX>,
971 <&clkgen JH7110_GMAC0_PTP>,
972 <&clkgen JH7110_U0_GMAC5_CLK_AHB>,
973 <&clkgen JH7110_U0_GMAC5_CLK_AXI>,
974 <&clkgen JH7110_GMAC0_GTXC>;
975 resets = <&rstgen RSTN_U0_DW_GMAC5_AXI64_AHB>,
976 <&rstgen RSTN_U0_DW_GMAC5_AXI64_AXI>;
977 reset-names = "ahb", "stmmaceth";
978 interrupts = <7>, <6>, <5> ;
979 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
980 max-frame-size = <9000>;
981 phy-mode = "rgmii-id";
982 snps,multicast-filter-bins = <64>;
983 snps,perfect-filter-entries = <128>;
984 rx-fifo-depth = <2048>;
985 tx-fifo-depth = <2048>;
988 snps,force_thresh_dma_mode;
989 snps,axi-config = <&stmmac_axi_setup>;
991 snps,en-tx-lpi-clockgating;
993 snps,write-requests = <4>;
994 snps,read-requests = <4>;
995 snps,burst-map = <0x7>;
1001 gmac1: ethernet@16040000 {
1002 compatible = "starfive,dwmac","snps,dwmac-5.10a";
1003 reg = <0x0 0x16040000 0x0 0x10000>;
1004 clock-names = "gtx",
1010 clocks = <&clkgen JH7110_GMAC1_GTXCLK>,
1011 <&clkgen JH7110_GMAC5_CLK_TX>,
1012 <&clkgen JH7110_GMAC5_CLK_PTP>,
1013 <&clkgen JH7110_GMAC5_CLK_AHB>,
1014 <&clkgen JH7110_GMAC5_CLK_AXI>,
1015 <&clkgen JH7110_GMAC1_GTXC>;
1016 resets = <&rstgen RSTN_U1_DW_GMAC5_AXI64_H_N>,
1017 <&rstgen RSTN_U1_DW_GMAC5_AXI64_A_I>;
1018 reset-names = "ahb", "stmmaceth";
1019 interrupts = <78>, <77>, <76> ;
1020 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1021 max-frame-size = <9000>;
1022 phy-mode = "rgmii-id";
1023 snps,multicast-filter-bins = <64>;
1024 snps,perfect-filter-entries = <128>;
1025 rx-fifo-depth = <2048>;
1026 tx-fifo-depth = <2048>;
1029 snps,force_thresh_dma_mode;
1030 snps,axi-config = <&stmmac_axi_setup>;
1032 snps,en-tx-lpi-clockgating;
1034 snps,write-requests = <4>;
1035 snps,read-requests = <4>;
1036 snps,burst-map = <0x7>;
1039 status = "disabled";
1043 compatible = "img-gpu";
1044 reg = <0x0 0x18000000 0x0 0x100000>,
1045 <0x0 0x130C000 0x0 0x10000>;
1046 clocks = <&clkgen JH7110_GPU_CORE>,
1047 <&clkgen JH7110_GPU_CLK_APB>,
1048 <&clkgen JH7110_GPU_RTC_TOGGLE>,
1049 <&clkgen JH7110_GPU_CORE_CLK>,
1050 <&clkgen JH7110_GPU_SYS_CLK>,
1051 <&clkgen JH7110_NOC_BUS_CLK_GPU_AXI>;
1052 clock-names = "clk_bv", "clk_apb", "clk_rtc",
1053 "clk_core", "clk_sys", "clk_axi";
1054 resets = <&rstgen RSTN_U0_IMG_GPU_APB>,
1055 <&rstgen RSTN_U0_IMG_GPU_DOMA>;
1056 reset-names = "rst_apb", "rst_doma";
1057 power-domains = <&pwrc JH7110_PD_GPUA>;
1059 current-clock = <8000000>;
1060 status = "disabled";
1063 can0: can@130d0000 {
1064 compatible = "starfive,jh7110-can", "ipms,can";
1065 reg = <0x0 0x130d0000 0x0 0x1000>;
1067 clocks = <&clkgen JH7110_CAN0_CTRL_CLK_APB>,
1068 <&clkgen JH7110_CAN0_CTRL_CLK_CAN>,
1069 <&clkgen JH7110_CAN0_CTRL_CLK_TIMER>;
1070 clock-names = "apb_clk", "core_clk", "timer_clk";
1071 resets = <&rstgen RSTN_U0_CAN_CTRL_APB>,
1072 <&rstgen RSTN_U0_CAN_CTRL_CORE>,
1073 <&rstgen RSTN_U0_CAN_CTRL_TIMER>;
1074 reset-names = "rst_apb", "rst_core", "rst_timer";
1075 frequency = <40000000>;
1076 starfive,sys-syscon = <&sys_syscon 0x10 0x3 0x8>;
1077 syscon,can_or_canfd = <0>;
1078 status = "disabled";
1081 can1: can@130e0000 {
1082 compatible = "starfive,jh7110-can", "ipms,can";
1083 reg = <0x0 0x130e0000 0x0 0x1000>;
1085 clocks = <&clkgen JH7110_CAN1_CTRL_CLK_APB>,
1086 <&clkgen JH7110_CAN1_CTRL_CLK_CAN>,
1087 <&clkgen JH7110_CAN1_CTRL_CLK_TIMER>;
1088 clock-names = "apb_clk", "core_clk", "timer_clk";
1089 resets = <&rstgen RSTN_U1_CAN_CTRL_APB>,
1090 <&rstgen RSTN_U1_CAN_CTRL_CORE>,
1091 <&rstgen RSTN_U1_CAN_CTRL_TIMER>;
1092 reset-names = "rst_apb", "rst_core", "rst_timer";
1093 frequency = <40000000>;
1094 starfive,sys-syscon = <&sys_syscon 0x88 0x12 0x40000>;
1095 syscon,can_or_canfd = <1>;
1096 status = "disabled";
1100 compatible = "starfive,jh7110-tdm";
1101 reg = <0x0 0x10090000 0x0 0x1000>;
1103 clocks = <&clkgen JH7110_AHB0>,
1104 <&clkgen JH7110_TDM_CLK_AHB>,
1105 <&clkgen JH7110_APB0>,
1106 <&clkgen JH7110_TDM_CLK_APB>,
1107 <&clkgen JH7110_TDM_INTERNAL>,
1109 <&clkgen JH7110_TDM_CLK_TDM>,
1110 <&clkgen JH7110_MCLK_INNER>;
1111 clock-names = "clk_ahb0", "clk_tdm_ahb",
1112 "clk_apb0", "clk_tdm_apb",
1113 "clk_tdm_internal", "clk_tdm_ext",
1114 "clk_tdm", "mclk_inner";
1115 resets = <&rstgen RSTN_U0_TDM16SLOT_AHB>,
1116 <&rstgen RSTN_U0_TDM16SLOT_APB>,
1117 <&rstgen RSTN_U0_TDM16SLOT_TDM>;
1118 reset-names = "tdm_ahb", "tdm_apb", "tdm_rst";
1119 dmas = <&dma 20 1>, <&dma 21 1>;
1120 dma-names = "rx","tx";
1121 #sound-dai-cells = <0>;
1122 status = "disabled";
1125 spdif0: spdif0@100a0000 {
1126 compatible = "starfive,jh7110-spdif";
1127 reg = <0x0 0x100a0000 0x0 0x1000>;
1128 clocks = <&clkgen JH7110_SPDIF_CLK_APB>,
1129 <&clkgen JH7110_SPDIF_CLK_CORE>,
1130 <&clkgen JH7110_AUDIO_ROOT>,
1131 <&clkgen JH7110_MCLK_INNER>,
1132 <&mclk_ext>, <&clkgen JH7110_MCLK>;
1133 clock-names = "spdif-apb", "spdif-core",
1134 "audroot", "mclk_inner",
1136 resets = <&rstgen RSTN_U0_CDNS_SPDIF_APB>;
1137 reset-names = "rst_apb";
1139 interrupt-names = "tx";
1140 #sound-dai-cells = <0>;
1141 status = "disabled";
1144 pwmdac: pwmdac@100b0000 {
1145 compatible = "starfive,jh7110-pwmdac";
1146 reg = <0x0 0x100b0000 0x0 0x1000>;
1147 clocks = <&clkgen JH7110_APB0>,
1148 <&clkgen JH7110_PWMDAC_CLK_APB>,
1149 <&clkgen JH7110_PWMDAC_CLK_CORE>;
1150 clock-names = "apb0", "pwmdac-apb", "pwmdac-core";
1151 resets = <&rstgen RSTN_U0_PWMDAC_APB>;
1152 reset-names = "rst-apb";
1155 #sound-dai-cells = <0>;
1156 status = "disabled";
1159 i2stx: i2stx@100c0000 {
1160 compatible = "snps,designware-i2stx";
1161 reg = <0x0 0x100c0000 0x0 0x1000>;
1162 interrupt-names = "tx";
1163 #sound-dai-cells = <0>;
1166 status = "disabled";
1170 compatible = "starfive,jh7110-pdm";
1171 reg = <0x0 0x100d0000 0x0 0x1000>;
1173 clocks = <&clkgen JH7110_PDM_CLK_DMIC>,
1174 <&clkgen JH7110_APB0>,
1175 <&clkgen JH7110_PDM_CLK_APB>,
1176 <&clkgen JH7110_MCLK>,
1178 clock-names = "pdm_mclk", "clk_apb0",
1179 "pdm_apb", "clk_mclk",
1181 resets = <&rstgen RSTN_U0_PDM_4MIC_DMIC>,
1182 <&rstgen RSTN_U0_PDM_4MIC_APB>;
1183 reset-names = "pdm_dmic", "pdm_apb";
1184 #sound-dai-cells = <0>;
1187 i2srx_mst: i2srx_mst@100e0000 {
1188 compatible = "starfive,jh7110-i2srx-master";
1189 reg = <0x0 0x100e0000 0x0 0x1000>;
1190 clocks = <&clkgen JH7110_APB0>,
1191 <&clkgen JH7110_I2SRX0_3CH_CLK_APB>,
1192 <&clkgen JH7110_I2SRX_3CH_BCLK_MST>,
1193 <&clkgen JH7110_I2SRX_3CH_LRCK_MST>,
1194 <&clkgen JH7110_I2SRX0_3CH_BCLK>,
1195 <&clkgen JH7110_I2SRX0_3CH_LRCK>;
1196 clock-names = "apb0", "i2srx_apb",
1197 "i2srx_bclk_mst", "i2srx_lrck_mst",
1198 "i2srx_bclk", "i2srx_lrck";
1199 resets = <&rstgen RSTN_U0_I2SRX_3CH_APB>,
1200 <&rstgen RSTN_U0_I2SRX_3CH_BCLK>;
1201 reset-names = "rst_apb_rx", "rst_bclk_rx";
1204 starfive,sys-syscon = <&sys_syscon 0x18 0x34>;
1205 #sound-dai-cells = <0>;
1206 status = "disabled";
1209 i2srx_3ch: i2srx_3ch@100e0000 {
1210 compatible = "starfive,jh7110-i2srx", "snps,designware-i2s";
1211 reg = <0x0 0x100e0000 0x0 0x1000>;
1212 clocks = <&clkgen JH7110_APB0>,
1213 <&clkgen JH7110_I2SRX0_3CH_CLK_APB>,
1214 <&clkgen JH7110_AUDIO_ROOT>,
1215 <&clkgen JH7110_MCLK_INNER>,
1216 <&clkgen JH7110_I2SRX_3CH_BCLK_MST>,
1217 <&clkgen JH7110_I2SRX_3CH_LRCK_MST>,
1218 <&clkgen JH7110_I2SRX0_3CH_BCLK>,
1219 <&clkgen JH7110_I2SRX0_3CH_LRCK>,
1220 <&clkgen JH7110_MCLK>,
1223 clock-names = "apb0", "3ch-apb",
1224 "audioroot", "mclk-inner",
1225 "bclk_mst", "3ch-lrck",
1226 "rx-bclk", "rx-lrck",
1229 resets = <&rstgen RSTN_U0_I2SRX_3CH_APB>,
1230 <&rstgen RSTN_U0_I2SRX_3CH_BCLK>;
1233 starfive,sys-syscon = <&sys_syscon 0x18 0x34>;
1234 #sound-dai-cells = <0>;
1235 status = "disabled";
1238 i2stx_4ch0: i2stx_4ch0@120b0000 {
1239 compatible = "starfive,jh7110-i2stx-4ch0", "snps,designware-i2s";
1240 reg = <0x0 0x120b0000 0x0 0x1000>;
1241 clocks = <&clkgen JH7110_MCLK_INNER>,
1242 <&clkgen JH7110_I2STX_4CH0_BCLK_MST>,
1243 <&clkgen JH7110_I2STX_4CH0_LRCK_MST>,
1244 <&clkgen JH7110_MCLK>,
1245 <&clkgen JH7110_I2STX0_4CHBCLK>,
1246 <&clkgen JH7110_I2STX0_4CHLRCK>,
1247 <&clkgen JH7110_I2STX0_4CHCLK_APB>,
1249 clock-names = "inner", "bclk-mst",
1252 "i2s_apb", "mclk_ext";
1253 resets = <&rstgen RSTN_U0_I2STX_4CH_APB>,
1254 <&rstgen RSTN_U0_I2STX_4CH_BCLK>;
1255 reset-names = "rst_apb", "rst_bclk";
1258 #sound-dai-cells = <0>;
1259 status = "disabled";
1262 i2stx_4ch1: i2stx_4ch1@120c0000 {
1263 compatible = "starfive,jh7110-i2stx-4ch1", "snps,designware-i2s";
1264 reg = <0x0 0x120c0000 0x0 0x1000>;
1265 clocks = <&clkgen JH7110_AUDIO_ROOT>,
1266 <&clkgen JH7110_MCLK_INNER>,
1267 <&clkgen JH7110_I2STX_4CH1_BCLK_MST>,
1268 <&clkgen JH7110_I2STX_4CH1_LRCK_MST>,
1269 <&clkgen JH7110_MCLK>,
1270 <&clkgen JH7110_I2STX1_4CHBCLK>,
1271 <&clkgen JH7110_I2STX1_4CHLRCK>,
1272 <&clkgen JH7110_MCLK_OUT>,
1273 <&clkgen JH7110_APB0>,
1274 <&clkgen JH7110_I2STX1_4CHCLK_APB>,
1278 clock-names = "audroot", "mclk_inner", "bclk_mst",
1279 "lrck_mst", "mclk", "4chbclk",
1280 "4chlrck", "mclk_out",
1282 "mclk_ext", "bclk_ext", "lrck_ext";
1283 resets = <&rstgen RSTN_U1_I2STX_4CH_APB>,
1284 <&rstgen RSTN_U1_I2STX_4CH_BCLK>;
1287 #sound-dai-cells = <0>;
1288 status = "disabled";
1292 compatible = "starfive,jh7110-pwm";
1293 reg = <0x0 0x120d0000 0x0 0x10000>;
1294 reg-names = "control";
1295 clocks = <&clkgen JH7110_PWM_CLK_APB>;
1296 resets = <&rstgen RSTN_U0_PWM_8CH_APB>;
1297 starfive,approx-freq = <2000000>;
1299 starfive,npwm = <8>;
1300 status = "disabled";
1303 spdif_transmitter: spdif_transmitter {
1304 compatible = "linux,spdif-dit";
1305 #sound-dai-cells = <0>;
1306 status = "disabled";
1309 pwmdac_codec: pwmdac-transmitter {
1310 compatible = "starfive,jh7110-pwmdac-dit";
1311 #sound-dai-cells = <0>;
1312 status = "disabled";
1315 dmic_codec: dmic_codec {
1316 compatible = "dmic-codec";
1317 #sound-dai-cells = <0>;
1318 status = "disabled";
1321 spi0: spi@10060000 {
1322 compatible = "arm,pl022", "arm,primecell";
1323 reg = <0x0 0x10060000 0x0 0x10000>;
1324 clocks = <&clkgen JH7110_SPI0_CLK_APB>;
1325 clock-names = "apb_pclk";
1326 resets = <&rstgen RSTN_U0_SSP_SPI_APB>;
1327 reset-names = "rst_apb";
1329 /* shortage of dma channel that not be used */
1330 /*dmas = <&dma 14 1>, <&dma 15 1>;*/
1331 /*dma-names = "rx","tx";*/
1332 arm,primecell-periphid = <0x00041022>;
1334 #address-cells = <1>;
1336 status = "disabled";
1339 spi1: spi@10070000 {
1340 compatible = "arm,pl022", "arm,primecell";
1341 reg = <0x0 0x10070000 0x0 0x10000>;
1342 clocks = <&clkgen JH7110_SPI1_CLK_APB>;
1343 clock-names = "apb_pclk";
1344 resets = <&rstgen RSTN_U1_SSP_SPI_APB>;
1345 reset-names = "rst_apb";
1347 /* shortage of dma channel that not be used */
1348 /*dmas = <&dma 16 1>, <&dma 17 1>;*/
1349 /*dma-names = "rx","tx";*/
1350 arm,primecell-periphid = <0x00041022>;
1352 #address-cells = <1>;
1354 status = "disabled";
1357 spi2: spi@10080000 {
1358 compatible = "arm,pl022", "arm,primecell";
1359 reg = <0x0 0x10080000 0x0 0x10000>;
1360 clocks = <&clkgen JH7110_SPI2_CLK_APB>;
1361 clock-names = "apb_pclk";
1362 resets = <&rstgen RSTN_U2_SSP_SPI_APB>;
1363 reset-names = "rst_apb";
1365 /* shortage of dma channel that not be used */
1366 /*dmas = <&dma 18 1>, <&dma 19 1>;*/
1367 /*dma-names = "rx","tx";*/
1368 arm,primecell-periphid = <0x00041022>;
1370 #address-cells = <1>;
1372 status = "disabled";
1375 spi3: spi@12070000 {
1376 compatible = "arm,pl022", "arm,primecell";
1377 reg = <0x0 0x12070000 0x0 0x10000>;
1378 clocks = <&clkgen JH7110_SPI3_CLK_APB>;
1379 clock-names = "apb_pclk";
1380 resets = <&rstgen RSTN_U3_SSP_SPI_APB>;
1381 reset-names = "rst_apb";
1383 /* shortage of dma channel that not be used */
1384 /*dmas = <&dma 39 1>, <&dma 40 1>;*/
1385 /*dma-names = "rx","tx";*/
1386 arm,primecell-periphid = <0x00041022>;
1388 #address-cells = <1>;
1390 status = "disabled";
1393 spi4: spi@12080000 {
1394 compatible = "arm,pl022", "arm,primecell";
1395 reg = <0x0 0x12080000 0x0 0x10000>;
1396 clocks = <&clkgen JH7110_SPI4_CLK_APB>;
1397 clock-names = "apb_pclk";
1398 resets = <&rstgen RSTN_U4_SSP_SPI_APB>;
1399 reset-names = "rst_apb";
1401 /* shortage of dma channel that not be used */
1402 /*dmas = <&dma 41 1>, <&dma 42 1>;*/
1403 /*dma-names = "rx","tx";*/
1404 arm,primecell-periphid = <0x00041022>;
1406 #address-cells = <1>;
1408 status = "disabled";
1411 spi5: spi@12090000 {
1412 compatible = "arm,pl022", "arm,primecell";
1413 reg = <0x0 0x12090000 0x0 0x10000>;
1414 clocks = <&clkgen JH7110_SPI5_CLK_APB>;
1415 clock-names = "apb_pclk";
1416 resets = <&rstgen RSTN_U5_SSP_SPI_APB>;
1417 reset-names = "rst_apb";
1419 /* shortage of dma channel that not be used */
1420 /*dmas = <&dma 43 1>, <&dma 44 1>;*/
1421 /*dma-names = "rx","tx";*/
1422 arm,primecell-periphid = <0x00041022>;
1424 #address-cells = <1>;
1426 status = "disabled";
1429 spi6: spi@120A0000 {
1430 compatible = "arm,pl022", "arm,primecell";
1431 reg = <0x0 0x120A0000 0x0 0x10000>;
1432 clocks = <&clkgen JH7110_SPI6_CLK_APB>;
1433 clock-names = "apb_pclk";
1434 resets = <&rstgen RSTN_U6_SSP_SPI_APB>;
1435 reset-names = "rst_apb";
1437 /* shortage of dma channel that not be used */
1438 /*dmas = <&dma 45 1>, <&dma 46 1>;*/
1439 /*dma-names = "rx","tx";*/
1440 arm,primecell-periphid = <0x00041022>;
1442 #address-cells = <1>;
1444 status = "disabled";
1447 pcie0: pcie@2B000000 {
1448 compatible = "starfive,jh7110-pcie","plda,pci-xpressrich3-axi";
1449 #address-cells = <3>;
1451 #interrupt-cells = <1>;
1452 reg = <0x0 0x2B000000 0x0 0x1000000
1453 0x9 0x40000000 0x0 0x10000000>;
1454 reg-names = "reg", "config";
1455 device_type = "pci";
1456 starfive,stg-syscon = <&stg_syscon 0xc0 0xc4 0x130 0x1b8>;
1457 bus-range = <0x0 0xff>;
1458 ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>,
1459 <0xc3000000 0x9 0x00000000 0x9 0x00000000 0x0 0x40000000>;
1460 msi-parent = <&plic>;
1462 interrupt-controller;
1463 interrupt-names = "msi";
1464 interrupt-parent = <&plic>;
1465 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1466 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1467 <0x0 0x0 0x0 0x2 &plic 0x2>,
1468 <0x0 0x0 0x0 0x3 &plic 0x3>,
1469 <0x0 0x0 0x0 0x4 &plic 0x4>;
1470 resets = <&rstgen RSTN_U0_PLDA_PCIE_AXI_MST0>,
1471 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV0>,
1472 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV>,
1473 <&rstgen RSTN_U0_PLDA_PCIE_BRG>,
1474 <&rstgen RSTN_U0_PLDA_PCIE_CORE>,
1475 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
1476 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1477 "rst_brg", "rst_core", "rst_apb";
1478 clocks = <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1479 <&clkgen JH7110_PCIE0_CLK_TL>,
1480 <&clkgen JH7110_PCIE0_CLK_AXI_MST0>,
1481 <&clkgen JH7110_PCIE0_CLK_APB>;
1482 clock-names = "noc", "tl", "axi_mst0", "apb";
1483 status = "disabled";
1486 pcie1: pcie@2C000000 {
1487 compatible = "starfive,jh7110-pcie","plda,pci-xpressrich3-axi";
1488 #address-cells = <3>;
1490 #interrupt-cells = <1>;
1491 reg = <0x0 0x2C000000 0x0 0x1000000
1492 0x9 0xc0000000 0x0 0x10000000>;
1493 reg-names = "reg", "config";
1494 device_type = "pci";
1495 starfive,stg-syscon = <&stg_syscon 0x270 0x274 0x2e0 0x368>;
1496 bus-range = <0x0 0xff>;
1497 ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>,
1498 <0xc3000000 0x9 0x80000000 0x9 0x80000000 0x0 0x40000000>;
1499 msi-parent = <&plic>;
1501 interrupt-controller;
1502 interrupt-names = "msi";
1503 interrupt-parent = <&plic>;
1504 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1505 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1506 <0x0 0x0 0x0 0x2 &plic 0x2>,
1507 <0x0 0x0 0x0 0x3 &plic 0x3>,
1508 <0x0 0x0 0x0 0x4 &plic 0x4>;
1509 resets = <&rstgen RSTN_U1_PLDA_PCIE_AXI_MST0>,
1510 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV0>,
1511 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV>,
1512 <&rstgen RSTN_U1_PLDA_PCIE_BRG>,
1513 <&rstgen RSTN_U1_PLDA_PCIE_CORE>,
1514 <&rstgen RSTN_U1_PLDA_PCIE_APB>;
1515 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1516 "rst_brg", "rst_core", "rst_apb";
1517 clocks = <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1518 <&clkgen JH7110_PCIE1_CLK_TL>,
1519 <&clkgen JH7110_PCIE1_CLK_AXI_MST0>,
1520 <&clkgen JH7110_PCIE1_CLK_APB>;
1521 clock-names = "noc", "tl", "axi_mst0", "apb";
1522 status = "disabled";
1525 mailbox_contrl0: mailbox@0 {
1526 compatible = "starfive,mail_box";
1527 reg = <0x0 0x13060000 0x0 0x0001000>;
1528 clocks = <&clkgen JH7110_MAILBOX_CLK_APB>;
1529 clock-names = "clk_apb";
1530 resets = <&rstgen RSTN_U0_MAILBOX_RRESETN>;
1531 reset-names = "mbx_rre";
1532 interrupts = <26 27>;
1534 status = "disabled";
1537 mailbox_client0: mailbox_client@0 {
1538 compatible = "starfive,mailbox-test";
1539 mbox-names = "rx", "tx";
1540 mboxes = <&mailbox_contrl0 0 1>,<&mailbox_contrl0 1 0>;
1541 status = "disabled";
1544 display: display-subsystem {
1545 compatible = "starfive,jh7110-display","verisilicon,display-subsystem";
1546 ports = <&dc_out_dpi0>;
1547 status = "disabled";
1550 dssctrl: dssctrl@295B0000 {
1551 compatible = "starfive,jh7110-dssctrl","verisilicon,dss-ctrl", "syscon";
1552 reg = <0 0x295B0000 0 0x90>;
1555 tda988x_pin: tda988x_pin {
1556 compatible = "starfive,tda998x_rgb_pin";
1557 status = "disabled";
1560 rgb_output: rgb-output {
1561 compatible = "starfive,jh7110-rgb_output","verisilicon,rgb-encoder";
1562 //verisilicon,dss-syscon = <&dssctrl>;
1563 //verisilicon,mux-mask = <0x70 0x380>;
1564 //verisilicon,mux-val = <0x40 0x280>;
1565 status = "disabled";
1568 dc8200: dc8200@29400000 {
1569 compatible = "starfive,jh7110-dc8200","verisilicon,dc8200";
1570 verisilicon,dss-syscon = <&dssctrl>;//20220624 panel syscon
1571 reg = <0x0 0x29400000 0x0 0x100>,
1572 <0x0 0x29400800 0x0 0x2000>,
1573 <0x0 0x17030000 0x0 0x1000>;
1575 status = "disabled";
1576 clocks = <&clkgen JH7110_NOC_BUS_CLK_CPU_AXI>,
1577 <&clkgen JH7110_NOC_BUS_CLK_AXICFG0_AXI>,
1578 <&clkgen JH7110_NOC_BUS_CLK_GPU_AXI>,
1579 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>,
1580 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>,
1581 <&clkgen JH7110_NOC_BUS_CLK_DISP_AXI>,
1582 <&clkgen JH7110_NOC_BUS_CLK_ISP_AXI>,
1583 <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1584 <&clkgen JH7110_VOUT_SRC>,
1585 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AXI>,
1586 <&clkgen JH7110_AHB1>,
1587 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AHB>,
1588 <&clkgen JH7110_VOUT_TOP_CLK_HDMITX0_MCLK>,
1589 <&clkgen JH7110_I2STX_4CH0_BCLK_MST>,
1590 <&clkvout JH7110_U0_DC8200_CLK_PIX0>,
1591 <&clkvout JH7110_U0_DC8200_CLK_PIX1>,
1592 <&clkvout JH7110_U0_DC8200_CLK_AXI>,
1593 <&clkvout JH7110_U0_DC8200_CLK_CORE>,
1594 <&clkvout JH7110_U0_DC8200_CLK_AHB>,
1595 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AXI>,
1596 <&clkvout JH7110_DOM_VOUT_TOP_LCD_CLK>,
1597 <&hdmitx0_pixelclk>,
1598 <&clkvout JH7110_DC8200_PIX0>,
1599 <&clkvout JH7110_U0_DC8200_CLK_PIX0_OUT>,
1600 <&clkvout JH7110_U0_DC8200_CLK_PIX1_OUT>;
1601 clock-names = "noc_cpu","noc_cfg0","noc_gpu","noc_vdec","noc_venc",
1602 "noc_disp","noc_isp","noc_stg","vout_src",
1603 "top_vout_axi","ahb1","top_vout_ahb",
1604 "top_vout_hdmiTX0","i2stx","pix_clk","vout_pix1",
1605 "axi_clk","core_clk","vout_ahb",
1606 "vout_top_axi","vout_top_lcd","hdmitx0_pixelclk","dc8200_pix0",
1607 "dc8200_pix0_out","dc8200_pix1_out";
1608 resets = <&rstgen RSTN_U0_DOM_VOUT_TOP_SRC>,
1609 <&rstgen RSTN_U0_DC8200_AXI>,
1610 <&rstgen RSTN_U0_DC8200_AHB>,
1611 <&rstgen RSTN_U0_DC8200_CORE>,
1612 <&rstgen RSTN_U0_NOC_BUS_CPU_AXI_N>,
1613 <&rstgen RSTN_U0_NOC_BUS_AXICFG0_AXI_N>,
1614 <&rstgen RSTN_U0_NOC_BUS_APB_BUS_N>,
1615 <&rstgen RSTN_U0_NOC_BUS_DISP_AXI_N>,
1616 <&rstgen RSTN_U0_NOC_BUS_STG_AXI_N>;
1617 reset-names = "rst_vout_src","rst_axi","rst_ahb","rst_core",
1618 "rst_noc_cpu","rst_noc_axicfg0","rst_noc_apb",
1619 "rst_noc_disp","rst_noc_stg";
1620 power-domains = <&pwrc JH7110_PD_VOUT>;
1623 dsi_output: dsi-output {
1624 compatible = "starfive,jh7110-display-encoder","verisilicon,dsi-encoder";
1625 status = "disabled";
1628 mipi_dphy: mipi-dphy@295e0000{
1629 compatible = "starfive,jh7110-mipi-dphy-tx","m31,mipi-dphy-tx";
1630 reg = <0x0 0x295e0000 0x0 0x10000>;
1631 clocks = <&clkvout JH7110_U0_MIPITX_DPHY_CLK_TXESC>;
1632 clock-names = "dphy_txesc";
1633 resets = <&rstgen RSTN_U0_MIPITX_DPHY_SYS>,
1634 <&rstgen RSTN_U0_MIPITX_DPHY_TXBYTEHS>;
1635 reset-names = "dphy_sys", "dphy_txbytehs";
1637 status = "disabled";
1640 mipi_dsi: mipi@295d0000 {
1641 compatible = "starfive,jh7110-mipi_dsi","cdns,dsi";
1642 reg = <0x0 0x295d0000 0x0 0x10000>;
1645 clocks = <&clkvout JH7110_U0_CDNS_DSITX_CLK_SYS>,
1646 <&clkvout JH7110_U0_CDNS_DSITX_CLK_APB>,
1647 <&clkvout JH7110_U0_CDNS_DSITX_CLK_TXESC>,
1648 <&clkvout JH7110_U0_CDNS_DSITX_CLK_DPI>;
1649 clock-names = "sys", "apb", "txesc", "dpi";
1650 resets = <&rstgen RSTN_U0_CDNS_DSITX_DPI>,
1651 <&rstgen RSTN_U0_CDNS_DSITX_APB>,
1652 <&rstgen RSTN_U0_CDNS_DSITX_RXESC>,
1653 <&rstgen RSTN_U0_CDNS_DSITX_SYS>,
1654 <&rstgen RSTN_U0_CDNS_DSITX_TXBYTEHS>,
1655 <&rstgen RSTN_U0_CDNS_DSITX_TXESC>;
1656 reset-names = "dsi_dpi", "dsi_apb", "dsi_rxesc",
1657 "dsi_sys", "dsi_txbytehs", "dsi_txesc";
1658 phys = <&mipi_dphy>;
1660 status = "disabled";
1663 dsi_out_port: endpoint@0 {
1664 remote-endpoint = <&panel_dsi_port>;
1666 dsi_in_port: endpoint@1 {
1667 remote-endpoint = <&mipi_out>;
1671 mipi_panel: panel@0 {
1672 /*compatible = "";*/
1677 hdmi: hdmi@29590000 {
1678 compatible = "starfive,jh7110-hdmi","inno,hdmi";
1679 reg = <0x0 0x29590000 0x0 0x4000>;
1681 /*interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;*/
1682 /*clocks = <&cru PCLK_HDMI>;*/
1683 /*clock-names = "pclk";*/
1684 /*pinctrl-names = "default";*/
1685 /*pinctrl-0 = <&hdmi_ctl>;*/
1686 status = "disabled";
1687 clocks = <&clkvout JH7110_U0_HDMI_TX_CLK_SYS>,
1688 <&clkvout JH7110_U0_HDMI_TX_CLK_MCLK>,
1689 <&clkvout JH7110_U0_HDMI_TX_CLK_BCLK>,
1690 <&hdmitx0_pixelclk>;
1691 clock-names = "sysclk", "mclk", "bclk", "pclk";
1692 resets = <&rstgen RSTN_U0_HDMI_TX_HDMI>;
1693 reset-names = "hdmi_tx";
1694 #sound-dai-cells = <0>;
1698 compatible = "simple-audio-card";
1699 simple-audio-card,name = "Starfive-Multi-Sound-Card";
1700 #address-cells = <1>;
1705 compatible = "starfive,e24";
1706 reg = <0x0 0xc0110000 0x0 0x00001000>,
1707 <0x0 0xc0111000 0x0 0x0001f000>;
1708 reg-names = "ecmd", "espace";
1709 clocks = <&clkgen JH7110_E2_RTC_CLK>,
1710 <&clkgen JH7110_E2_CLK_CORE>,
1711 <&clkgen JH7110_E2_CLK_DBG>;
1712 clock-names = "clk_rtc", "clk_core", "clk_dbg";
1713 resets = <&rstgen RSTN_U0_E24_CORE>;
1714 reset-names = "e24_core";
1715 starfive,stg-syscon = <&stg_syscon>;
1716 interrupt-parent = <&plic>;
1717 firmware-name = "e24_elf";
1719 mbox-names = "tx", "rx";
1720 mboxes = <&mailbox_contrl0 0 2>,<&mailbox_contrl0 2 0>;
1721 #address-cells = <1>;
1723 ranges = <0xc0000000 0x0 0xc0000000 0x200000>;
1724 status = "disabled";
1729 compatible = "cdns,xrp";
1730 reg = <0x0 0x10230000 0x0 0x00010000
1731 0x0 0x10240000 0x0 0x00010000>;
1732 memory-region = <&xrp_reserved>;
1733 clocks = <&clkgen JH7110_HIFI4_CLK_CORE>;
1734 clock-names = "core_clk";
1735 resets = <&rstgen RSTN_U0_HIFI4_CORE>,
1736 <&rstgen RSTN_U0_HIFI4_AXI>;
1737 reset-names = "rst_core","rst_axi";
1738 starfive,stg-syscon = <&stg_syscon>;
1739 firmware-name = "hifi4_elf";
1740 #address-cells = <1>;
1742 ranges = <0x40000000 0x0 0x20000000 0x040000
1743 0xf0000000 0x0 0xf0000000 0x03000000>;
1744 status = "disabled";
1749 starfive_cpufreq: starfive,jh7110-cpufreq {
1750 compatible = "starfive,jh7110-cpufreq";
1751 clocks = <&clkgen JH7110_CPU_CORE>;
1752 clock-names = "cpu_clk";