1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 // Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
4 #include <dt-bindings/interrupt-controller/arm-gic.h>
5 #include <dt-bindings/clock/sun50i-h6-ccu.h>
6 #include <dt-bindings/clock/sun50i-h6-r-ccu.h>
7 #include <dt-bindings/clock/sun8i-de2.h>
8 #include <dt-bindings/clock/sun8i-tcon-top.h>
9 #include <dt-bindings/reset/sun50i-h6-ccu.h>
10 #include <dt-bindings/reset/sun50i-h6-r-ccu.h>
11 #include <dt-bindings/reset/sun8i-de2.h>
12 #include <dt-bindings/thermal/thermal.h>
15 interrupt-parent = <&gic>;
24 compatible = "arm,cortex-a53";
27 enable-method = "psci";
28 clocks = <&ccu CLK_CPUX>;
29 clock-latency-ns = <244144>; /* 8 32k periods */
34 compatible = "arm,cortex-a53";
37 enable-method = "psci";
38 clocks = <&ccu CLK_CPUX>;
39 clock-latency-ns = <244144>; /* 8 32k periods */
44 compatible = "arm,cortex-a53";
47 enable-method = "psci";
48 clocks = <&ccu CLK_CPUX>;
49 clock-latency-ns = <244144>; /* 8 32k periods */
54 compatible = "arm,cortex-a53";
57 enable-method = "psci";
58 clocks = <&ccu CLK_CPUX>;
59 clock-latency-ns = <244144>; /* 8 32k periods */
65 compatible = "allwinner,sun50i-h6-display-engine";
66 allwinner,pipelines = <&mixer0>;
72 compatible = "fixed-clock";
73 clock-frequency = <24000000>;
74 clock-output-names = "osc24M";
78 compatible = "arm,cortex-a53-pmu";
79 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
83 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
87 compatible = "arm,psci-0.2";
92 compatible = "arm,armv8-timer";
93 arm,no-tick-in-suspend;
94 interrupts = <GIC_PPI 13
95 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
97 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
99 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
101 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
105 compatible = "simple-bus";
106 #address-cells = <1>;
111 compatible = "allwinner,sun50i-h6-de3",
112 "allwinner,sun50i-a64-de2";
113 reg = <0x1000000 0x400000>;
114 allwinner,sram = <&de2_sram 1>;
115 #address-cells = <1>;
117 ranges = <0 0x1000000 0x400000>;
119 display_clocks: clock@0 {
120 compatible = "allwinner,sun50i-h6-de3-clk";
122 clocks = <&ccu CLK_DE>,
126 resets = <&ccu RST_BUS_DE>;
131 mixer0: mixer@100000 {
132 compatible = "allwinner,sun50i-h6-de3-mixer-0";
133 reg = <0x100000 0x100000>;
134 clocks = <&display_clocks CLK_BUS_MIXER0>,
135 <&display_clocks CLK_MIXER0>;
138 resets = <&display_clocks RST_MIXER0>;
142 #address-cells = <1>;
148 mixer0_out_tcon_top_mixer0: endpoint {
149 remote-endpoint = <&tcon_top_mixer0_in_mixer0>;
156 video-codec@1c0e000 {
157 compatible = "allwinner,sun50i-h6-video-engine";
158 reg = <0x01c0e000 0x2000>;
159 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
161 clock-names = "ahb", "mod", "ram";
162 resets = <&ccu RST_BUS_VE>;
163 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
164 allwinner,sram = <&ve_sram 1>;
169 compatible = "allwinner,sun50i-h6-mali",
171 reg = <0x01800000 0x4000>;
172 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
173 <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
174 <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
175 interrupt-names = "job", "mmu", "gpu";
176 clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
177 clock-names = "core", "bus";
178 resets = <&ccu RST_BUS_GPU>;
182 crypto: crypto@1904000 {
183 compatible = "allwinner,sun50i-h6-crypto";
184 reg = <0x01904000 0x1000>;
185 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
186 clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
187 clock-names = "bus", "mod", "ram";
188 resets = <&ccu RST_BUS_CE>;
191 syscon: syscon@3000000 {
192 compatible = "allwinner,sun50i-h6-system-control",
193 "allwinner,sun50i-a64-system-control";
194 reg = <0x03000000 0x1000>;
195 #address-cells = <1>;
200 compatible = "mmio-sram";
201 reg = <0x00028000 0x1e000>;
202 #address-cells = <1>;
204 ranges = <0 0x00028000 0x1e000>;
206 de2_sram: sram-section@0 {
207 compatible = "allwinner,sun50i-h6-sram-c",
208 "allwinner,sun50i-a64-sram-c";
209 reg = <0x0000 0x1e000>;
213 sram_c1: sram@1a00000 {
214 compatible = "mmio-sram";
215 reg = <0x01a00000 0x200000>;
216 #address-cells = <1>;
218 ranges = <0 0x01a00000 0x200000>;
220 ve_sram: sram-section@0 {
221 compatible = "allwinner,sun50i-h6-sram-c1",
222 "allwinner,sun4i-a10-sram-c1";
223 reg = <0x000000 0x200000>;
229 compatible = "allwinner,sun50i-h6-ccu";
230 reg = <0x03001000 0x1000>;
231 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>;
232 clock-names = "hosc", "losc", "iosc";
237 dma: dma-controller@3002000 {
238 compatible = "allwinner,sun50i-h6-dma";
239 reg = <0x03002000 0x1000>;
240 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
241 clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
242 clock-names = "bus", "mbus";
245 resets = <&ccu RST_BUS_DMA>;
249 msgbox: mailbox@3003000 {
250 compatible = "allwinner,sun50i-h6-msgbox",
251 "allwinner,sun6i-a31-msgbox";
252 reg = <0x03003000 0x1000>;
253 clocks = <&ccu CLK_BUS_MSGBOX>;
254 resets = <&ccu RST_BUS_MSGBOX>;
255 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
260 compatible = "allwinner,sun50i-h6-sid";
261 reg = <0x03006000 0x400>;
262 #address-cells = <1>;
265 ths_calibration: thermal-sensor-calibration@14 {
269 cpu_speed_grade: cpu-speed-grade@1c {
275 compatible = "allwinner,sun50i-h6-timer",
276 "allwinner,sun8i-a23-timer";
277 reg = <0x03009000 0xa0>;
278 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
279 <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
283 watchdog: watchdog@30090a0 {
284 compatible = "allwinner,sun50i-h6-wdt",
285 "allwinner,sun6i-a31-wdt";
286 reg = <0x030090a0 0x20>;
287 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
289 /* Broken on some H6 boards */
294 compatible = "allwinner,sun50i-h6-pwm";
295 reg = <0x0300a000 0x400>;
296 clocks = <&osc24M>, <&ccu CLK_BUS_PWM>;
297 clock-names = "mod", "bus";
298 resets = <&ccu RST_BUS_PWM>;
303 pio: pinctrl@300b000 {
304 compatible = "allwinner,sun50i-h6-pinctrl";
305 reg = <0x0300b000 0x400>;
306 interrupt-parent = <&r_intc>;
307 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
308 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
309 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
310 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
311 clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>;
312 clock-names = "apb", "hosc", "losc";
315 interrupt-controller;
316 #interrupt-cells = <3>;
318 ext_rgmii_pins: rgmii-pins {
319 pins = "PD0", "PD1", "PD2", "PD3", "PD4",
320 "PD5", "PD7", "PD8", "PD9", "PD10",
321 "PD11", "PD12", "PD13", "PD19", "PD20";
323 drive-strength = <40>;
326 hdmi_pins: hdmi-pins {
327 pins = "PH8", "PH9", "PH10";
331 i2c0_pins: i2c0-pins {
332 pins = "PD25", "PD26";
336 i2c1_pins: i2c1-pins {
341 i2c2_pins: i2c2-pins {
342 pins = "PD23", "PD24";
346 mmc0_pins: mmc0-pins {
347 pins = "PF0", "PF1", "PF2", "PF3",
350 drive-strength = <30>;
355 mmc1_pins: mmc1-pins {
356 pins = "PG0", "PG1", "PG2", "PG3",
359 drive-strength = <30>;
363 mmc2_pins: mmc2-pins {
364 pins = "PC1", "PC4", "PC5", "PC6",
365 "PC7", "PC8", "PC9", "PC10",
366 "PC11", "PC12", "PC13", "PC14";
368 drive-strength = <30>;
373 spi0_pins: spi0-pins {
374 pins = "PC0", "PC2", "PC3";
378 /* pin shared with MMC2-CMD (eMMC) */
380 spi0_cs_pin: spi0-cs-pin {
386 spi1_pins: spi1-pins {
387 pins = "PH4", "PH5", "PH6";
392 spi1_cs_pin: spi1-cs-pin {
397 spdif_tx_pin: spdif-tx-pin {
402 uart0_ph_pins: uart0-ph-pins {
407 uart1_pins: uart1-pins {
412 uart1_rts_cts_pins: uart1-rts-cts-pins {
418 gic: interrupt-controller@3021000 {
419 compatible = "arm,gic-400";
420 reg = <0x03021000 0x1000>,
424 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
425 interrupt-controller;
426 #interrupt-cells = <3>;
429 iommu: iommu@30f0000 {
430 compatible = "allwinner,sun50i-h6-iommu";
431 reg = <0x030f0000 0x10000>;
432 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
433 clocks = <&ccu CLK_BUS_IOMMU>;
434 resets = <&ccu RST_BUS_IOMMU>;
439 compatible = "allwinner,sun50i-h6-mmc",
440 "allwinner,sun50i-a64-mmc";
441 reg = <0x04020000 0x1000>;
442 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
443 clock-names = "ahb", "mmc";
444 resets = <&ccu RST_BUS_MMC0>;
446 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
447 pinctrl-names = "default";
448 pinctrl-0 = <&mmc0_pins>;
449 max-frequency = <150000000>;
451 #address-cells = <1>;
456 compatible = "allwinner,sun50i-h6-mmc",
457 "allwinner,sun50i-a64-mmc";
458 reg = <0x04021000 0x1000>;
459 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
460 clock-names = "ahb", "mmc";
461 resets = <&ccu RST_BUS_MMC1>;
463 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
464 pinctrl-names = "default";
465 pinctrl-0 = <&mmc1_pins>;
466 max-frequency = <150000000>;
468 #address-cells = <1>;
473 compatible = "allwinner,sun50i-h6-emmc",
474 "allwinner,sun50i-a64-emmc";
475 reg = <0x04022000 0x1000>;
476 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
477 clock-names = "ahb", "mmc";
478 resets = <&ccu RST_BUS_MMC2>;
480 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
481 pinctrl-names = "default";
482 pinctrl-0 = <&mmc2_pins>;
483 max-frequency = <150000000>;
485 #address-cells = <1>;
489 uart0: serial@5000000 {
490 compatible = "snps,dw-apb-uart";
491 reg = <0x05000000 0x400>;
492 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
495 clocks = <&ccu CLK_BUS_UART0>;
496 resets = <&ccu RST_BUS_UART0>;
500 uart1: serial@5000400 {
501 compatible = "snps,dw-apb-uart";
502 reg = <0x05000400 0x400>;
503 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
506 clocks = <&ccu CLK_BUS_UART1>;
507 resets = <&ccu RST_BUS_UART1>;
511 uart2: serial@5000800 {
512 compatible = "snps,dw-apb-uart";
513 reg = <0x05000800 0x400>;
514 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
517 clocks = <&ccu CLK_BUS_UART2>;
518 resets = <&ccu RST_BUS_UART2>;
522 uart3: serial@5000c00 {
523 compatible = "snps,dw-apb-uart";
524 reg = <0x05000c00 0x400>;
525 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
528 clocks = <&ccu CLK_BUS_UART3>;
529 resets = <&ccu RST_BUS_UART3>;
534 compatible = "allwinner,sun50i-h6-i2c",
535 "allwinner,sun6i-a31-i2c";
536 reg = <0x05002000 0x400>;
537 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
538 clocks = <&ccu CLK_BUS_I2C0>;
539 resets = <&ccu RST_BUS_I2C0>;
540 pinctrl-names = "default";
541 pinctrl-0 = <&i2c0_pins>;
543 #address-cells = <1>;
548 compatible = "allwinner,sun50i-h6-i2c",
549 "allwinner,sun6i-a31-i2c";
550 reg = <0x05002400 0x400>;
551 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
552 clocks = <&ccu CLK_BUS_I2C1>;
553 resets = <&ccu RST_BUS_I2C1>;
554 pinctrl-names = "default";
555 pinctrl-0 = <&i2c1_pins>;
557 #address-cells = <1>;
562 compatible = "allwinner,sun50i-h6-i2c",
563 "allwinner,sun6i-a31-i2c";
564 reg = <0x05002800 0x400>;
565 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
566 clocks = <&ccu CLK_BUS_I2C2>;
567 resets = <&ccu RST_BUS_I2C2>;
568 pinctrl-names = "default";
569 pinctrl-0 = <&i2c2_pins>;
571 #address-cells = <1>;
576 compatible = "allwinner,sun50i-h6-spi",
577 "allwinner,sun8i-h3-spi";
578 reg = <0x05010000 0x1000>;
579 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
580 clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
581 clock-names = "ahb", "mod";
582 dmas = <&dma 22>, <&dma 22>;
583 dma-names = "rx", "tx";
584 resets = <&ccu RST_BUS_SPI0>;
586 #address-cells = <1>;
591 compatible = "allwinner,sun50i-h6-spi",
592 "allwinner,sun8i-h3-spi";
593 reg = <0x05011000 0x1000>;
594 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
595 clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
596 clock-names = "ahb", "mod";
597 dmas = <&dma 23>, <&dma 23>;
598 dma-names = "rx", "tx";
599 resets = <&ccu RST_BUS_SPI1>;
601 #address-cells = <1>;
605 emac: ethernet@5020000 {
606 compatible = "allwinner,sun50i-h6-emac",
607 "allwinner,sun50i-a64-emac";
609 reg = <0x05020000 0x10000>;
610 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
611 interrupt-names = "macirq";
612 resets = <&ccu RST_BUS_EMAC>;
613 reset-names = "stmmaceth";
614 clocks = <&ccu CLK_BUS_EMAC>;
615 clock-names = "stmmaceth";
619 compatible = "snps,dwmac-mdio";
620 #address-cells = <1>;
626 #sound-dai-cells = <0>;
627 compatible = "allwinner,sun50i-h6-i2s";
628 reg = <0x05091000 0x1000>;
629 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
630 clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
631 clock-names = "apb", "mod";
632 dmas = <&dma 4>, <&dma 4>;
633 resets = <&ccu RST_BUS_I2S1>;
634 dma-names = "rx", "tx";
638 spdif: spdif@5093000 {
639 #sound-dai-cells = <0>;
640 compatible = "allwinner,sun50i-h6-spdif";
641 reg = <0x05093000 0x400>;
642 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
643 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
644 clock-names = "apb", "spdif";
645 resets = <&ccu RST_BUS_SPDIF>;
648 pinctrl-names = "default";
649 pinctrl-0 = <&spdif_tx_pin>;
653 usb2otg: usb@5100000 {
654 compatible = "allwinner,sun50i-h6-musb",
655 "allwinner,sun8i-a33-musb";
656 reg = <0x05100000 0x0400>;
657 clocks = <&ccu CLK_BUS_OTG>;
658 resets = <&ccu RST_BUS_OTG>;
659 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
660 interrupt-names = "mc";
663 extcon = <&usb2phy 0>;
667 usb2phy: phy@5100400 {
668 compatible = "allwinner,sun50i-h6-usb-phy";
669 reg = <0x05100400 0x24>,
672 reg-names = "phy_ctrl",
675 clocks = <&ccu CLK_USB_PHY0>,
677 clock-names = "usb0_phy",
679 resets = <&ccu RST_USB_PHY0>,
681 reset-names = "usb0_reset",
688 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
689 reg = <0x05101000 0x100>;
690 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
691 clocks = <&ccu CLK_BUS_OHCI0>,
692 <&ccu CLK_BUS_EHCI0>,
693 <&ccu CLK_USB_OHCI0>;
694 resets = <&ccu RST_BUS_OHCI0>,
695 <&ccu RST_BUS_EHCI0>;
702 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
703 reg = <0x05101400 0x100>;
704 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
705 clocks = <&ccu CLK_BUS_OHCI0>,
706 <&ccu CLK_USB_OHCI0>;
707 resets = <&ccu RST_BUS_OHCI0>;
714 compatible = "snps,dwc3";
715 reg = <0x05200000 0x10000>;
716 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
717 clocks = <&ccu CLK_BUS_XHCI>,
720 clock-names = "ref", "bus_early", "suspend";
721 resets = <&ccu RST_BUS_XHCI>;
723 * The datasheet of the chip doesn't declare the
724 * peripheral function, and there's no boards known
725 * to have a USB Type-B port routed to the port.
726 * In addition, no one has tested the peripheral
728 * So set the dr_mode to "host" in the DTSI file.
732 phy-names = "usb3-phy";
736 usb3phy: phy@5210000 {
737 compatible = "allwinner,sun50i-h6-usb3-phy";
738 reg = <0x5210000 0x10000>;
739 clocks = <&ccu CLK_USB_PHY1>;
740 resets = <&ccu RST_USB_PHY1>;
746 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
747 reg = <0x05311000 0x100>;
748 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
749 clocks = <&ccu CLK_BUS_OHCI3>,
750 <&ccu CLK_BUS_EHCI3>,
751 <&ccu CLK_USB_OHCI3>;
752 resets = <&ccu RST_BUS_OHCI3>,
753 <&ccu RST_BUS_EHCI3>;
760 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
761 reg = <0x05311400 0x100>;
762 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
763 clocks = <&ccu CLK_BUS_OHCI3>,
764 <&ccu CLK_USB_OHCI3>;
765 resets = <&ccu RST_BUS_OHCI3>;
772 compatible = "allwinner,sun50i-h6-dw-hdmi";
773 reg = <0x06000000 0x10000>;
775 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
776 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
777 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
778 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
779 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
781 resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
782 reset-names = "ctrl", "hdcp";
785 pinctrl-names = "default";
786 pinctrl-0 = <&hdmi_pins>;
790 #address-cells = <1>;
796 hdmi_in_tcon_top: endpoint {
797 remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
807 hdmi_phy: hdmi-phy@6010000 {
808 compatible = "allwinner,sun50i-h6-hdmi-phy";
809 reg = <0x06010000 0x10000>;
810 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
811 clock-names = "bus", "mod";
812 resets = <&ccu RST_BUS_HDMI>;
817 tcon_top: tcon-top@6510000 {
818 compatible = "allwinner,sun50i-h6-tcon-top";
819 reg = <0x06510000 0x1000>;
820 clocks = <&ccu CLK_BUS_TCON_TOP>,
824 clock-output-names = "tcon-top-tv0";
825 resets = <&ccu RST_BUS_TCON_TOP>;
829 #address-cells = <1>;
832 tcon_top_mixer0_in: port@0 {
833 #address-cells = <1>;
837 tcon_top_mixer0_in_mixer0: endpoint@0 {
839 remote-endpoint = <&mixer0_out_tcon_top_mixer0>;
843 tcon_top_mixer0_out: port@1 {
844 #address-cells = <1>;
848 tcon_top_mixer0_out_tcon_tv: endpoint@2 {
850 remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>;
854 tcon_top_hdmi_in: port@4 {
855 #address-cells = <1>;
859 tcon_top_hdmi_in_tcon_tv: endpoint@0 {
861 remote-endpoint = <&tcon_tv_out_tcon_top>;
865 tcon_top_hdmi_out: port@5 {
868 tcon_top_hdmi_out_hdmi: endpoint {
869 remote-endpoint = <&hdmi_in_tcon_top>;
875 tcon_tv: lcd-controller@6515000 {
876 compatible = "allwinner,sun50i-h6-tcon-tv",
877 "allwinner,sun8i-r40-tcon-tv";
878 reg = <0x06515000 0x1000>;
879 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
880 clocks = <&ccu CLK_BUS_TCON_TV0>,
881 <&tcon_top CLK_TCON_TOP_TV0>;
884 resets = <&ccu RST_BUS_TCON_TV0>;
888 #address-cells = <1>;
894 tcon_tv_in_tcon_top_mixer0: endpoint {
895 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>;
899 tcon_tv_out: port@1 {
900 #address-cells = <1>;
904 tcon_tv_out_tcon_top: endpoint@1 {
906 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>;
913 compatible = "allwinner,sun50i-h6-rtc";
914 reg = <0x07000000 0x400>;
915 interrupt-parent = <&r_intc>;
916 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
917 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
918 clock-output-names = "osc32k", "osc32k-out", "iosc";
922 r_ccu: clock@7010000 {
923 compatible = "allwinner,sun50i-h6-r-ccu";
924 reg = <0x07010000 0x400>;
925 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
926 <&ccu CLK_PLL_PERIPH0>;
927 clock-names = "hosc", "losc", "iosc", "pll-periph";
932 r_watchdog: watchdog@7020400 {
933 compatible = "allwinner,sun50i-h6-wdt",
934 "allwinner,sun6i-a31-wdt";
935 reg = <0x07020400 0x20>;
936 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
940 r_intc: interrupt-controller@7021000 {
941 compatible = "allwinner,sun50i-h6-r-intc";
942 interrupt-controller;
943 #interrupt-cells = <3>;
944 reg = <0x07021000 0x400>;
945 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
948 r_pio: pinctrl@7022000 {
949 compatible = "allwinner,sun50i-h6-r-pinctrl";
950 reg = <0x07022000 0x400>;
951 interrupt-parent = <&r_intc>;
952 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
953 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
954 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>;
955 clock-names = "apb", "hosc", "losc";
958 interrupt-controller;
959 #interrupt-cells = <3>;
961 r_i2c_pins: r-i2c-pins {
966 r_ir_rx_pin: r-ir-rx-pin {
968 function = "s_cir_rx";
971 r_rsb_pins: r-rsb-pins {
978 compatible = "allwinner,sun50i-h6-ir",
979 "allwinner,sun6i-a31-ir";
980 reg = <0x07040000 0x400>;
981 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
982 clocks = <&r_ccu CLK_R_APB1_IR>,
984 clock-names = "apb", "ir";
985 resets = <&r_ccu RST_R_APB1_IR>;
986 pinctrl-names = "default";
987 pinctrl-0 = <&r_ir_rx_pin>;
992 compatible = "allwinner,sun50i-h6-i2c",
993 "allwinner,sun6i-a31-i2c";
994 reg = <0x07081400 0x400>;
995 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
996 clocks = <&r_ccu CLK_R_APB2_I2C>;
997 resets = <&r_ccu RST_R_APB2_I2C>;
998 pinctrl-names = "default";
999 pinctrl-0 = <&r_i2c_pins>;
1000 status = "disabled";
1001 #address-cells = <1>;
1005 r_rsb: rsb@7083000 {
1006 compatible = "allwinner,sun8i-a23-rsb";
1007 reg = <0x07083000 0x400>;
1008 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
1009 clocks = <&r_ccu CLK_R_APB2_RSB>;
1010 clock-frequency = <3000000>;
1011 resets = <&r_ccu RST_R_APB2_RSB>;
1012 pinctrl-names = "default";
1013 pinctrl-0 = <&r_rsb_pins>;
1014 status = "disabled";
1015 #address-cells = <1>;
1019 ths: thermal-sensor@5070400 {
1020 compatible = "allwinner,sun50i-h6-ths";
1021 reg = <0x05070400 0x100>;
1022 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
1023 clocks = <&ccu CLK_BUS_THS>;
1024 clock-names = "bus";
1025 resets = <&ccu RST_BUS_THS>;
1026 nvmem-cells = <&ths_calibration>;
1027 nvmem-cell-names = "calibration";
1028 #thermal-sensor-cells = <1>;
1034 polling-delay-passive = <0>;
1035 polling-delay = <0>;
1036 thermal-sensors = <&ths 0>;
1039 cpu_alert: cpu-alert {
1040 temperature = <85000>;
1041 hysteresis = <2000>;
1046 temperature = <100000>;
1054 trip = <&cpu_alert>;
1055 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1056 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1057 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1058 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
1064 polling-delay-passive = <0>;
1065 polling-delay = <0>;
1066 thermal-sensors = <&ths 1>;