1// SPDX-License-Identifier: (GPL-2.0+ or MIT)
2/*
3 * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
4 */
5
6#include <dt-bindings/interrupt-controller/arm-gic.h>
7#include <dt-bindings/clock/sun50i-h6-ccu.h>
8#include <dt-bindings/clock/sun50i-h6-r-ccu.h>
9#include <dt-bindings/clock/sun8i-de2.h>
10#include <dt-bindings/clock/sun8i-tcon-top.h>
11#include <dt-bindings/reset/sun50i-h6-ccu.h>
12#include <dt-bindings/reset/sun50i-h6-r-ccu.h>
13#include <dt-bindings/reset/sun8i-de2.h>
14
15/ {
16	interrupt-parent = <&gic>;
17	#address-cells = <1>;
18	#size-cells = <1>;
19
20	cpus {
21		#address-cells = <1>;
22		#size-cells = <0>;
23
24		cpu0: cpu@0 {
25			compatible = "arm,cortex-a53";
26			device_type = "cpu";
27			reg = <0>;
28			enable-method = "psci";
29		};
30
31		cpu1: cpu@1 {
32			compatible = "arm,cortex-a53";
33			device_type = "cpu";
34			reg = <1>;
35			enable-method = "psci";
36		};
37
38		cpu2: cpu@2 {
39			compatible = "arm,cortex-a53";
40			device_type = "cpu";
41			reg = <2>;
42			enable-method = "psci";
43		};
44
45		cpu3: cpu@3 {
46			compatible = "arm,cortex-a53";
47			device_type = "cpu";
48			reg = <3>;
49			enable-method = "psci";
50		};
51	};
52
53	de: display-engine {
54		compatible = "allwinner,sun50i-h6-display-engine";
55		allwinner,pipelines = <&mixer0>;
56		status = "disabled";
57	};
58
59	osc24M: osc24M_clk {
60		#clock-cells = <0>;
61		compatible = "fixed-clock";
62		clock-frequency = <24000000>;
63		clock-output-names = "osc24M";
64	};
65
66	ext_osc32k: ext_osc32k_clk {
67		#clock-cells = <0>;
68		compatible = "fixed-clock";
69		clock-frequency = <32768>;
70		clock-output-names = "ext_osc32k";
71	};
72
73	psci {
74		compatible = "arm,psci-0.2";
75		method = "smc";
76	};
77
78	timer {
79		compatible = "arm,armv8-timer";
80		interrupts = <GIC_PPI 13
81			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
82			     <GIC_PPI 14
83			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
84			     <GIC_PPI 11
85			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
86			     <GIC_PPI 10
87			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
88	};
89
90	soc {
91		compatible = "simple-bus";
92		#address-cells = <1>;
93		#size-cells = <1>;
94		ranges;
95
96		bus@1000000 {
97			compatible = "allwinner,sun50i-h6-de3",
98				     "allwinner,sun50i-a64-de2";
99			reg = <0x1000000 0x400000>;
100			allwinner,sram = <&de2_sram 1>;
101			#address-cells = <1>;
102			#size-cells = <1>;
103			ranges = <0 0x1000000 0x400000>;
104
105			display_clocks: clock@0 {
106				compatible = "allwinner,sun50i-h6-de3-clk";
107				reg = <0x0 0x10000>;
108				clocks = <&ccu CLK_DE>,
109					 <&ccu CLK_BUS_DE>;
110				clock-names = "mod",
111					      "bus";
112				resets = <&ccu RST_BUS_DE>;
113				#clock-cells = <1>;
114				#reset-cells = <1>;
115			};
116
117			mixer0: mixer@100000 {
118				compatible = "allwinner,sun50i-h6-de3-mixer-0";
119				reg = <0x100000 0x100000>;
120				clocks = <&display_clocks CLK_BUS_MIXER0>,
121					 <&display_clocks CLK_MIXER0>;
122				clock-names = "bus",
123					      "mod";
124				resets = <&display_clocks RST_MIXER0>;
125
126				ports {
127					#address-cells = <1>;
128					#size-cells = <0>;
129
130					mixer0_out: port@1 {
131						reg = <1>;
132
133						mixer0_out_tcon_top_mixer0: endpoint {
134							remote-endpoint = <&tcon_top_mixer0_in_mixer0>;
135						};
136					};
137				};
138			};
139		};
140
141		video-codec@1c0e000 {
142			compatible = "allwinner,sun50i-h6-video-engine";
143			reg = <0x01c0e000 0x2000>;
144			clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
145				 <&ccu CLK_MBUS_VE>;
146			clock-names = "ahb", "mod", "ram";
147			resets = <&ccu RST_BUS_VE>;
148			interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
149			allwinner,sram = <&ve_sram 1>;
150		};
151
152		syscon: syscon@3000000 {
153			compatible = "allwinner,sun50i-h6-system-control",
154				     "allwinner,sun50i-a64-system-control";
155			reg = <0x03000000 0x1000>;
156			#address-cells = <1>;
157			#size-cells = <1>;
158			ranges;
159
160			sram_c: sram@28000 {
161				compatible = "mmio-sram";
162				reg = <0x00028000 0x1e000>;
163				#address-cells = <1>;
164				#size-cells = <1>;
165				ranges = <0 0x00028000 0x1e000>;
166
167				de2_sram: sram-section@0 {
168					compatible = "allwinner,sun50i-h6-sram-c",
169						     "allwinner,sun50i-a64-sram-c";
170					reg = <0x0000 0x1e000>;
171				};
172			};
173
174			sram_c1: sram@1a00000 {
175				compatible = "mmio-sram";
176				reg = <0x01a00000 0x200000>;
177				#address-cells = <1>;
178				#size-cells = <1>;
179				ranges = <0 0x01a00000 0x200000>;
180
181				ve_sram: sram-section@0 {
182					compatible = "allwinner,sun50i-h6-sram-c1",
183						     "allwinner,sun4i-a10-sram-c1";
184					reg = <0x000000 0x200000>;
185				};
186			};
187		};
188
189		ccu: clock@3001000 {
190			compatible = "allwinner,sun50i-h6-ccu";
191			reg = <0x03001000 0x1000>;
192			clocks = <&osc24M>, <&rtc 0>, <&rtc 2>;
193			clock-names = "hosc", "losc", "iosc";
194			#clock-cells = <1>;
195			#reset-cells = <1>;
196		};
197
198		dma: dma-controller@3002000 {
199			compatible = "allwinner,sun50i-h6-dma";
200			reg = <0x03002000 0x1000>;
201			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
202			clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
203			clock-names = "bus", "mbus";
204			dma-channels = <16>;
205			dma-requests = <46>;
206			resets = <&ccu RST_BUS_DMA>;
207			#dma-cells = <1>;
208		};
209
210		sid: efuse@3006000 {
211			compatible = "allwinner,sun50i-h6-sid";
212			reg = <0x03006000 0x400>;
213		};
214
215		watchdog: watchdog@30090a0 {
216			compatible = "allwinner,sun50i-h6-wdt",
217				     "allwinner,sun6i-a31-wdt";
218			reg = <0x030090a0 0x20>;
219			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
220			clocks = <&osc24M>;
221			/* Broken on some H6 boards */
222			status = "disabled";
223		};
224
225		pio: pinctrl@300b000 {
226			compatible = "allwinner,sun50i-h6-pinctrl";
227			reg = <0x0300b000 0x400>;
228			interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
229				     <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
230				     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
231				     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
232			clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>;
233			clock-names = "apb", "hosc", "losc";
234			gpio-controller;
235			#gpio-cells = <3>;
236			interrupt-controller;
237			#interrupt-cells = <3>;
238
239			ext_rgmii_pins: rgmii-pins {
240				pins = "PD0", "PD1", "PD2", "PD3", "PD4",
241				       "PD5", "PD7", "PD8", "PD9", "PD10",
242				       "PD11", "PD12", "PD13", "PD19", "PD20";
243				function = "emac";
244				drive-strength = <40>;
245			};
246
247			hdmi_pins: hdmi-pins {
248				pins = "PH8", "PH9", "PH10";
249				function = "hdmi";
250			};
251
252			i2c0_pins: i2c0-pins {
253				pins = "PD25", "PD26";
254				function = "i2c0";
255			};
256
257			i2c1_pins: i2c1-pins {
258				pins = "PH5", "PH6";
259				function = "i2c1";
260			};
261
262			i2c2_pins: i2c2-pins {
263				pins = "PD23", "PD24";
264				function = "i2c2";
265			};
266
267			mmc0_pins: mmc0-pins {
268				pins = "PF0", "PF1", "PF2", "PF3",
269				       "PF4", "PF5";
270				function = "mmc0";
271				drive-strength = <30>;
272				bias-pull-up;
273			};
274
275			/omit-if-no-ref/
276			mmc1_pins: mmc1-pins {
277				pins = "PG0", "PG1", "PG2", "PG3",
278				       "PG4", "PG5";
279				function = "mmc1";
280				drive-strength = <30>;
281				bias-pull-up;
282			};
283
284			mmc2_pins: mmc2-pins {
285				pins = "PC1", "PC4", "PC5", "PC6",
286				       "PC7", "PC8", "PC9", "PC10",
287				       "PC11", "PC12", "PC13", "PC14";
288				function = "mmc2";
289				drive-strength = <30>;
290				bias-pull-up;
291			};
292
293			spdif_tx_pin: spdif-tx-pin {
294				pins = "PH7";
295				function = "spdif";
296			};
297
298			uart0_ph_pins: uart0-ph-pins {
299				pins = "PH0", "PH1";
300				function = "uart0";
301			};
302		};
303
304		gic: interrupt-controller@3021000 {
305			compatible = "arm,gic-400";
306			reg = <0x03021000 0x1000>,
307			      <0x03022000 0x2000>,
308			      <0x03024000 0x2000>,
309			      <0x03026000 0x2000>;
310			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
311			interrupt-controller;
312			#interrupt-cells = <3>;
313		};
314
315		mmc0: mmc@4020000 {
316			compatible = "allwinner,sun50i-h6-mmc",
317				     "allwinner,sun50i-a64-mmc";
318			reg = <0x04020000 0x1000>;
319			clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
320			clock-names = "ahb", "mmc";
321			resets = <&ccu RST_BUS_MMC0>;
322			reset-names = "ahb";
323			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
324			pinctrl-names = "default";
325			pinctrl-0 = <&mmc0_pins>;
326			status = "disabled";
327			#address-cells = <1>;
328			#size-cells = <0>;
329		};
330
331		mmc1: mmc@4021000 {
332			compatible = "allwinner,sun50i-h6-mmc",
333				     "allwinner,sun50i-a64-mmc";
334			reg = <0x04021000 0x1000>;
335			clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
336			clock-names = "ahb", "mmc";
337			resets = <&ccu RST_BUS_MMC1>;
338			reset-names = "ahb";
339			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
340			pinctrl-names = "default";
341			pinctrl-0 = <&mmc1_pins>;
342			status = "disabled";
343			#address-cells = <1>;
344			#size-cells = <0>;
345		};
346
347		mmc2: mmc@4022000 {
348			compatible = "allwinner,sun50i-h6-emmc",
349				     "allwinner,sun50i-a64-emmc";
350			reg = <0x04022000 0x1000>;
351			clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
352			clock-names = "ahb", "mmc";
353			resets = <&ccu RST_BUS_MMC2>;
354			reset-names = "ahb";
355			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
356			pinctrl-names = "default";
357			pinctrl-0 = <&mmc2_pins>;
358			status = "disabled";
359			#address-cells = <1>;
360			#size-cells = <0>;
361		};
362
363		uart0: serial@5000000 {
364			compatible = "snps,dw-apb-uart";
365			reg = <0x05000000 0x400>;
366			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
367			reg-shift = <2>;
368			reg-io-width = <4>;
369			clocks = <&ccu CLK_BUS_UART0>;
370			resets = <&ccu RST_BUS_UART0>;
371			status = "disabled";
372		};
373
374		uart1: serial@5000400 {
375			compatible = "snps,dw-apb-uart";
376			reg = <0x05000400 0x400>;
377			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
378			reg-shift = <2>;
379			reg-io-width = <4>;
380			clocks = <&ccu CLK_BUS_UART1>;
381			resets = <&ccu RST_BUS_UART1>;
382			status = "disabled";
383		};
384
385		uart2: serial@5000800 {
386			compatible = "snps,dw-apb-uart";
387			reg = <0x05000800 0x400>;
388			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
389			reg-shift = <2>;
390			reg-io-width = <4>;
391			clocks = <&ccu CLK_BUS_UART2>;
392			resets = <&ccu RST_BUS_UART2>;
393			status = "disabled";
394		};
395
396		uart3: serial@5000c00 {
397			compatible = "snps,dw-apb-uart";
398			reg = <0x05000c00 0x400>;
399			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
400			reg-shift = <2>;
401			reg-io-width = <4>;
402			clocks = <&ccu CLK_BUS_UART3>;
403			resets = <&ccu RST_BUS_UART3>;
404			status = "disabled";
405		};
406
407		i2c0: i2c@5002000 {
408			compatible = "allwinner,sun50i-h6-i2c",
409				     "allwinner,sun6i-a31-i2c";
410			reg = <0x05002000 0x400>;
411			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
412			clocks = <&ccu CLK_BUS_I2C0>;
413			resets = <&ccu RST_BUS_I2C0>;
414			pinctrl-names = "default";
415			pinctrl-0 = <&i2c0_pins>;
416			status = "disabled";
417			#address-cells = <1>;
418			#size-cells = <0>;
419		};
420
421		i2c1: i2c@5002400 {
422			compatible = "allwinner,sun50i-h6-i2c",
423				     "allwinner,sun6i-a31-i2c";
424			reg = <0x05002400 0x400>;
425			interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
426			clocks = <&ccu CLK_BUS_I2C1>;
427			resets = <&ccu RST_BUS_I2C1>;
428			pinctrl-names = "default";
429			pinctrl-0 = <&i2c1_pins>;
430			status = "disabled";
431			#address-cells = <1>;
432			#size-cells = <0>;
433		};
434
435		i2c2: i2c@5002800 {
436			compatible = "allwinner,sun50i-h6-i2c",
437				     "allwinner,sun6i-a31-i2c";
438			reg = <0x05002800 0x400>;
439			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
440			clocks = <&ccu CLK_BUS_I2C2>;
441			resets = <&ccu RST_BUS_I2C2>;
442			pinctrl-names = "default";
443			pinctrl-0 = <&i2c2_pins>;
444			status = "disabled";
445			#address-cells = <1>;
446			#size-cells = <0>;
447		};
448
449		emac: ethernet@5020000 {
450			compatible = "allwinner,sun50i-h6-emac",
451				     "allwinner,sun50i-a64-emac";
452			syscon = <&syscon>;
453			reg = <0x05020000 0x10000>;
454			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
455			interrupt-names = "macirq";
456			resets = <&ccu RST_BUS_EMAC>;
457			reset-names = "stmmaceth";
458			clocks = <&ccu CLK_BUS_EMAC>;
459			clock-names = "stmmaceth";
460			status = "disabled";
461
462			mdio: mdio {
463				compatible = "snps,dwmac-mdio";
464				#address-cells = <1>;
465				#size-cells = <0>;
466			};
467		};
468
469		spdif: spdif@5093000 {
470			#sound-dai-cells = <0>;
471			compatible = "allwinner,sun50i-h6-spdif";
472			reg = <0x05093000 0x400>;
473			interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
474			clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
475			clock-names = "apb", "spdif";
476			resets = <&ccu RST_BUS_SPDIF>;
477			dmas = <&dma 2>;
478			dma-names = "tx";
479			pinctrl-names = "default";
480			pinctrl-0 = <&spdif_tx_pin>;
481			status = "disabled";
482		};
483
484		usb2otg: usb@5100000 {
485			compatible = "allwinner,sun50i-h6-musb",
486				     "allwinner,sun8i-a33-musb";
487			reg = <0x05100000 0x0400>;
488			clocks = <&ccu CLK_BUS_OTG>;
489			resets = <&ccu RST_BUS_OTG>;
490			interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
491			interrupt-names = "mc";
492			phys = <&usb2phy 0>;
493			phy-names = "usb";
494			extcon = <&usb2phy 0>;
495			status = "disabled";
496		};
497
498		usb2phy: phy@5100400 {
499			compatible = "allwinner,sun50i-h6-usb-phy";
500			reg = <0x05100400 0x24>,
501			      <0x05101800 0x4>,
502			      <0x05311800 0x4>;
503			reg-names = "phy_ctrl",
504				    "pmu0",
505				    "pmu3";
506			clocks = <&ccu CLK_USB_PHY0>,
507				 <&ccu CLK_USB_PHY3>;
508			clock-names = "usb0_phy",
509				      "usb3_phy";
510			resets = <&ccu RST_USB_PHY0>,
511				 <&ccu RST_USB_PHY3>;
512			reset-names = "usb0_reset",
513				      "usb3_reset";
514			status = "disabled";
515			#phy-cells = <1>;
516		};
517
518		ehci0: usb@5101000 {
519			compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
520			reg = <0x05101000 0x100>;
521			interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
522			clocks = <&ccu CLK_BUS_OHCI0>,
523				 <&ccu CLK_BUS_EHCI0>,
524				 <&ccu CLK_USB_OHCI0>;
525			resets = <&ccu RST_BUS_OHCI0>,
526				 <&ccu RST_BUS_EHCI0>;
527			status = "disabled";
528		};
529
530		ohci0: usb@5101400 {
531			compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
532			reg = <0x05101400 0x100>;
533			interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
534			clocks = <&ccu CLK_BUS_OHCI0>,
535				 <&ccu CLK_USB_OHCI0>;
536			resets = <&ccu RST_BUS_OHCI0>;
537			status = "disabled";
538		};
539
540		ehci3: usb@5311000 {
541			compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
542			reg = <0x05311000 0x100>;
543			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
544			clocks = <&ccu CLK_BUS_OHCI3>,
545				 <&ccu CLK_BUS_EHCI3>,
546				 <&ccu CLK_USB_OHCI3>;
547			resets = <&ccu RST_BUS_OHCI3>,
548				 <&ccu RST_BUS_EHCI3>;
549			phys = <&usb2phy 3>;
550			status = "disabled";
551		};
552
553		ohci3: usb@5311400 {
554			compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
555			reg = <0x05311400 0x100>;
556			interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
557			clocks = <&ccu CLK_BUS_OHCI3>,
558				 <&ccu CLK_USB_OHCI3>;
559			resets = <&ccu RST_BUS_OHCI3>;
560			phys = <&usb2phy 3>;
561			status = "disabled";
562		};
563
564		hdmi: hdmi@6000000 {
565			compatible = "allwinner,sun50i-h6-dw-hdmi";
566			reg = <0x06000000 0x10000>;
567			reg-io-width = <1>;
568			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
569			clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
570				 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
571				 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
572			clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
573				      "hdcp-bus";
574			resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
575			reset-names = "ctrl", "hdcp";
576			phys = <&hdmi_phy>;
577			phy-names = "phy";
578			pinctrl-names = "default";
579			pinctrl-0 = <&hdmi_pins>;
580			status = "disabled";
581
582			ports {
583				#address-cells = <1>;
584				#size-cells = <0>;
585
586				hdmi_in: port@0 {
587					reg = <0>;
588
589					hdmi_in_tcon_top: endpoint {
590						remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
591					};
592				};
593
594				hdmi_out: port@1 {
595					reg = <1>;
596				};
597			};
598		};
599
600		hdmi_phy: hdmi-phy@6010000 {
601			compatible = "allwinner,sun50i-h6-hdmi-phy";
602			reg = <0x06010000 0x10000>;
603			clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
604			clock-names = "bus", "mod";
605			resets = <&ccu RST_BUS_HDMI>;
606			reset-names = "phy";
607			#phy-cells = <0>;
608		};
609
610		tcon_top: tcon-top@6510000 {
611			compatible = "allwinner,sun50i-h6-tcon-top";
612			reg = <0x06510000 0x1000>;
613			clocks = <&ccu CLK_BUS_TCON_TOP>,
614				 <&ccu CLK_TCON_TV0>;
615			clock-names = "bus",
616				      "tcon-tv0";
617			clock-output-names = "tcon-top-tv0";
618			resets = <&ccu RST_BUS_TCON_TOP>;
619			reset-names = "rst";
620			#clock-cells = <1>;
621
622			ports {
623				#address-cells = <1>;
624				#size-cells = <0>;
625
626				tcon_top_mixer0_in: port@0 {
627					#address-cells = <1>;
628					#size-cells = <0>;
629					reg = <0>;
630
631					tcon_top_mixer0_in_mixer0: endpoint@0 {
632						reg = <0>;
633						remote-endpoint = <&mixer0_out_tcon_top_mixer0>;
634					};
635				};
636
637				tcon_top_mixer0_out: port@1 {
638					#address-cells = <1>;
639					#size-cells = <0>;
640					reg = <1>;
641
642					tcon_top_mixer0_out_tcon_tv: endpoint@2 {
643						reg = <2>;
644						remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>;
645					};
646				};
647
648				tcon_top_hdmi_in: port@4 {
649					#address-cells = <1>;
650					#size-cells = <0>;
651					reg = <4>;
652
653					tcon_top_hdmi_in_tcon_tv: endpoint@0 {
654						reg = <0>;
655						remote-endpoint = <&tcon_tv_out_tcon_top>;
656					};
657				};
658
659				tcon_top_hdmi_out: port@5 {
660					reg = <5>;
661
662					tcon_top_hdmi_out_hdmi: endpoint {
663						remote-endpoint = <&hdmi_in_tcon_top>;
664					};
665				};
666			};
667		};
668
669		tcon_tv: lcd-controller@6515000 {
670			compatible = "allwinner,sun50i-h6-tcon-tv",
671				     "allwinner,sun8i-r40-tcon-tv";
672			reg = <0x06515000 0x1000>;
673			interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
674			clocks = <&ccu CLK_BUS_TCON_TV0>,
675				 <&tcon_top CLK_TCON_TOP_TV0>;
676			clock-names = "ahb",
677				      "tcon-ch1";
678			resets = <&ccu RST_BUS_TCON_TV0>;
679			reset-names = "lcd";
680
681			ports {
682				#address-cells = <1>;
683				#size-cells = <0>;
684
685				tcon_tv_in: port@0 {
686					reg = <0>;
687
688					tcon_tv_in_tcon_top_mixer0: endpoint {
689						remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>;
690					};
691				};
692
693				tcon_tv_out: port@1 {
694					#address-cells = <1>;
695					#size-cells = <0>;
696					reg = <1>;
697
698					tcon_tv_out_tcon_top: endpoint@1 {
699						reg = <1>;
700						remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>;
701					};
702				};
703			};
704		};
705
706		rtc: rtc@7000000 {
707			compatible = "allwinner,sun50i-h6-rtc";
708			reg = <0x07000000 0x400>;
709			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
710				     <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
711			clock-output-names = "osc32k", "osc32k-out", "iosc";
712			clocks = <&ext_osc32k>;
713			#clock-cells = <1>;
714		};
715
716		r_ccu: clock@7010000 {
717			compatible = "allwinner,sun50i-h6-r-ccu";
718			reg = <0x07010000 0x400>;
719			clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
720				 <&ccu CLK_PLL_PERIPH0>;
721			clock-names = "hosc", "losc", "iosc", "pll-periph";
722			#clock-cells = <1>;
723			#reset-cells = <1>;
724		};
725
726		r_watchdog: watchdog@7020400 {
727			compatible = "allwinner,sun50i-h6-wdt",
728				     "allwinner,sun6i-a31-wdt";
729			reg = <0x07020400 0x20>;
730			interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
731			clocks = <&osc24M>;
732		};
733
734		r_intc: interrupt-controller@7021000 {
735			compatible = "allwinner,sun50i-h6-r-intc",
736				     "allwinner,sun6i-a31-r-intc";
737			interrupt-controller;
738			#interrupt-cells = <2>;
739			reg = <0x07021000 0x400>;
740			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
741		};
742
743		r_pio: pinctrl@7022000 {
744			compatible = "allwinner,sun50i-h6-r-pinctrl";
745			reg = <0x07022000 0x400>;
746			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
747				     <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
748			clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>;
749			clock-names = "apb", "hosc", "losc";
750			gpio-controller;
751			#gpio-cells = <3>;
752			interrupt-controller;
753			#interrupt-cells = <3>;
754
755			r_i2c_pins: r-i2c-pins {
756				pins = "PL0", "PL1";
757				function = "s_i2c";
758			};
759
760			r_ir_rx_pin: r-ir-rx-pin {
761				pins = "PL9";
762				function = "s_cir_rx";
763			};
764		};
765
766		r_ir: ir@7040000 {
767				compatible = "allwinner,sun50i-h6-ir",
768					     "allwinner,sun6i-a31-ir";
769				reg = <0x07040000 0x400>;
770				interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
771				clocks = <&r_ccu CLK_R_APB1_IR>,
772					 <&r_ccu CLK_IR>;
773				clock-names = "apb", "ir";
774				resets = <&r_ccu RST_R_APB1_IR>;
775				pinctrl-names = "default";
776				pinctrl-0 = <&r_ir_rx_pin>;
777				status = "disabled";
778		};
779
780		r_i2c: i2c@7081400 {
781			compatible = "allwinner,sun50i-h6-i2c",
782				     "allwinner,sun6i-a31-i2c";
783			reg = <0x07081400 0x400>;
784			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
785			clocks = <&r_ccu CLK_R_APB2_I2C>;
786			resets = <&r_ccu RST_R_APB2_I2C>;
787			pinctrl-names = "default";
788			pinctrl-0 = <&r_i2c_pins>;
789			status = "disabled";
790			#address-cells = <1>;
791			#size-cells = <0>;
792		};
793	};
794};
795