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";
25 compatible = "sifive,u74-mc", "riscv";
27 d-cache-block-size = <64>;
29 d-cache-size = <8192>;
33 i-cache-block-size = <64>;
35 i-cache-size = <16384>;
38 mmu-type = "riscv,sv39";
39 next-level-cache = <&cachectrl>;
40 riscv,isa = "rv64imac";
44 cpu0intctrl: interrupt-controller {
45 #interrupt-cells = <1>;
46 compatible = "riscv,cpu-intc";
52 compatible = "sifive,u74-mc", "riscv";
54 d-cache-block-size = <64>;
56 d-cache-size = <32768>;
60 i-cache-block-size = <64>;
62 i-cache-size = <32768>;
65 mmu-type = "riscv,sv39";
66 next-level-cache = <&cachectrl>;
67 riscv,isa = "rv64imafdc";
71 cpu1intctrl: interrupt-controller {
72 #interrupt-cells = <1>;
73 compatible = "riscv,cpu-intc";
79 compatible = "sifive,u74-mc", "riscv";
81 d-cache-block-size = <64>;
83 d-cache-size = <32768>;
87 i-cache-block-size = <64>;
89 i-cache-size = <32768>;
92 mmu-type = "riscv,sv39";
93 next-level-cache = <&cachectrl>;
94 riscv,isa = "rv64imafdc";
98 cpu2intctrl: interrupt-controller {
99 #interrupt-cells = <1>;
100 compatible = "riscv,cpu-intc";
101 interrupt-controller;
106 compatible = "sifive,u74-mc", "riscv";
108 d-cache-block-size = <64>;
110 d-cache-size = <32768>;
114 i-cache-block-size = <64>;
116 i-cache-size = <32768>;
119 mmu-type = "riscv,sv39";
120 next-level-cache = <&cachectrl>;
121 riscv,isa = "rv64imafdc";
125 cpu3intctrl: interrupt-controller {
126 #interrupt-cells = <1>;
127 compatible = "riscv,cpu-intc";
128 interrupt-controller;
133 compatible = "sifive,u74-mc", "riscv";
135 d-cache-block-size = <64>;
137 d-cache-size = <32768>;
141 i-cache-block-size = <64>;
143 i-cache-size = <32768>;
146 mmu-type = "riscv,sv39";
147 next-level-cache = <&cachectrl>;
148 riscv,isa = "rv64imafdc";
152 cpu4intctrl: interrupt-controller {
153 #interrupt-cells = <1>;
154 compatible = "riscv,cpu-intc";
155 interrupt-controller;
161 compatible = "simple-bus";
162 interrupt-parent = <&plic>;
163 #address-cells = <2>;
168 cachectrl: cache-controller@2010000 {
169 compatible = "sifive,fu740-c000-ccache", "cache";
170 reg = <0x0 0x2010000 0x0 0x4000 0x0 0x8000000 0x0 0x2000000>;
171 reg-names = "control", "sideband";
172 interrupts = <1 3 4 2>;
173 cache-block-size = <64>;
176 cache-size = <2097152>;
180 aon_syscon: aon_syscon@17010000 {
181 compatible = "syscon";
182 reg = <0x0 0x17010000 0x0 0x1000>;
185 stg_syscon: stg_syscon@10240000 {
186 compatible = "syscon";
187 reg = <0x0 0x10240000 0x0 0x1000>;
190 sys_syscon: sys_syscon@13030000 {
191 compatible = "syscon";
192 reg = <0x0 0x13030000 0x0 0x1000>;
195 clint: clint@2000000 {
196 compatible = "riscv,clint0";
197 reg = <0x0 0x2000000 0x0 0x10000>;
198 reg-names = "control";
199 interrupts-extended = <&cpu0intctrl 3 &cpu0intctrl 7
200 &cpu1intctrl 3 &cpu1intctrl 7
201 &cpu2intctrl 3 &cpu2intctrl 7
202 &cpu3intctrl 3 &cpu3intctrl 7
203 &cpu4intctrl 3 &cpu4intctrl 7>;
204 #interrupt-cells = <1>;
208 compatible = "riscv,plic0";
209 reg = <0x0 0xc000000 0x0 0x4000000>;
210 reg-names = "control";
211 interrupts-extended = <&cpu0intctrl 11
212 &cpu1intctrl 11 &cpu1intctrl 9
213 &cpu2intctrl 11 &cpu2intctrl 9
214 &cpu3intctrl 11 &cpu3intctrl 9
215 &cpu4intctrl 11 &cpu4intctrl 9>;
216 interrupt-controller;
217 #interrupt-cells = <1>;
218 riscv,max-priority = <7>;
222 clkgen: clock-controller {
223 compatible = "starfive,jh7110-clkgen";
224 reg = <0x0 0x13020000 0x0 0x10000>,
225 <0x0 0x10230000 0x0 0x10000>,
226 <0x0 0x17000000 0x0 0x10000>;
227 reg-names = "sys", "stg", "aon";
228 clocks = <&osc>, <&gmac1_rmii_refin>,
230 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
231 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
232 <&tdm_ext>, <&mclk_ext>,
233 <&jtag_tck_inner>, <&bist_apb>,
234 <&stg_apb>, <&clk_rtc>,
235 <&gmac0_rmii_refin>, <&gmac0_rgmii_rxin>;
236 clock-names = "osc", "gmac1_rmii_refin",
238 "i2stx_bclk_ext", "i2stx_lrck_ext",
239 "i2srx_bclk_ext", "i2srx_lrck_ext",
240 "tdm_ext", "mclk_ext",
241 "jtag_tck_inner", "bist_apb",
242 "stg_apb", "clk_rtc",
243 "gmac0_rmii_refin", "gmac0_rgmii_rxin";
248 clkvout: clock-controller@295C0000 {
249 compatible = "starfive,jh7110-clk-vout";
250 reg = <0x0 0x295C0000 0x0 0x10000>;
252 clocks = <&hdmitx0_pixelclk>,
253 <&mipitx_dphy_rxesc>,
254 <&mipitx_dphy_txbytehs>,
255 <&clkgen JH7110_VOUT_SRC>,
256 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AHB>;
257 clock-names = "hdmitx0_pixelclk",
259 "mipitx_dphy_txbytehs",
262 resets = <&rstgen RSTN_U0_DOM_VOUT_TOP_SRC>;
263 reset-names = "vout_src";
265 power-domains = <&pwrc JH7110_PD_VOUT>;
269 clkisp: clock-controller@19810000 {
270 compatible = "starfive,jh7110-clk-isp";
271 reg = <0x0 0x19810000 0x0 0x10000>;
274 clocks = <&clkgen JH7110_ISP_TOP_CLK_DVP>,
275 <&clkgen JH7110_ISP_TOP_CLK_ISPCORE_2X>,
276 <&clkgen JH7110_ISP_TOP_CLK_ISP_AXI>,
277 <&clkgen JH7110_NOC_BUS_CLK_ISP_AXI>;
278 clock-names = "u0_dom_isp_top_clk_dom_isp_top_clk_dvp",
279 "u0_dom_isp_top_clk_dom_isp_top_clk_ispcore_2x",
280 "u0_dom_isp_top_clk_dom_isp_top_clk_isp_axi",
281 "u0_sft7110_noc_bus_clk_isp_axi";
282 resets = <&rstgen RSTN_U0_DOM_ISP_TOP_N>,
283 <&rstgen RSTN_U0_DOM_ISP_TOP_AXI>,
284 <&rstgen RSTN_U0_NOC_BUS_ISP_AXI_N>;
285 reset-names = "rst_isp_top_n", "rst_isp_top_axi",
287 power-domains = <&pwrc JH7110_PD_ISP>;
292 compatible = "cdns,qspi-nor";
293 #address-cells = <1>;
295 reg = <0x0 0x13010000 0x0 0x10000
296 0x0 0x21000000 0x0 0x400000>;
297 clocks = <&clkgen JH7110_QSPI_CLK_REF>;
298 clock-names = "clk_ref";
299 resets = <&rstgen RSTN_U0_CDNS_QSPI_APB>,
300 <&rstgen RSTN_U0_CDNS_QSPI_AHB>,
301 <&rstgen RSTN_U0_CDNS_QSPI_REF>;
302 resets-names = "rst_apb", "rst_ahb", "rst_ref";
303 cdns,fifo-depth = <256>;
304 cdns,fifo-width = <4>;
305 spi-max-frequency = <250000000>;
307 nor_flash: nor-flash@0 {
308 compatible = "jedec,spi-nor";
310 spi-max-frequency = <100000000>;
319 compatible = "starfive,jh7110-otp";
320 reg = <0x0 0x17050000 0x0 0x10000>;
321 clock-frequency = <4000000>;
322 clocks = <&clkgen JH7110_OTPC_CLK_APB>;
327 compatible = "starfive,jh7110-cdns3";
328 clocks = <&clkgen JH7110_USB_125M>,
329 <&clkgen JH7110_USB0_CLK_APP_125>,
330 <&clkgen JH7110_USB0_CLK_LPM>,
331 <&clkgen JH7110_USB0_CLK_STB>,
332 <&clkgen JH7110_USB0_CLK_USB_APB>,
333 <&clkgen JH7110_USB0_CLK_AXI>,
334 <&clkgen JH7110_USB0_CLK_UTMI_APB>;
335 clock-names = "125m","app","lpm","stb","apb","axi","utmi";
336 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
337 <&rstgen RSTN_U0_CDN_USB_APB>,
338 <&rstgen RSTN_U0_CDN_USB_AXI>,
339 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>;
340 reset-names = "pwrup","apb","axi","utmi";
341 starfive,stg-syscon = <&stg_syscon 0x4 0xc4 0x148 0x1f4>;
342 starfive,sys-syscon = <&sys_syscon 0x18>;
344 #address-cells = <2>;
346 #interrupt-cells = <1>;
348 usbdrd_cdns3: usb@10100000 {
349 compatible = "cdns,usb3";
350 reg = <0x0 0x10100000 0x0 0x10000>,
351 <0x0 0x10110000 0x0 0x10000>,
352 <0x0 0x10120000 0x0 0x10000>;
353 reg-names = "otg", "xhci", "dev";
354 interrupts = <100>, <109>, <110>;
355 interrupt-names = "host", "peripheral", "otg";
356 phy-names = "cdns3,usb3-phy", "cnds3,usb2-phy";
357 maximum-speed = "super-speed";
361 timer: timer@13050000 {
362 compatible = "starfive,si5-timers";
363 reg = <0x0 0x13050000 0x0 0x10000>;
364 interrupts = <69>, <70>, <71> ,<72>;
365 interrupt-names = "timer0", "timer1",
367 clocks = <&clkgen JH7110_TIMER_CLK_TIMER0>,
368 <&clkgen JH7110_TIMER_CLK_TIMER1>,
369 <&clkgen JH7110_TIMER_CLK_TIMER2>,
370 <&clkgen JH7110_TIMER_CLK_TIMER3>,
371 <&clkgen JH7110_TIMER_CLK_APB>;
372 clock-names = "timer0", "timer1",
373 "timer2", "timer3", "apb_clk";
374 clock-frequency = <24000000>;
378 wdog: wdog@13070000 {
379 compatible = "starfive,dskit-wdt";
380 reg = <0x0 0x13070000 0x0 0x10000>;
382 interrupt-names = "wdog";
383 clocks = <&clkgen JH7110_DSKIT_WDT_CLK_WDT>,
384 <&clkgen JH7110_DSKIT_WDT_CLK_APB>;
385 clock-names = "core_clk", "apb_clk";
386 resets = <&rstgen RSTN_U0_DSKIT_WDT_APB>,
387 <&rstgen RSTN_U0_DSKIT_WDT_CORE>;
388 reset-names = "rst_apb", "rst_core";
394 compatible = "starfive,rtc_hms";
395 reg = <0x0 0x17040000 0x0 0x10000>;
396 interrupts = <10>, <11>, <12>;
397 interrupt-names = "rtc_ms_pulse", "rtc_sec_pulse", "rtc";
398 clocks = <&clkgen JH7110_RTC_HMS_CLK_APB>,
399 <&clkgen JH7110_RTC_HMS_CLK_CAL>;
400 clock-names = "pclk", "cal_clk";
401 resets = <&rstgen RSTN_U0_RTC_HMS_APB>,
402 <&rstgen RSTN_U0_RTC_HMS_CAL>,
403 <&rstgen RSTN_U0_RTC_HMS_OSC32K>;
404 reset-names = "rst_apb", "rst_cal", "rst_osc";
405 rtc,cal-clock-freq = <1000000>;
409 pwrc: power-controller@17030000 {
410 compatible = "starfive,jh7110-pmu";
411 reg = <0x0 0x17030000 0x0 0x10000>;
413 #power-domain-cells = <1>;
417 uart0: serial@10000000 {
418 compatible = "snps,dw-apb-uart";
419 reg = <0x0 0x10000000 0x0 0x10000>;
422 clocks = <&clkgen JH7110_UART0_CLK_CORE>,
423 <&clkgen JH7110_UART0_CLK_APB>;
424 clock-names = "baudclk", "apb_pclk";
425 resets = <&rstgen RSTN_U0_DW_UART_APB>,
426 <&rstgen RSTN_U0_DW_UART_CORE>;
431 uart1: serial@10010000 {
432 compatible = "snps,dw-apb-uart";
433 reg = <0x0 0x10010000 0x0 0x10000>;
436 clocks = <&clkgen JH7110_UART1_CLK_CORE>,
437 <&clkgen JH7110_UART1_CLK_APB>;
438 clock-names = "baudclk", "apb_pclk";
439 resets = <&rstgen RSTN_U1_DW_UART_APB>,
440 <&rstgen RSTN_U1_DW_UART_CORE>;
445 uart2: serial@10020000 {
446 compatible = "snps,dw-apb-uart";
447 reg = <0x0 0x10020000 0x0 0x10000>;
450 clocks = <&clkgen JH7110_UART2_CLK_CORE>,
451 <&clkgen JH7110_UART2_CLK_APB>;
452 clock-names = "baudclk", "apb_pclk";
453 resets = <&rstgen RSTN_U2_DW_UART_APB>,
454 <&rstgen RSTN_U2_DW_UART_CORE>;
459 uart3: serial@12000000 {
460 compatible = "snps,dw-apb-uart";
461 reg = <0x0 0x12000000 0x0 0x10000>;
464 clocks = <&clkgen JH7110_UART3_CLK_CORE>,
465 <&clkgen JH7110_UART3_CLK_APB>;
466 clock-names = "baudclk", "apb_pclk";
467 resets = <&rstgen RSTN_U3_DW_UART_APB>,
468 <&rstgen RSTN_U3_DW_UART_CORE>;
473 uart4: serial@12010000 {
474 compatible = "snps,dw-apb-uart";
475 reg = <0x0 0x12010000 0x0 0x10000>;
478 clocks = <&clkgen JH7110_UART4_CLK_CORE>,
479 <&clkgen JH7110_UART4_CLK_APB>;
480 clock-names = "baudclk", "apb_pclk";
481 resets = <&rstgen RSTN_U4_DW_UART_APB>,
482 <&rstgen RSTN_U4_DW_UART_CORE>;
487 uart5: serial@12020000 {
488 compatible = "snps,dw-apb-uart";
489 reg = <0x0 0x12020000 0x0 0x10000>;
492 clocks = <&clkgen JH7110_UART5_CLK_CORE>,
493 <&clkgen JH7110_UART5_CLK_APB>;
494 clock-names = "baudclk", "apb_pclk";
495 resets = <&rstgen RSTN_U5_DW_UART_APB>,
496 <&rstgen RSTN_U5_DW_UART_CORE>;
501 dma: dma-controller@16050000 {
502 compatible = "starfive,axi-dma";
503 reg = <0x0 0x16050000 0x0 0x10000>;
504 clocks = <&clkgen JH7110_DMA1P_CLK_AXI>,
505 <&clkgen JH7110_DMA1P_CLK_AHB>;
506 clock-names = "core-clk", "cfgr-clk";
507 resets = <&rstgen RSTN_U0_DW_DMA1P_AXI>,
508 <&rstgen RSTN_U0_DW_DMA1P_AHB>;
509 reset-names = "rst_axi", "rst_ahb";
513 snps,dma-masters = <1>;
514 snps,data-width = <3>;
515 snps,num-hs-if = <56>;
516 snps,block-size = <65536 65536 65536 65536>;
517 snps,priority = <0 1 2 3>;
518 snps,axi-max-burst-len = <16>;
522 gpio: gpio@13040000 {
523 compatible = "starfive,jh7110-sys-pinctrl";
524 reg = <0x0 0x13040000 0x0 0x10000>;
525 reg-names = "control";
526 clocks = <&clkgen JH7110_SYS_IOMUX_PCLK>;
527 resets = <&rstgen RSTN_U0_SYS_IOMUX_PRESETN>;
529 interrupt-controller;
535 gpioa: gpio@17020000 {
536 compatible = "starfive,jh7110-aon-pinctrl";
537 reg = <0x0 0x17020000 0x0 0x10000>;
538 reg-names = "control";
539 resets = <&rstgen RSTN_U0_AON_IOMUX_PRESETN>;
541 interrupt-controller;
547 sfctemp: tmon@120e0000 {
548 compatible = "starfive,jh7110-temp";
549 reg = <0x0 0x120e0000 0x0 0x10000>;
551 clocks = <&clkgen JH7110_TEMP_SENSOR_CLK_TEMP>,
552 <&clkgen JH7110_TEMP_SENSOR_CLK_APB>;
553 clock-names = "sense", "bus";
554 resets = <&rstgen RSTN_U0_TEMP_SENSOR_TEMP>,
555 <&rstgen RSTN_U0_TEMP_SENSOR_APB>;
556 reset-names = "sense", "bus";
557 #thermal-sensor-cells = <0>;
563 polling-delay-passive = <250>;
564 polling-delay = <15000>;
566 thermal-sensors = <&sfctemp>;
572 cpu_alert0: cpu_alert0 {
574 temperature = <75000>;
581 temperature = <90000>;
589 trng: trng@1600C000 {
590 compatible = "starfive,trng";
591 reg = <0x0 0x1600C000 0x0 0x4000>;
592 clocks = <&clkgen JH7110_SEC_HCLK>,
593 <&clkgen JH7110_SEC_MISCAHB_CLK>;
594 clock-names = "hclk", "miscahb_clk";
595 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
600 sec_dma: sec_dma@16008000 {
601 /*compatible = "arm,pl080", "arm,primecell";*/
602 compatible = "starfive,pl080";
603 reg = <0x0 0x16008000 0x0 0x4000>;
604 reg-names = "sec_dma";
606 clocks = <&clkgen JH7110_SEC_HCLK>,
607 <&clkgen JH7110_SEC_MISCAHB_CLK>;
608 clock-names = "sec_hclk","sec_ahb";
609 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
610 reset-names = "sec_hre";
611 lli-bus-interface-ahb1;
612 mem-bus-interface-ahb1;
613 memcpy-burst-size = <256>;
614 memcpy-bus-width = <32>;
619 crypto: crypto@16000000 {
620 compatible = "starfive,jh7110-sec";
621 reg = <0x0 0x16000000 0x0 0x4000>,
622 <0x0 0x16008000 0x0 0x4000>;
623 reg-names = "secreg","secdma";
624 interrupts = <28>, <29>;
625 interrupt-names = "secirq", "dmairq";
626 clocks = <&clkgen JH7110_SEC_HCLK>,
627 <&clkgen JH7110_SEC_MISCAHB_CLK>;
628 clock-names = "sec_hclk","sec_ahb";
629 resets = <&rstgen RSTN_U0_SEC_TOP_HRESETN>;
630 reset-names = "sec_hre";
631 enable-side-channel-mitigation = "true";
633 dmas = <&sec_dma 1 2>,
635 dma-names = "sec_m","sec_p";
640 compatible = "snps,designware-i2c";
641 reg = <0x0 0x10030000 0x0 0x10000>;
642 clocks = <&clkgen JH7110_I2C0_CLK_CORE>,
643 <&clkgen JH7110_I2C0_CLK_APB>;
644 clock-names = "ref", "pclk";
645 resets = <&rstgen RSTN_U0_DW_I2C_APB>;
647 #address-cells = <1>;
653 compatible = "snps,designware-i2c";
654 reg = <0x0 0x10040000 0x0 0x10000>;
655 clocks = <&clkgen JH7110_I2C1_CLK_CORE>,
656 <&clkgen JH7110_I2C1_CLK_APB>;
657 clock-names = "ref", "pclk";
658 resets = <&rstgen RSTN_U1_DW_I2C_APB>;
660 #address-cells = <1>;
666 compatible = "snps,designware-i2c";
667 reg = <0x0 0x10050000 0x0 0x10000>;
668 clocks = <&clkgen JH7110_I2C2_CLK_CORE>,
669 <&clkgen JH7110_I2C2_CLK_APB>;
670 clock-names = "ref", "pclk";
671 resets = <&rstgen RSTN_U2_DW_I2C_APB>;
673 #address-cells = <1>;
679 compatible = "snps,designware-i2c";
680 reg = <0x0 0x12030000 0x0 0x10000>;
681 clocks = <&clkgen JH7110_I2C3_CLK_CORE>,
682 <&clkgen JH7110_I2C3_CLK_APB>;
683 clock-names = "ref", "pclk";
684 resets = <&rstgen RSTN_U3_DW_I2C_APB>;
686 #address-cells = <1>;
692 compatible = "snps,designware-i2c";
693 reg = <0x0 0x12040000 0x0 0x10000>;
694 clocks = <&clkgen JH7110_I2C4_CLK_CORE>,
695 <&clkgen JH7110_I2C4_CLK_APB>;
696 clock-names = "ref", "pclk";
697 resets = <&rstgen RSTN_U4_DW_I2C_APB>;
699 #address-cells = <1>;
705 compatible = "snps,designware-i2c";
706 reg = <0x0 0x12050000 0x0 0x10000>;
707 clocks = <&clkgen JH7110_I2C5_CLK_CORE>,
708 <&clkgen JH7110_I2C5_CLK_APB>;
709 clock-names = "ref", "pclk";
710 resets = <&rstgen RSTN_U5_DW_I2C_APB>;
712 #address-cells = <1>;
718 compatible = "snps,designware-i2c";
719 reg = <0x0 0x12060000 0x0 0x10000>;
720 clocks = <&clkgen JH7110_I2C6_CLK_CORE>,
721 <&clkgen JH7110_I2C6_CLK_APB>;
722 clock-names = "ref", "pclk";
723 resets = <&rstgen RSTN_U6_DW_I2C_APB>;
725 #address-cells = <1>;
730 /* unremovable emmc as mmcblk0 */
731 sdio0: sdio0@16010000 {
732 compatible = "snps,dw-mshc";
733 reg = <0x0 0x16010000 0x0 0x10000>;
734 clocks = <&clkgen JH7110_SDIO0_CLK_AHB>,
735 <&clkgen JH7110_SDIO0_CLK_SDCARD>;
736 clock-names = "biu","ciu";
737 resets = <&rstgen RSTN_U0_DW_SDIO_AHB>;
738 reset-names = "reset";
741 fifo-watermark-aligned;
746 sdio1: sdio1@16020000 {
747 compatible = "snps,dw-mshc";
748 reg = <0x0 0x16020000 0x0 0x10000>;
749 clocks = <&clkgen JH7110_SDIO1_CLK_AHB>,
750 <&clkgen JH7110_SDIO1_CLK_SDCARD>;
751 clock-names = "biu","ciu";
752 resets = <&rstgen RSTN_U1_DW_SDIO_AHB>;
753 reset-names = "reset";
756 fifo-watermark-aligned;
761 vin_sysctl: vin_sysctl@19800000 {
762 compatible = "starfive,stf-vin";
763 reg = <0x0 0x19800000 0x0 0x10000>,
764 <0x0 0x19810000 0x0 0x10000>,
765 <0x0 0x19820000 0x0 0x10000>,
766 <0x0 0x19830000 0x0 0x10000>,
767 <0x0 0x19840000 0x0 0x10000>,
768 <0x0 0x19870000 0x0 0x30000>,
769 <0x0 0x11840000 0x0 0x10000>,
770 <0x0 0x17030000 0x0 0x10000>,
771 <0x0 0x13020000 0x0 0x10000>;
772 reg-names = "mipi0", "vclk", "vrst", "mipi1", "sctrl",
773 "isp", "trst", "pmu", "syscrg";
774 clocks = <&clkisp JH7110_DOM4_APB_FUNC>,
775 <&clkisp JH7110_U0_VIN_PCLK>,
776 <&clkisp JH7110_U0_VIN_SYS_CLK>,
777 <&clkisp JH7110_U0_ISPV2_TOP_WRAPPER_CLK_C>,
778 <&clkisp JH7110_DVP_INV>,
779 <&clkisp JH7110_U0_VIN_CLK_P_AXIWR>,
780 <&clkisp JH7110_MIPI_RX0_PXL>,
781 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF0>,
782 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF1>,
783 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF2>,
784 <&clkisp JH7110_U0_VIN_PIXEL_CLK_IF3>,
785 <&clkisp JH7110_U0_M31DPHY_CFGCLK_IN>,
786 <&clkisp JH7110_U0_M31DPHY_REFCLK_IN>,
787 <&clkisp JH7110_U0_M31DPHY_TXCLKESC_LAN0>,
788 <&clkgen JH7110_ISP_TOP_CLK_ISPCORE_2X>,
789 <&clkgen JH7110_ISP_TOP_CLK_ISP_AXI>,
790 <&clkgen JH7110_NOC_BUS_CLK_ISP_AXI>;
791 clock-names = "clk_apb_func", "clk_pclk", "clk_sys_clk",
792 "clk_wrapper_clk_c", "clk_dvp_inv", "clk_axiwr",
793 "clk_mipi_rx0_pxl", "clk_pixel_clk_if0",
794 "clk_pixel_clk_if1", "clk_pixel_clk_if2",
795 "clk_pixel_clk_if3", "clk_m31dphy_cfgclk_in",
796 "clk_m31dphy_refclk_in", "clk_m31dphy_txclkesc_lan0",
797 "clk_ispcore_2x", "clk_isp_axi", "clk_noc_bus_clk_isp_axi";
798 resets = <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_P>,
799 <&rstgen RSTN_U0_ISPV2_TOP_WRAPPER_C>,
800 <&rstgen RSTN_U0_VIN_N_PCLK>,
801 <&rstgen RSTN_U0_VIN_N_SYS_CLK>,
802 <&rstgen RSTN_U0_VIN_P_AXIRD>,
803 <&rstgen RSTN_U0_VIN_P_AXIWR>,
804 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF0>,
805 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF1>,
806 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF2>,
807 <&rstgen RSTN_U0_VIN_N_PIXEL_CLK_IF3>,
808 <&rstgen RSTN_U0_M31DPHY_HW>,
809 <&rstgen RSTN_U0_M31DPHY_B09_ALWAYS_ON>,
810 <&rstgen RSTN_U0_DOM_ISP_TOP_N>,
811 <&rstgen RSTN_U0_DOM_ISP_TOP_AXI>;
812 reset-names = "rst_wrapper_p", "rst_wrapper_c", "rst_pclk",
813 "rst_sys_clk", "rst_axird", "rst_axiwr", "rst_pixel_clk_if0",
814 "rst_pixel_clk_if1", "rst_pixel_clk_if2", "rst_pixel_clk_if3",
815 "rst_m31dphy_hw", "rst_m31dphy_b09_always_on",
816 "rst_isp_top_n", "rst_isp_top_axi";
817 starfive,aon-syscon = <&aon_syscon 0x00>;
818 power-domains = <&pwrc JH7110_PD_ISP>;
819 /* irq nr: vin, isp, isp_csi, isp_scd, isp_csiline */
820 interrupts = <92 87 88 89 90>;
825 compatible = "starfive,jpu";
826 reg = <0x0 0x13090000 0x0 0x300>;
828 clocks = <&clkgen JH7110_CODAJ12_CLK_AXI>,
829 <&clkgen JH7110_CODAJ12_CLK_CORE>,
830 <&clkgen JH7110_CODAJ12_CLK_APB>,
831 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
832 clock-names = "axi_clk", "core_clk",
833 "apb_clk", "noc_bus";
834 resets = <&rstgen RSTN_U0_CODAJ12_AXI>,
835 <&rstgen RSTN_U0_CODAJ12_CORE>,
836 <&rstgen RSTN_U0_CODAJ12_APB>;
837 reset-names = "rst_axi", "rst_core", "rst_apb";
838 power-domains = <&pwrc JH7110_PD_VDEC>;
842 vpu_dec: vpu_dec@130A0000 {
843 compatible = "starfive,vdec";
844 reg = <0x0 0x130A0000 0x0 0x10000>;
846 clocks = <&clkgen JH7110_WAVE511_CLK_AXI>,
847 <&clkgen JH7110_WAVE511_CLK_BPU>,
848 <&clkgen JH7110_WAVE511_CLK_VCE>,
849 <&clkgen JH7110_WAVE511_CLK_APB>,
850 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>;
851 clock-names = "axi_clk", "bpu_clk", "vce_clk",
852 "apb_clk", "noc_bus";
853 resets = <&rstgen RSTN_U0_WAVE511_AXI>,
854 <&rstgen RSTN_U0_WAVE511_BPU>,
855 <&rstgen RSTN_U0_WAVE511_VCE>,
856 <&rstgen RSTN_U0_WAVE511_APB>,
857 <&rstgen RSTN_U0_AXIMEM_128B_AXI>;
858 reset-names = "rst_axi", "rst_bpu", "rst_vce",
859 "rst_apb", "rst_sram";
860 starfive,vdec_noc_ctrl;
861 power-domains = <&pwrc JH7110_PD_VDEC>;
865 vpu_enc: vpu_enc@130B0000 {
866 compatible = "starfive,venc";
867 reg = <0x0 0x130B0000 0x0 0x10000>;
869 clocks = <&clkgen JH7110_WAVE420L_CLK_AXI>,
870 <&clkgen JH7110_WAVE420L_CLK_BPU>,
871 <&clkgen JH7110_WAVE420L_CLK_VCE>,
872 <&clkgen JH7110_WAVE420L_CLK_APB>,
873 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>;
874 clock-names = "axi_clk", "bpu_clk", "vce_clk",
875 "apb_clk", "noc_bus";
876 resets = <&rstgen RSTN_U0_WAVE420L_AXI>,
877 <&rstgen RSTN_U0_WAVE420L_BPU>,
878 <&rstgen RSTN_U0_WAVE420L_VCE>,
879 <&rstgen RSTN_U0_WAVE420L_APB>,
880 <&rstgen RSTN_U1_AXIMEM_128B_AXI>;
881 reset-names = "rst_axi", "rst_bpu", "rst_vce",
882 "rst_apb", "rst_sram";
883 starfive,venc_noc_ctrl;
884 power-domains = <&pwrc JH7110_PD_VENC>;
888 rstgen: reset-controller {
889 compatible = "starfive,jh7110-reset";
890 reg = <0x0 0x13020000 0x0 0x10000>,
891 <0x0 0x10230000 0x0 0x10000>,
892 <0x0 0x17000000 0x0 0x10000>,
893 <0x0 0x19810000 0x0 0x10000>,
894 <0x0 0x295C0000 0x0 0x10000>;
895 reg-names = "syscrg", "stgcrg", "aoncrg", "ispcrg", "voutcrg";
900 stmmac_axi_setup: stmmac-axi-config {
901 snps,wr_osr_lmt = <0xf>;
902 snps,rd_osr_lmt = <0xf>;
903 snps,blen = <256 128 64 32 0 0 0>;
906 gmac0: ethernet@16030000 {
907 compatible = "starfive,jh7110-eqos-5.20";
908 reg = <0x0 0x16030000 0x0 0x10000>;
915 clocks = <&clkgen JH7110_GMAC0_GTXCLK>,
916 <&clkgen JH7110_U0_GMAC5_CLK_TX>,
917 <&clkgen JH7110_GMAC0_PTP>,
918 <&clkgen JH7110_U0_GMAC5_CLK_AHB>,
919 <&clkgen JH7110_U0_GMAC5_CLK_AXI>,
920 <&clkgen JH7110_GMAC0_GTXC>;
921 resets = <&rstgen RSTN_U0_DW_GMAC5_AXI64_AHB>,
922 <&rstgen RSTN_U0_DW_GMAC5_AXI64_AXI>;
923 reset-names = "ahb", "stmmaceth";
924 interrupts = <7>, <6>, <5> ;
925 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
926 max-frame-size = <9000>;
927 phy-mode = "rgmii-id";
928 snps,multicast-filter-bins = <64>;
929 snps,perfect-filter-entries = <128>;
930 rx-fifo-depth = <2048>;
931 tx-fifo-depth = <2048>;
934 snps,force_thresh_dma_mode;
935 snps,axi-config = <&stmmac_axi_setup>;
937 snps,en-tx-lpi-clockgating;
939 snps,write-requests = <4>;
940 snps,read-requests = <4>;
941 snps,burst-map = <0x7>;
947 gmac1: ethernet@16040000 {
948 compatible = "starfive,jh7110-eqos-5.20";
949 reg = <0x0 0x16040000 0x0 0x10000>;
956 clocks = <&clkgen JH7110_GMAC1_GTXCLK>,
957 <&clkgen JH7110_GMAC5_CLK_TX>,
958 <&clkgen JH7110_GMAC5_CLK_PTP>,
959 <&clkgen JH7110_GMAC5_CLK_AHB>,
960 <&clkgen JH7110_GMAC5_CLK_AXI>,
961 <&clkgen JH7110_GMAC1_GTXC>;
962 resets = <&rstgen RSTN_U1_DW_GMAC5_AXI64_H_N>,
963 <&rstgen RSTN_U1_DW_GMAC5_AXI64_A_I>;
964 reset-names = "ahb", "stmmaceth";
965 interrupts = <78>, <77>, <76> ;
966 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
967 max-frame-size = <9000>;
968 phy-mode = "rgmii-id";
969 snps,multicast-filter-bins = <64>;
970 snps,perfect-filter-entries = <128>;
971 rx-fifo-depth = <2048>;
972 tx-fifo-depth = <2048>;
975 snps,force_thresh_dma_mode;
976 snps,axi-config = <&stmmac_axi_setup>;
978 snps,en-tx-lpi-clockgating;
980 snps,write-requests = <4>;
981 snps,read-requests = <4>;
982 snps,burst-map = <0x7>;
989 compatible = "img-gpu";
990 reg = <0x0 0x18000000 0x0 0x100000>,
991 <0x0 0x130C000 0x0 0x10000>;
992 clocks = <&clkgen JH7110_GPU_CLK_APB>,
993 <&clkgen JH7110_GPU_RTC_TOGGLE>,
994 <&clkgen JH7110_GPU_CORE_CLK>,
995 <&clkgen JH7110_GPU_SYS_CLK>,
996 <&clkgen JH7110_NOC_BUS_CLK_GPU_AXI>;
997 clock-names = "clk_apb", "clk_rtc", "clk_core",
998 "clk_sys", "clk_axi";
999 resets = <&rstgen RSTN_U0_IMG_GPU_APB>,
1000 <&rstgen RSTN_U0_IMG_GPU_DOMA>;
1001 reset-names = "rst_apb", "rst_doma";
1002 power-domains = <&pwrc JH7110_PD_GPUA>;
1004 current-clock = <8000000>;
1005 status = "disabled";
1008 can0: can@130d0000 {
1009 compatible = "ipms,can";
1010 reg = <0x0 0x130d0000 0x0 0x1000>;
1012 clocks = <&clkgen JH7110_CAN0_CTRL_CLK_APB>,
1013 <&clkgen JH7110_CAN0_CTRL_CLK_CAN>,
1014 <&clkgen JH7110_CAN0_CTRL_CLK_TIMER>;
1015 clock-names = "apb_clk", "core_clk", "timer_clk";
1016 resets = <&rstgen RSTN_U0_CAN_CTRL_APB>,
1017 <&rstgen RSTN_U0_CAN_CTRL_CORE>,
1018 <&rstgen RSTN_U0_CAN_CTRL_TIMER>;
1019 reset-names = "rst_apb", "rst_core", "rst_timer";
1020 starfive,sys-syscon = <&sys_syscon 0x10 0x3 0x8>;
1021 syscon,can_or_canfd = <0>;
1022 status = "disabled";
1025 can1: can@130e0000 {
1026 compatible = "ipms,can";
1027 reg = <0x0 0x130e0000 0x0 0x1000>;
1029 clocks = <&clkgen JH7110_CAN1_CTRL_CLK_APB>,
1030 <&clkgen JH7110_CAN1_CTRL_CLK_CAN>,
1031 <&clkgen JH7110_CAN1_CTRL_CLK_TIMER>;
1032 clock-names = "apb_clk", "core_clk", "timer_clk";
1033 resets = <&rstgen RSTN_U1_CAN_CTRL_APB>,
1034 <&rstgen RSTN_U1_CAN_CTRL_CORE>,
1035 <&rstgen RSTN_U1_CAN_CTRL_TIMER>;
1036 reset-names = "rst_apb", "rst_core", "rst_timer";
1037 starfive,sys-syscon = <&sys_syscon 0x88 0x12 0x40000>;
1038 syscon,can_or_canfd = <0>;
1039 status = "disabled";
1043 compatible = "starfive,sf-tdm";
1044 reg = <0x0 0x10090000 0x0 0x1000>;
1046 clocks = <&clkgen JH7110_AHB0>,
1047 <&clkgen JH7110_TDM_CLK_AHB>,
1048 <&clkgen JH7110_APB0>,
1049 <&clkgen JH7110_TDM_CLK_APB>,
1050 <&clkgen JH7110_TDM_INTERNAL>,
1052 <&clkgen JH7110_TDM_CLK_TDM>,
1053 <&clkgen JH7110_MCLK_INNER>;
1054 clock-names = "clk_ahb0", "clk_tdm_ahb",
1055 "clk_apb0", "clk_tdm_apb",
1056 "clk_tdm_internal", "clk_tdm_ext",
1057 "clk_tdm", "mclk_inner";
1058 resets = <&rstgen RSTN_U0_TDM16SLOT_AHB>,
1059 <&rstgen RSTN_U0_TDM16SLOT_APB>,
1060 <&rstgen RSTN_U0_TDM16SLOT_TDM>;
1061 reset-names = "tdm_ahb", "tdm_apb", "tdm_rst";
1062 dmas = <&dma 20 1>, <&dma 21 1>;
1063 dma-names = "rx","tx";
1064 #sound-dai-cells = <0>;
1065 status = "disabled";
1068 spdif0: spdif0@100a0000 {
1069 compatible = "starfive,sf-spdif";
1070 reg = <0x0 0x100a0000 0x0 0x1000>;
1071 clocks = <&clkgen JH7110_SPDIF_CLK_APB>,
1072 <&clkgen JH7110_SPDIF_CLK_CORE>,
1073 <&clkgen JH7110_APB0>,
1074 <&clkgen JH7110_AUDIO_ROOT>,
1075 <&clkgen JH7110_MCLK_INNER>;
1076 clock-names = "spdif-apb", "spdif-core", "apb0",
1077 "audroot", "mclk_inner";
1078 resets = <&rstgen RSTN_U0_CDNS_SPDIF_APB>;
1079 reset-names = "rst_apb";
1081 interrupt-names = "tx";
1082 #sound-dai-cells = <0>;
1083 status = "disabled";
1086 pwmdac: pwmdac@100b0000 {
1087 compatible = "starfive,pwmdac";
1088 reg = <0x0 0x100b0000 0x0 0x1000>;
1089 clocks = <&clkgen JH7110_APB0>,
1090 <&clkgen JH7110_PWMDAC_CLK_APB>,
1091 <&clkgen JH7110_PWMDAC_CLK_CORE>;
1092 clock-names = "apb0", "pwmdac-apb", "pwmdac-core";
1093 resets = <&rstgen RSTN_U0_PWMDAC_APB>;
1094 reset-names = "rst-apb";
1097 #sound-dai-cells = <0>;
1098 status = "disabled";
1101 i2stx: i2stx@100c0000 {
1102 compatible = "snps,designware-i2stx";
1103 reg = <0x0 0x100c0000 0x0 0x1000>;
1104 interrupt-names = "tx";
1105 #sound-dai-cells = <0>;
1108 status = "disabled";
1112 compatible = "starfive,sf-pdm";
1113 reg = <0x0 0x100d0000 0x0 0x1000>;
1115 clocks = <&clkgen JH7110_PDM_CLK_DMIC>,
1116 <&clkgen JH7110_APB0>,
1117 <&clkgen JH7110_PDM_CLK_APB>,
1118 <&clkgen JH7110_MCLK_INNER>,
1119 <&clkgen JH7110_MCLK>,
1120 <&clkgen JH7110_MCLK_OUT>;
1121 clock-names = "pdm_mclk", "clk_apb0",
1122 "pdm_apb", "mclk_inner",
1123 "clk_mclk", "mclk_out";
1124 resets = <&rstgen RSTN_U0_PDM_4MIC_DMIC>,
1125 <&rstgen RSTN_U0_PDM_4MIC_APB>;
1126 reset-names = "pdm_dmic", "pdm_apb";
1127 #sound-dai-cells = <0>;
1130 i2srx_mst: i2srx_mst@100e0000 {
1131 compatible = "snps,i2srx-master";
1132 reg = <0x0 0x100e0000 0x0 0x1000>;
1133 clocks = <&clkgen JH7110_APB0>,
1134 <&clkgen JH7110_I2SRX0_3CH_CLK_APB>,
1135 <&clkgen JH7110_I2SRX_3CH_BCLK_MST>,
1136 <&clkgen JH7110_I2SRX_3CH_LRCK_MST>,
1137 <&clkgen JH7110_I2SRX0_3CH_BCLK>,
1138 <&clkgen JH7110_I2SRX0_3CH_LRCK>;
1139 clock-names = "apb0", "i2srx_apb",
1140 "i2srx_bclk_mst", "i2srx_lrck_mst",
1141 "i2srx_bclk", "i2srx_lrck";
1142 resets = <&rstgen RSTN_U0_I2SRX_3CH_APB>,
1143 <&rstgen RSTN_U0_I2SRX_3CH_BCLK>;
1144 reset-names = "rst_apb_rx", "rst_bclk_rx";
1147 starfive,sys-syscon = <&sys_syscon 0x18 0x34>;
1148 #sound-dai-cells = <0>;
1149 status = "disabled";
1152 i2srx_3ch: i2srx_3ch@100e0000 {
1153 compatible = "snps,designware-i2srx";
1154 reg = <0x0 0x100e0000 0x0 0x1000>;
1155 clocks = <&clkgen JH7110_APB0>,
1156 <&clkgen JH7110_I2SRX0_3CH_CLK_APB>,
1157 <&clkgen JH7110_AUDIO_ROOT>,
1158 <&clkgen JH7110_MCLK_INNER>,
1159 <&clkgen JH7110_I2SRX_3CH_BCLK_MST>,
1160 <&clkgen JH7110_I2SRX_3CH_LRCK_MST>,
1161 <&clkgen JH7110_I2SRX0_3CH_BCLK>,
1162 <&clkgen JH7110_I2SRX0_3CH_LRCK>;
1163 clock-names = "apb0", "3ch-apb",
1164 "audioroot", "mclk-inner",
1165 "bclk_mst", "3ch-lrck",
1166 "rx-bclk", "rx-lrck";
1167 resets = <&rstgen RSTN_U0_I2SRX_3CH_APB>,
1168 <&rstgen RSTN_U0_I2SRX_3CH_BCLK>;
1169 reset-names = "rst_apb_rx", "rst_bclk_rx";
1172 starfive,sys-syscon = <&sys_syscon 0x18 0x34>;
1173 #sound-dai-cells = <0>;
1174 status = "disabled";
1177 i2stx_4ch0: i2stx_4ch0@120b0000 {
1178 compatible = "snps,designware-i2stx-4ch0";
1179 reg = <0x0 0x120b0000 0x0 0x1000>;
1180 clocks = <&clkgen JH7110_MCLK_INNER>,
1181 <&clkgen JH7110_I2STX_4CH0_BCLK_MST>,
1182 <&clkgen JH7110_I2STX_4CH0_LRCK_MST>,
1183 <&clkgen JH7110_MCLK>,
1184 <&clkgen JH7110_I2STX0_4CHBCLK>,
1185 <&clkgen JH7110_I2STX0_4CHLRCK>;
1186 clock-names = "inner", "bclk-mst",
1189 resets = <&rstgen RSTN_U0_I2STX_4CH_APB>,
1190 <&rstgen RSTN_U0_I2STX_4CH_BCLK>;
1191 reset-names = "rst_apb0", "rst_bclk0";
1194 #sound-dai-cells = <0>;
1195 status = "disabled";
1198 i2stx_4ch1: i2stx_4ch1@120c0000 {
1199 compatible = "snps,designware-i2stx-4ch1";
1200 reg = <0x0 0x120c0000 0x0 0x1000>;
1201 clocks = <&clkgen JH7110_AUDIO_ROOT>,
1202 <&clkgen JH7110_MCLK_INNER>,
1203 <&clkgen JH7110_I2STX_4CH1_BCLK_MST>,
1204 <&clkgen JH7110_I2STX_4CH1_LRCK_MST>,
1205 <&clkgen JH7110_MCLK>,
1206 <&clkgen JH7110_I2STX1_4CHBCLK>,
1207 <&clkgen JH7110_I2STX1_4CHLRCK>,
1208 <&clkgen JH7110_MCLK_OUT>,
1209 <&clkgen JH7110_APB0>,
1210 <&clkgen JH7110_I2STX1_4CHCLK_APB>,
1214 clock-names = "audroot", "mclk_inner", "bclk_mst",
1215 "lrck_mst", "mclk", "4chbclk",
1216 "4chlrck", "mclk_out",
1218 "mclk_ext", "bclk_ext", "lrck_ext";
1220 resets = <&rstgen RSTN_U1_I2STX_4CH_APB>,
1221 <&rstgen RSTN_U1_I2STX_4CH_BCLK>;
1222 reset-names = "rst_apb1", "rst_bclk1";
1225 #sound-dai-cells = <0>;
1226 status = "disabled";
1230 compatible = "starfive,pwm";
1231 reg = <0x0 0x120d0000 0x0 0x10000>;
1232 reg-names = "control";
1233 clocks = <&clkgen JH7110_PWM_CLK_APB>;
1234 resets = <&rstgen RSTN_U0_PWM_8CH_APB>;
1235 starfive,approx-freq = <2000000>;
1237 starfive,npwm = <8>;
1238 status = "disabled";
1241 spdif_transmitter: spdif_transmitter {
1242 compatible = "linux,spdif-dit";
1243 #sound-dai-cells = <0>;
1244 status = "disabled";
1247 spdif_receiver: spdif_receiver {
1248 compatible = "linux,spdif-dir";
1249 #sound-dai-cells = <0>;
1250 status = "disabled";
1253 pwmdac_codec: pwmdac-transmitter {
1254 compatible = "linux,pwmdac-dit";
1255 #sound-dai-cells = <0>;
1256 status = "disabled";
1259 dmic_codec: dmic_codec {
1260 compatible = "dmic-codec";
1261 #sound-dai-cells = <0>;
1262 status = "disabled";
1265 spi0: spi@10060000 {
1266 compatible = "arm,pl022", "arm,primecell";
1267 reg = <0x0 0x10060000 0x0 0x10000>;
1268 clocks = <&clkgen JH7110_SPI0_CLK_APB>;
1269 clock-names = "apb_pclk";
1270 resets = <&rstgen RSTN_U0_SSP_SPI_APB>;
1271 reset-names = "rst_apb";
1273 /* shortage of dma channel that not be used */
1274 /*dmas = <&dma 14 1>, <&dma 15 1>;*/
1275 /*dma-names = "rx","tx";*/
1276 arm,primecell-periphid = <0x00041022>;
1278 #address-cells = <1>;
1280 status = "disabled";
1283 spi1: spi@10070000 {
1284 compatible = "arm,pl022", "arm,primecell";
1285 reg = <0x0 0x10070000 0x0 0x10000>;
1286 clocks = <&clkgen JH7110_SPI1_CLK_APB>;
1287 clock-names = "apb_pclk";
1288 resets = <&rstgen RSTN_U1_SSP_SPI_APB>;
1289 reset-names = "rst_apb";
1291 /* shortage of dma channel that not be used */
1292 /*dmas = <&dma 16 1>, <&dma 17 1>;*/
1293 /*dma-names = "rx","tx";*/
1294 arm,primecell-periphid = <0x00041022>;
1296 #address-cells = <1>;
1298 status = "disabled";
1301 spi2: spi@10080000 {
1302 compatible = "arm,pl022", "arm,primecell";
1303 reg = <0x0 0x10080000 0x0 0x10000>;
1304 clocks = <&clkgen JH7110_SPI2_CLK_APB>;
1305 clock-names = "apb_pclk";
1306 resets = <&rstgen RSTN_U2_SSP_SPI_APB>;
1307 reset-names = "rst_apb";
1309 /* shortage of dma channel that not be used */
1310 /*dmas = <&dma 18 1>, <&dma 19 1>;*/
1311 /*dma-names = "rx","tx";*/
1312 arm,primecell-periphid = <0x00041022>;
1314 #address-cells = <1>;
1316 status = "disabled";
1319 spi3: spi@12070000 {
1320 compatible = "arm,pl022", "arm,primecell";
1321 reg = <0x0 0x12070000 0x0 0x10000>;
1322 clocks = <&clkgen JH7110_SPI3_CLK_APB>;
1323 clock-names = "apb_pclk";
1324 resets = <&rstgen RSTN_U3_SSP_SPI_APB>;
1325 reset-names = "rst_apb";
1327 /* shortage of dma channel that not be used */
1328 /*dmas = <&dma 39 1>, <&dma 40 1>;*/
1329 /*dma-names = "rx","tx";*/
1330 arm,primecell-periphid = <0x00041022>;
1332 #address-cells = <1>;
1334 status = "disabled";
1337 spi4: spi@12080000 {
1338 compatible = "arm,pl022", "arm,primecell";
1339 reg = <0x0 0x12080000 0x0 0x10000>;
1340 clocks = <&clkgen JH7110_SPI4_CLK_APB>;
1341 clock-names = "apb_pclk";
1342 resets = <&rstgen RSTN_U4_SSP_SPI_APB>;
1343 reset-names = "rst_apb";
1345 /* shortage of dma channel that not be used */
1346 /*dmas = <&dma 41 1>, <&dma 42 1>;*/
1347 /*dma-names = "rx","tx";*/
1348 arm,primecell-periphid = <0x00041022>;
1350 #address-cells = <1>;
1352 status = "disabled";
1355 spi5: spi@12090000 {
1356 compatible = "arm,pl022", "arm,primecell";
1357 reg = <0x0 0x12090000 0x0 0x10000>;
1358 clocks = <&clkgen JH7110_SPI5_CLK_APB>;
1359 clock-names = "apb_pclk";
1360 resets = <&rstgen RSTN_U5_SSP_SPI_APB>;
1361 reset-names = "rst_apb";
1363 /* shortage of dma channel that not be used */
1364 /*dmas = <&dma 43 1>, <&dma 44 1>;*/
1365 /*dma-names = "rx","tx";*/
1366 arm,primecell-periphid = <0x00041022>;
1368 #address-cells = <1>;
1370 status = "disabled";
1373 spi6: spi@120A0000 {
1374 compatible = "arm,pl022", "arm,primecell";
1375 reg = <0x0 0x120A0000 0x0 0x10000>;
1376 clocks = <&clkgen JH7110_SPI6_CLK_APB>;
1377 clock-names = "apb_pclk";
1378 resets = <&rstgen RSTN_U6_SSP_SPI_APB>;
1379 reset-names = "rst_apb";
1381 /* shortage of dma channel that not be used */
1382 /*dmas = <&dma 45 1>, <&dma 46 1>;*/
1383 /*dma-names = "rx","tx";*/
1384 arm,primecell-periphid = <0x00041022>;
1386 #address-cells = <1>;
1388 status = "disabled";
1391 pcie0: pcie@2B000000 {
1392 compatible = "plda,pci-xpressrich3-axi";
1393 #address-cells = <3>;
1395 #interrupt-cells = <1>;
1396 reg = <0x0 0x2B000000 0x0 0x1000000
1397 0x9 0x40000000 0x0 0x10000000>;
1398 reg-names = "reg", "config";
1399 device_type = "pci";
1400 starfive,stg-syscon = <&stg_syscon 0xc0 0xc4 0x130>;
1401 bus-range = <0x0 0xff>;
1402 ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>;
1403 msi-parent = <&plic>;
1405 interrupt-controller;
1406 interrupt-names = "msi";
1407 interrupt-parent = <&plic>;
1408 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1409 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1410 <0x0 0x0 0x0 0x2 &plic 0x2>,
1411 <0x0 0x0 0x0 0x3 &plic 0x3>,
1412 <0x0 0x0 0x0 0x4 &plic 0x4>;
1413 resets = <&rstgen RSTN_U0_PLDA_PCIE_AXI_MST0>,
1414 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV0>,
1415 <&rstgen RSTN_U0_PLDA_PCIE_AXI_SLV>,
1416 <&rstgen RSTN_U0_PLDA_PCIE_BRG>,
1417 <&rstgen RSTN_U0_PLDA_PCIE_CORE>,
1418 <&rstgen RSTN_U0_PLDA_PCIE_APB>;
1419 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1420 "rst_brg", "rst_core", "rst_apb";
1421 clocks = <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1422 <&clkgen JH7110_PCIE0_CLK_TL>,
1423 <&clkgen JH7110_PCIE0_CLK_AXI_MST0>,
1424 <&clkgen JH7110_PCIE0_CLK_APB>;
1425 clock-names = "noc", "tl", "axi_mst0", "apb";
1426 status = "disabled";
1429 pcie1: pcie@2C000000 {
1430 compatible = "plda,pci-xpressrich3-axi";
1431 #address-cells = <3>;
1433 #interrupt-cells = <1>;
1434 reg = <0x0 0x2C000000 0x0 0x1000000
1435 0x9 0xc0000000 0x0 0x10000000>;
1436 reg-names = "reg", "config";
1437 device_type = "pci";
1438 starfive,stg-syscon = <&stg_syscon 0x270 0x274 0x2e0>;
1439 bus-range = <0x0 0xff>;
1440 ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>;
1441 msi-parent = <&plic>;
1443 interrupt-controller;
1444 interrupt-names = "msi";
1445 interrupt-parent = <&plic>;
1446 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1447 interrupt-map = <0x0 0x0 0x0 0x1 &plic 0x1>,
1448 <0x0 0x0 0x0 0x2 &plic 0x2>,
1449 <0x0 0x0 0x0 0x3 &plic 0x3>,
1450 <0x0 0x0 0x0 0x4 &plic 0x4>;
1451 resets = <&rstgen RSTN_U1_PLDA_PCIE_AXI_MST0>,
1452 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV0>,
1453 <&rstgen RSTN_U1_PLDA_PCIE_AXI_SLV>,
1454 <&rstgen RSTN_U1_PLDA_PCIE_BRG>,
1455 <&rstgen RSTN_U1_PLDA_PCIE_CORE>,
1456 <&rstgen RSTN_U1_PLDA_PCIE_APB>;
1457 reset-names = "rst_mst0", "rst_slv0", "rst_slv",
1458 "rst_brg", "rst_core", "rst_apb";
1459 clocks = <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1460 <&clkgen JH7110_PCIE1_CLK_TL>,
1461 <&clkgen JH7110_PCIE1_CLK_AXI_MST0>,
1462 <&clkgen JH7110_PCIE1_CLK_APB>;
1463 clock-names = "noc", "tl", "axi_mst0", "apb";
1464 status = "disabled";
1467 mailbox_contrl0: mailbox@0 {
1468 compatible = "starfive,mail_box";
1469 reg = <0x0 0x13060000 0x0 0x0001000>;
1470 clocks = <&clkgen JH7110_MAILBOX_CLK_APB>;
1471 clock-names = "clk_apb";
1472 resets = <&rstgen RSTN_U0_MAILBOX_RRESETN>;
1473 reset-names = "mbx_rre";
1474 interrupts = <26 27>;
1476 status = "disabled";
1479 mailbox_client0: mailbox_client@0 {
1480 compatible = "starfive,mailbox-test";
1481 mbox-names = "rx", "tx";
1482 mboxes = <&mailbox_contrl0 0 1>,<&mailbox_contrl0 1 0>;
1483 status = "disabled";
1486 display: display-subsystem {
1487 compatible = "verisilicon,display-subsystem";
1488 ports = <&dc_out_dpi0>;
1489 status = "disabled";
1492 dssctrl: dssctrl@295B0000 {
1493 compatible = "verisilicon,dss-ctrl", "syscon";
1494 reg = <0 0x295B0000 0 0x90>;
1497 tda988x_pin: tda988x_pin {
1498 compatible = "starfive,tda998x_rgb_pin";
1499 status = "disabled";
1502 hdmi_output: hdmi-output {
1503 compatible = "verisilicon,hdmi-encoder";
1504 //verisilicon,dss-syscon = <&dssctrl>;
1505 //verisilicon,mux-mask = <0x70 0x380>;
1506 //verisilicon,mux-val = <0x40 0x280>;
1507 status = "disabled";
1510 dc8200: dc8200@29400000 {
1511 compatible = "verisilicon,dc8200";
1512 verisilicon,dss-syscon = <&dssctrl>;//20220624 panel syscon
1513 reg = <0x0 0x29400000 0x0 0x100>,
1514 <0x0 0x29400800 0x0 0x2000>,
1515 <0x0 0x17030000 0x0 0x1000>;
1517 status = "disabled";
1518 clocks = <&clkgen JH7110_NOC_BUS_CLK_CPU_AXI>,
1519 <&clkgen JH7110_NOC_BUS_CLK_AXICFG0_AXI>,
1520 <&clkgen JH7110_NOC_BUS_CLK_GPU_AXI>,
1521 <&clkgen JH7110_NOC_BUS_CLK_VDEC_AXI>,
1522 <&clkgen JH7110_NOC_BUS_CLK_VENC_AXI>,
1523 <&clkgen JH7110_NOC_BUS_CLK_DISP_AXI>,
1524 <&clkgen JH7110_NOC_BUS_CLK_ISP_AXI>,
1525 <&clkgen JH7110_NOC_BUS_CLK_STG_AXI>,
1526 <&clkgen JH7110_VOUT_SRC>,
1527 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AXI>,
1528 <&clkgen JH7110_AHB1>,
1529 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AHB>,
1530 <&clkgen JH7110_VOUT_TOP_CLK_HDMITX0_MCLK>,
1531 <&clkgen JH7110_I2STX_4CH0_BCLK_MST>,
1532 <&clkvout JH7110_U0_DC8200_CLK_PIX0>,
1533 <&clkvout JH7110_U0_DC8200_CLK_PIX1>,
1534 <&clkvout JH7110_U0_DC8200_CLK_AXI>,
1535 <&clkvout JH7110_U0_DC8200_CLK_CORE>,
1536 <&clkvout JH7110_U0_DC8200_CLK_AHB>,
1537 <&clkgen JH7110_VOUT_TOP_CLK_VOUT_AXI>,
1538 <&clkvout JH7110_DOM_VOUT_TOP_LCD_CLK>,
1539 <&hdmitx0_pixelclk>,
1540 <&clkvout JH7110_DC8200_PIX0>,
1541 <&clkvout JH7110_U0_DC8200_CLK_PIX0_OUT>,
1542 <&clkvout JH7110_U0_DC8200_CLK_PIX1_OUT>;
1543 clock-names = "noc_cpu","noc_cfg0","noc_gpu","noc_vdec","noc_venc",
1544 "noc_disp","noc_isp","noc_stg","vout_src",
1545 "top_vout_axi","ahb1","top_vout_ahb",
1546 "top_vout_hdmiTX0","i2stx","pix_clk","vout_pix1",
1547 "axi_clk","core_clk","vout_ahb",
1548 "vout_top_axi","vout_top_lcd","hdmitx0_pixelclk","dc8200_pix0",
1549 "dc8200_pix0_out","dc8200_pix1_out";
1550 resets = <&rstgen RSTN_U0_DOM_VOUT_TOP_SRC>,
1551 <&rstgen RSTN_U0_DC8200_AXI>,
1552 <&rstgen RSTN_U0_DC8200_AHB>,
1553 <&rstgen RSTN_U0_DC8200_CORE>,
1554 <&rstgen RSTN_U0_NOC_BUS_CPU_AXI_N>,
1555 <&rstgen RSTN_U0_NOC_BUS_AXICFG0_AXI_N>,
1556 <&rstgen RSTN_U0_NOC_BUS_APB_BUS_N>,
1557 <&rstgen RSTN_U0_NOC_BUS_GPU_AXI_N>,
1558 <&rstgen RSTN_U0_NOC_BUS_VDEC_AXI_N>,
1559 <&rstgen RSTN_U0_JTAG2APB_PRESETN>,
1560 <&rstgen RSTN_U0_NOC_BUS_DISP_AXI_N>,
1561 <&rstgen RSTN_U0_NOC_BUS_ISP_AXI_N>,
1562 <&rstgen RSTN_U0_NOC_BUS_STG_AXI_N>,
1563 <&rstgen RSTN_U0_NOC_BUS_DDRC_N>;
1564 reset-names = "rst_vout_src","rst_axi","rst_ahb","rst_core",
1565 "rst_noc_cpu","rst_noc_axicfg0","rst_noc_apb",
1566 "rst_noc_gpu","rst_noc_vdec","rst_jtag2apb",
1567 "rst_noc_disp","rst_noc_isp","rst_noc_stg","rst_noc_ddrc";
1568 power-domains = <&pwrc JH7110_PD_VOUT>;
1571 encoder: display-encoder {
1572 compatible = "verisilicon,dsi-encoder";
1573 status = "disabled";
1576 mipi_dphy: mipi-dphy@295e0000{
1577 compatible = "starfive,jh7100-mipi-dphy-tx";
1578 reg = <0x0 0x295e0000 0x0 0x10000>;
1579 clocks = <&clkvout JH7110_U0_MIPITX_DPHY_CLK_TXESC>;
1580 clock-names = "dphy_txesc";
1581 resets = <&rstgen RSTN_U0_MIPITX_DPHY_SYS>,
1582 <&rstgen RSTN_U0_MIPITX_DPHY_TXBYTEHS>;
1583 reset-names = "dphy_sys", "dphy_txbytehs";
1585 status = "disabled";
1588 mipi_dsi: mipi@295d0000 {
1589 compatible = "cdns,dsi";
1590 reg = <0x0 0x295d0000 0x0 0x10000>;
1593 clocks = <&clkvout JH7110_U0_CDNS_DSITX_CLK_SYS>,
1594 <&clkvout JH7110_U0_CDNS_DSITX_CLK_APB>,
1595 <&clkvout JH7110_U0_CDNS_DSITX_CLK_TXESC>,
1596 <&clkvout JH7110_U0_CDNS_DSITX_CLK_DPI>;
1597 clock-names = "sys", "apb", "txesc", "dpi";
1598 resets = <&rstgen RSTN_U0_CDNS_DSITX_DPI>,
1599 <&rstgen RSTN_U0_CDNS_DSITX_APB>,
1600 <&rstgen RSTN_U0_CDNS_DSITX_RXESC>,
1601 <&rstgen RSTN_U0_CDNS_DSITX_SYS>,
1602 <&rstgen RSTN_U0_CDNS_DSITX_TXBYTEHS>,
1603 <&rstgen RSTN_U0_CDNS_DSITX_TXESC>;
1604 reset-names = "dsi_dpi", "dsi_apb", "dsi_rxesc",
1605 "dsi_sys", "dsi_txbytehs", "dsi_txesc";
1606 phys = <&mipi_dphy>;
1608 status = "disabled";
1611 dsi_out_port: endpoint@0 {
1612 remote-endpoint = <&panel_dsi_port>;
1614 dsi_in_port: endpoint@1 {
1615 remote-endpoint = <&mipi_out>;
1619 mipi_panel: panel@0 {
1620 /*compatible = "";*/
1625 hdmi: hdmi@29590000 {
1626 compatible = "rockchip,rk3036-inno-hdmi";
1627 reg = <0x0 0x29590000 0x0 0x4000>;
1629 /*interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;*/
1630 /*clocks = <&cru PCLK_HDMI>;*/
1631 /*clock-names = "pclk";*/
1632 /*pinctrl-names = "default";*/
1633 /*pinctrl-0 = <&hdmi_ctl>;*/
1634 status = "disabled";
1635 clocks = <&clkvout JH7110_U0_HDMI_TX_CLK_SYS>,
1636 <&clkvout JH7110_U0_HDMI_TX_CLK_MCLK>,
1637 <&clkvout JH7110_U0_HDMI_TX_CLK_BCLK>,
1638 <&hdmitx0_pixelclk>;
1639 clock-names = "sysclk", "mclk","bclk","pclk";
1640 resets = <&rstgen RSTN_U0_HDMI_TX_HDMI>;
1641 reset-names = "hdmi_tx";
1645 compatible = "simple-audio-card";
1646 simple-audio-card,name = "Starfive-Multi-Sound-Card";
1647 #address-cells = <1>;
1652 compatible = "starfive,e24";
1653 reg = <0x0 0xc0110000 0x0 0x00001000>,
1654 <0x0 0xc0111000 0x0 0x0001f000>;
1655 reg-names = "ecmd", "espace";
1656 clocks = <&clkgen JH7110_E2_RTC_CLK>,
1657 <&clkgen JH7110_E2_CLK_CORE>,
1658 <&clkgen JH7110_E2_CLK_DBG>;
1659 clock-names = "clk_rtc", "clk_core", "clk_dbg";
1660 resets = <&rstgen RSTN_U0_E24_CORE>;
1661 reset-names = "e24_core";
1662 starfive,stg-syscon = <&stg_syscon>;
1663 interrupt-parent = <&plic>;
1664 firmware-name = "e24_elf";
1666 mbox-names = "tx", "rx";
1667 mboxes = <&mailbox_contrl0 0 2>,<&mailbox_contrl0 2 0>;
1668 #address-cells = <1>;
1670 ranges = <0xc0000000 0x0 0xc0000000 0x200000>;
1671 status = "disabled";
1676 compatible = "cdns,xrp";
1677 reg = <0x0 0x10230000 0x0 0x00010000
1678 0x0 0x10240000 0x0 0x00010000>;
1679 memory-region = <&xrp_reserved>;
1680 clocks = <&clkgen JH7110_HIFI4_CLK_CORE>;
1681 clock-names = "core_clk";
1682 resets = <&rstgen RSTN_U0_HIFI4_CORE>,
1683 <&rstgen RSTN_U0_HIFI4_AXI>;
1684 reset-names = "rst_core","rst_axi";
1685 starfive,stg-syscon = <&stg_syscon>;
1686 firmware-name = "hifi4_elf";
1687 #address-cells = <1>;
1689 ranges = <0x40000000 0x0 0x20000000 0x040000
1690 0xf0000000 0x0 0xf0000000 0x03000000>;
1691 status = "disabled";