blob: 91fecab58836dc3d700af8222cfa32a09b0e7ee5 [file] [log] [blame]
Icenowy Zhenge54be322018-03-16 22:02:14 +08001// 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>
Icenowy Zheng95beb932018-04-03 21:40:24 +08007#include <dt-bindings/clock/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +08008#include <dt-bindings/clock/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +01009#include <dt-bindings/clock/sun8i-de2.h>
10#include <dt-bindings/clock/sun8i-tcon-top.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +080011#include <dt-bindings/reset/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +080012#include <dt-bindings/reset/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +010013#include <dt-bindings/reset/sun8i-de2.h>
Icenowy Zhenge54be322018-03-16 22:02:14 +080014
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 {
Rob Herring31af04c2019-01-14 11:45:33 -060025 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080026 device_type = "cpu";
27 reg = <0>;
28 enable-method = "psci";
29 };
30
31 cpu1: cpu@1 {
Rob Herring31af04c2019-01-14 11:45:33 -060032 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080033 device_type = "cpu";
34 reg = <1>;
35 enable-method = "psci";
36 };
37
38 cpu2: cpu@2 {
Rob Herring31af04c2019-01-14 11:45:33 -060039 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080040 device_type = "cpu";
41 reg = <2>;
42 enable-method = "psci";
43 };
44
45 cpu3: cpu@3 {
Rob Herring31af04c2019-01-14 11:45:33 -060046 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080047 device_type = "cpu";
48 reg = <3>;
49 enable-method = "psci";
50 };
51 };
52
Jernej Skrabec209065c2018-11-04 19:27:04 +010053 de: display-engine {
54 compatible = "allwinner,sun50i-h6-display-engine";
55 allwinner,pipelines = <&mixer0>;
56 status = "disabled";
57 };
58
Icenowy Zhenge54be322018-03-16 22:02:14 +080059 iosc: internal-osc-clk {
60 #clock-cells = <0>;
61 compatible = "fixed-clock";
62 clock-frequency = <16000000>;
63 clock-accuracy = <300000000>;
64 clock-output-names = "iosc";
65 };
66
67 osc24M: osc24M_clk {
68 #clock-cells = <0>;
69 compatible = "fixed-clock";
70 clock-frequency = <24000000>;
71 clock-output-names = "osc24M";
72 };
73
74 osc32k: osc32k_clk {
75 #clock-cells = <0>;
76 compatible = "fixed-clock";
77 clock-frequency = <32768>;
78 clock-output-names = "osc32k";
79 };
80
81 psci {
82 compatible = "arm,psci-0.2";
83 method = "smc";
84 };
85
86 timer {
87 compatible = "arm,armv8-timer";
88 interrupts = <GIC_PPI 13
89 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
90 <GIC_PPI 14
91 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
92 <GIC_PPI 11
93 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
94 <GIC_PPI 10
95 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
96 };
97
98 soc {
99 compatible = "simple-bus";
100 #address-cells = <1>;
101 #size-cells = <1>;
102 ranges;
103
Jernej Skrabec209065c2018-11-04 19:27:04 +0100104 display-engine@1000000 {
105 compatible = "allwinner,sun50i-h6-de3",
106 "allwinner,sun50i-a64-de2";
107 reg = <0x1000000 0x400000>;
108 allwinner,sram = <&de2_sram 1>;
109 #address-cells = <1>;
110 #size-cells = <1>;
111 ranges = <0 0x1000000 0x400000>;
112
113 display_clocks: clock@0 {
114 compatible = "allwinner,sun50i-h6-de3-clk";
115 reg = <0x0 0x10000>;
116 clocks = <&ccu CLK_DE>,
117 <&ccu CLK_BUS_DE>;
118 clock-names = "mod",
119 "bus";
120 resets = <&ccu RST_BUS_DE>;
121 #clock-cells = <1>;
122 #reset-cells = <1>;
123 };
124
125 mixer0: mixer@100000 {
126 compatible = "allwinner,sun50i-h6-de3-mixer-0";
127 reg = <0x100000 0x100000>;
128 clocks = <&display_clocks CLK_BUS_MIXER0>,
129 <&display_clocks CLK_MIXER0>;
130 clock-names = "bus",
131 "mod";
132 resets = <&display_clocks RST_MIXER0>;
133
134 ports {
135 #address-cells = <1>;
136 #size-cells = <0>;
137
138 mixer0_out: port@1 {
139 reg = <1>;
140
141 mixer0_out_tcon_top_mixer0: endpoint {
142 remote-endpoint = <&tcon_top_mixer0_in_mixer0>;
143 };
144 };
145 };
146 };
147 };
148
Jernej Skrabecb5425702019-01-28 21:55:04 +0100149 video-codec@1c0e000 {
150 compatible = "allwinner,sun50i-h6-video-engine";
151 reg = <0x01c0e000 0x2000>;
152 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
153 <&ccu CLK_MBUS_VE>;
154 clock-names = "ahb", "mod", "ram";
155 resets = <&ccu RST_BUS_VE>;
156 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
157 allwinner,sram = <&ve_sram 1>;
158 };
159
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200160 syscon: syscon@3000000 {
161 compatible = "allwinner,sun50i-h6-system-control",
162 "allwinner,sun50i-a64-system-control";
163 reg = <0x03000000 0x1000>;
164 #address-cells = <1>;
165 #size-cells = <1>;
166 ranges;
167
168 sram_c: sram@28000 {
169 compatible = "mmio-sram";
170 reg = <0x00028000 0x1e000>;
171 #address-cells = <1>;
172 #size-cells = <1>;
173 ranges = <0 0x00028000 0x1e000>;
174
175 de2_sram: sram-section@0 {
176 compatible = "allwinner,sun50i-h6-sram-c",
177 "allwinner,sun50i-a64-sram-c";
178 reg = <0x0000 0x1e000>;
179 };
180 };
Jernej Skrabec24dd8ae2019-01-28 21:55:03 +0100181
182 sram_c1: sram@1a00000 {
183 compatible = "mmio-sram";
184 reg = <0x01a00000 0x200000>;
185 #address-cells = <1>;
186 #size-cells = <1>;
187 ranges = <0 0x01a00000 0x200000>;
188
189 ve_sram: sram-section@0 {
190 compatible = "allwinner,sun50i-h6-sram-c1",
191 "allwinner,sun4i-a10-sram-c1";
192 reg = <0x000000 0x200000>;
193 };
194 };
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200195 };
196
Icenowy Zhenge54be322018-03-16 22:02:14 +0800197 ccu: clock@3001000 {
198 compatible = "allwinner,sun50i-h6-ccu";
199 reg = <0x03001000 0x1000>;
200 clocks = <&osc24M>, <&osc32k>, <&iosc>;
201 clock-names = "hosc", "losc", "iosc";
202 #clock-cells = <1>;
203 #reset-cells = <1>;
204 };
205
Icenowy Zhenge54be322018-03-16 22:02:14 +0800206 pio: pinctrl@300b000 {
207 compatible = "allwinner,sun50i-h6-pinctrl";
208 reg = <0x0300b000 0x400>;
209 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
210 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
211 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
212 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800213 clocks = <&ccu CLK_APB1>, <&osc24M>, <&osc32k>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800214 clock-names = "apb", "hosc", "losc";
215 gpio-controller;
216 #gpio-cells = <3>;
217 interrupt-controller;
218 #interrupt-cells = <3>;
219
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100220 ext_rgmii_pins: rgmii-pins {
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800221 pins = "PD0", "PD1", "PD2", "PD3", "PD4",
222 "PD5", "PD7", "PD8", "PD9", "PD10",
223 "PD11", "PD12", "PD13", "PD19", "PD20";
224 function = "emac";
225 drive-strength = <40>;
226 };
227
Jernej Skrabec209065c2018-11-04 19:27:04 +0100228 hdmi_pins: hdmi-pins {
229 pins = "PH8", "PH9", "PH10";
230 function = "hdmi";
231 };
232
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800233 mmc0_pins: mmc0-pins {
234 pins = "PF0", "PF1", "PF2", "PF3",
235 "PF4", "PF5";
236 function = "mmc0";
237 drive-strength = <30>;
238 bias-pull-up;
239 };
240
241 mmc2_pins: mmc2-pins {
242 pins = "PC1", "PC4", "PC5", "PC6",
243 "PC7", "PC8", "PC9", "PC10",
244 "PC11", "PC12", "PC13", "PC14";
245 function = "mmc2";
246 drive-strength = <30>;
247 bias-pull-up;
248 };
249
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100250 uart0_ph_pins: uart0-ph-pins {
Icenowy Zhenge54be322018-03-16 22:02:14 +0800251 pins = "PH0", "PH1";
252 function = "uart0";
253 };
254 };
255
Chen-Yu Tsai52d9bcb2019-01-28 00:39:30 +0800256 gic: interrupt-controller@3021000 {
257 compatible = "arm,gic-400";
258 reg = <0x03021000 0x1000>,
259 <0x03022000 0x2000>,
260 <0x03024000 0x2000>,
261 <0x03026000 0x2000>;
262 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
263 interrupt-controller;
264 #interrupt-cells = <3>;
265 };
266
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800267 mmc0: mmc@4020000 {
268 compatible = "allwinner,sun50i-h6-mmc",
269 "allwinner,sun50i-a64-mmc";
270 reg = <0x04020000 0x1000>;
271 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
272 clock-names = "ahb", "mmc";
273 resets = <&ccu RST_BUS_MMC0>;
274 reset-names = "ahb";
275 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
276 status = "disabled";
277 #address-cells = <1>;
278 #size-cells = <0>;
279 };
280
281 mmc1: mmc@4021000 {
282 compatible = "allwinner,sun50i-h6-mmc",
283 "allwinner,sun50i-a64-mmc";
284 reg = <0x04021000 0x1000>;
285 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
286 clock-names = "ahb", "mmc";
287 resets = <&ccu RST_BUS_MMC1>;
288 reset-names = "ahb";
289 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
290 status = "disabled";
291 #address-cells = <1>;
292 #size-cells = <0>;
293 };
294
295 mmc2: mmc@4022000 {
296 compatible = "allwinner,sun50i-h6-emmc",
297 "allwinner,sun50i-a64-emmc";
298 reg = <0x04022000 0x1000>;
299 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
300 clock-names = "ahb", "mmc";
301 resets = <&ccu RST_BUS_MMC2>;
302 reset-names = "ahb";
303 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
304 status = "disabled";
305 #address-cells = <1>;
306 #size-cells = <0>;
307 };
308
Icenowy Zhenge54be322018-03-16 22:02:14 +0800309 uart0: serial@5000000 {
310 compatible = "snps,dw-apb-uart";
311 reg = <0x05000000 0x400>;
312 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
313 reg-shift = <2>;
314 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800315 clocks = <&ccu CLK_BUS_UART0>;
316 resets = <&ccu RST_BUS_UART0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800317 status = "disabled";
318 };
319
320 uart1: serial@5000400 {
321 compatible = "snps,dw-apb-uart";
322 reg = <0x05000400 0x400>;
323 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
324 reg-shift = <2>;
325 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800326 clocks = <&ccu CLK_BUS_UART1>;
327 resets = <&ccu RST_BUS_UART1>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800328 status = "disabled";
329 };
330
331 uart2: serial@5000800 {
332 compatible = "snps,dw-apb-uart";
333 reg = <0x05000800 0x400>;
334 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
335 reg-shift = <2>;
336 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800337 clocks = <&ccu CLK_BUS_UART2>;
338 resets = <&ccu RST_BUS_UART2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800339 status = "disabled";
340 };
341
342 uart3: serial@5000c00 {
343 compatible = "snps,dw-apb-uart";
344 reg = <0x05000c00 0x400>;
345 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
346 reg-shift = <2>;
347 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800348 clocks = <&ccu CLK_BUS_UART3>;
349 resets = <&ccu RST_BUS_UART3>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800350 status = "disabled";
351 };
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800352
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800353 emac: ethernet@5020000 {
Icenowy Zheng29ce4e42018-11-15 11:15:51 +0800354 compatible = "allwinner,sun50i-h6-emac",
355 "allwinner,sun50i-a64-emac";
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800356 syscon = <&syscon>;
357 reg = <0x05020000 0x10000>;
358 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
359 interrupt-names = "macirq";
360 resets = <&ccu RST_BUS_EMAC>;
361 reset-names = "stmmaceth";
362 clocks = <&ccu CLK_BUS_EMAC>;
363 clock-names = "stmmaceth";
364 status = "disabled";
365
366 mdio: mdio {
367 compatible = "snps,dwmac-mdio";
368 #address-cells = <1>;
369 #size-cells = <0>;
370 };
371 };
372
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800373 usb2otg: usb@5100000 {
374 compatible = "allwinner,sun50i-h6-musb",
375 "allwinner,sun8i-a33-musb";
376 reg = <0x05100000 0x0400>;
377 clocks = <&ccu CLK_BUS_OTG>;
378 resets = <&ccu RST_BUS_OTG>;
379 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
380 interrupt-names = "mc";
381 phys = <&usb2phy 0>;
382 phy-names = "usb";
383 extcon = <&usb2phy 0>;
384 status = "disabled";
385 };
386
387 usb2phy: phy@5100400 {
388 compatible = "allwinner,sun50i-h6-usb-phy";
389 reg = <0x05100400 0x24>,
390 <0x05101800 0x4>,
391 <0x05311800 0x4>;
392 reg-names = "phy_ctrl",
393 "pmu0",
394 "pmu3";
395 clocks = <&ccu CLK_USB_PHY0>,
396 <&ccu CLK_USB_PHY3>;
397 clock-names = "usb0_phy",
398 "usb3_phy";
399 resets = <&ccu RST_USB_PHY0>,
400 <&ccu RST_USB_PHY3>;
401 reset-names = "usb0_reset",
402 "usb3_reset";
403 status = "disabled";
404 #phy-cells = <1>;
405 };
406
407 ehci0: usb@5101000 {
408 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
409 reg = <0x05101000 0x100>;
410 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
411 clocks = <&ccu CLK_BUS_OHCI0>,
412 <&ccu CLK_BUS_EHCI0>,
413 <&ccu CLK_USB_OHCI0>;
414 resets = <&ccu RST_BUS_OHCI0>,
415 <&ccu RST_BUS_EHCI0>;
416 status = "disabled";
417 };
418
419 ohci0: usb@5101400 {
420 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
421 reg = <0x05101400 0x100>;
422 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
423 clocks = <&ccu CLK_BUS_OHCI0>,
424 <&ccu CLK_USB_OHCI0>;
425 resets = <&ccu RST_BUS_OHCI0>;
426 status = "disabled";
427 };
428
429 ehci3: usb@5311000 {
430 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
431 reg = <0x05311000 0x100>;
432 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
433 clocks = <&ccu CLK_BUS_OHCI3>,
434 <&ccu CLK_BUS_EHCI3>,
435 <&ccu CLK_USB_OHCI3>;
436 resets = <&ccu RST_BUS_OHCI3>,
437 <&ccu RST_BUS_EHCI3>;
438 phys = <&usb2phy 3>;
439 phy-names = "usb";
440 status = "disabled";
441 };
442
443 ohci3: usb@5311400 {
444 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
445 reg = <0x05311400 0x100>;
446 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
447 clocks = <&ccu CLK_BUS_OHCI3>,
448 <&ccu CLK_USB_OHCI3>;
449 resets = <&ccu RST_BUS_OHCI3>;
450 phys = <&usb2phy 3>;
451 phy-names = "usb";
452 status = "disabled";
453 };
454
Jernej Skrabec209065c2018-11-04 19:27:04 +0100455 hdmi: hdmi@6000000 {
456 compatible = "allwinner,sun50i-h6-dw-hdmi";
457 reg = <0x06000000 0x10000>;
458 reg-io-width = <1>;
459 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
460 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
461 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
462 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
463 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
464 "hdcp-bus";
465 resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
466 reset-names = "ctrl", "hdcp";
467 phys = <&hdmi_phy>;
468 phy-names = "hdmi-phy";
469 pinctrl-names = "default";
470 pinctrl-0 = <&hdmi_pins>;
471 status = "disabled";
472
473 ports {
474 #address-cells = <1>;
475 #size-cells = <0>;
476
477 hdmi_in: port@0 {
478 reg = <0>;
479
480 hdmi_in_tcon_top: endpoint {
481 remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
482 };
483 };
484
485 hdmi_out: port@1 {
486 reg = <1>;
487 };
488 };
489 };
490
491 hdmi_phy: hdmi-phy@6010000 {
492 compatible = "allwinner,sun50i-h6-hdmi-phy";
493 reg = <0x06010000 0x10000>;
494 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
495 clock-names = "bus", "mod";
496 resets = <&ccu RST_BUS_HDMI>;
497 reset-names = "phy";
498 #phy-cells = <0>;
499 };
500
501 tcon_top: tcon-top@6510000 {
502 compatible = "allwinner,sun50i-h6-tcon-top";
503 reg = <0x06510000 0x1000>;
504 clocks = <&ccu CLK_BUS_TCON_TOP>,
505 <&ccu CLK_TCON_TV0>;
506 clock-names = "bus",
507 "tcon-tv0";
508 clock-output-names = "tcon-top-tv0";
509 resets = <&ccu RST_BUS_TCON_TOP>;
510 reset-names = "rst";
511 #clock-cells = <1>;
512
513 ports {
514 #address-cells = <1>;
515 #size-cells = <0>;
516
517 tcon_top_mixer0_in: port@0 {
518 #address-cells = <1>;
519 #size-cells = <0>;
520 reg = <0>;
521
522 tcon_top_mixer0_in_mixer0: endpoint@0 {
523 reg = <0>;
524 remote-endpoint = <&mixer0_out_tcon_top_mixer0>;
525 };
526 };
527
528 tcon_top_mixer0_out: port@1 {
529 #address-cells = <1>;
530 #size-cells = <0>;
531 reg = <1>;
532
533 tcon_top_mixer0_out_tcon_tv: endpoint@2 {
534 reg = <2>;
535 remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>;
536 };
537 };
538
539 tcon_top_hdmi_in: port@4 {
540 #address-cells = <1>;
541 #size-cells = <0>;
542 reg = <4>;
543
544 tcon_top_hdmi_in_tcon_tv: endpoint@0 {
545 reg = <0>;
546 remote-endpoint = <&tcon_tv_out_tcon_top>;
547 };
548 };
549
550 tcon_top_hdmi_out: port@5 {
551 reg = <5>;
552
553 tcon_top_hdmi_out_hdmi: endpoint {
554 remote-endpoint = <&hdmi_in_tcon_top>;
555 };
556 };
557 };
558 };
559
560 tcon_tv: lcd-controller@6515000 {
561 compatible = "allwinner,sun50i-h6-tcon-tv",
562 "allwinner,sun8i-r40-tcon-tv";
563 reg = <0x06515000 0x1000>;
564 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
565 clocks = <&ccu CLK_BUS_TCON_TV0>,
566 <&tcon_top CLK_TCON_TOP_TV0>;
567 clock-names = "ahb",
568 "tcon-ch1";
569 resets = <&ccu RST_BUS_TCON_TV0>;
570 reset-names = "lcd";
571
572 ports {
573 #address-cells = <1>;
574 #size-cells = <0>;
575
576 tcon_tv_in: port@0 {
577 reg = <0>;
578
579 tcon_tv_in_tcon_top_mixer0: endpoint {
580 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>;
581 };
582 };
583
584 tcon_tv_out: port@1 {
585 #address-cells = <1>;
586 #size-cells = <0>;
587 reg = <1>;
588
589 tcon_tv_out_tcon_top: endpoint@1 {
590 reg = <1>;
591 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>;
592 };
593 };
594 };
595 };
596
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800597 r_ccu: clock@7010000 {
598 compatible = "allwinner,sun50i-h6-r-ccu";
599 reg = <0x07010000 0x400>;
600 clocks = <&osc24M>, <&osc32k>, <&iosc>,
601 <&ccu CLK_PLL_PERIPH0>;
602 clock-names = "hosc", "losc", "iosc", "pll-periph";
603 #clock-cells = <1>;
604 #reset-cells = <1>;
605 };
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800606
Icenowy Zheng1ecefb82018-05-04 02:38:45 +0800607 r_intc: interrupt-controller@7021000 {
608 compatible = "allwinner,sun50i-h6-r-intc",
609 "allwinner,sun6i-a31-r-intc";
610 interrupt-controller;
611 #interrupt-cells = <2>;
612 reg = <0x07021000 0x400>;
613 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
614 };
615
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800616 r_pio: pinctrl@7022000 {
617 compatible = "allwinner,sun50i-h6-r-pinctrl";
618 reg = <0x07022000 0x400>;
619 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
620 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +0800621 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&osc32k>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800622 clock-names = "apb", "hosc", "losc";
623 gpio-controller;
624 #gpio-cells = <3>;
625 interrupt-controller;
626 #interrupt-cells = <3>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800627
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100628 r_i2c_pins: r-i2c-pins {
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800629 pins = "PL0", "PL1";
630 function = "s_i2c";
631 };
632 };
633
634 r_i2c: i2c@7081400 {
635 compatible = "allwinner,sun6i-a31-i2c";
636 reg = <0x07081400 0x400>;
637 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +0800638 clocks = <&r_ccu CLK_R_APB2_I2C>;
639 resets = <&r_ccu RST_R_APB2_I2C>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800640 pinctrl-names = "default";
641 pinctrl-0 = <&r_i2c_pins>;
642 status = "disabled";
643 #address-cells = <1>;
644 #size-cells = <0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800645 };
Icenowy Zhenge54be322018-03-16 22:02:14 +0800646 };
647};