1 # SPDX-License-Identifier: GPL-2.0
4 $id: http://devicetree.org/schemas/display/allwinner,sun4i-a10-tcon.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Allwinner A10 Timings Controller (TCON) Device Tree Bindings
10 - Chen-Yu Tsai <wens@csie.org>
11 - Maxime Ripard <mripard@kernel.org>
14 The TCON acts as a timing controller for RGB, LVDS and TV
23 - const: allwinner,sun4i-a10-tcon
24 - const: allwinner,sun5i-a13-tcon
25 - const: allwinner,sun6i-a31-tcon
26 - const: allwinner,sun6i-a31s-tcon
27 - const: allwinner,sun7i-a20-tcon
28 - const: allwinner,sun8i-a23-tcon
29 - const: allwinner,sun8i-a33-tcon
30 - const: allwinner,sun8i-a83t-tcon-lcd
31 - const: allwinner,sun8i-a83t-tcon-tv
32 - const: allwinner,sun8i-r40-tcon-tv
33 - const: allwinner,sun8i-v3s-tcon
34 - const: allwinner,sun9i-a80-tcon-lcd
35 - const: allwinner,sun9i-a80-tcon-tv
39 - allwinner,sun50i-a64-tcon-lcd
40 - const: allwinner,sun8i-a83t-tcon-lcd
44 - allwinner,sun8i-h3-tcon-tv
45 - allwinner,sun50i-a64-tcon-tv
46 - allwinner,sun50i-h6-tcon-tv
47 - const: allwinner,sun8i-a83t-tcon-tv
65 - $ref: /schemas/types.yaml#/definitions/string-array
68 Name of the LCD pixel clock created.
76 - description: TCON Reset Line
79 - description: TCON Reset Line
80 - description: TCON LVDS Reset Line
83 - description: TCON Reset Line
84 - description: TCON eDP Reset Line
87 - description: TCON Reset Line
88 - description: TCON eDP Reset Line
89 - description: TCON LVDS Reset Line
111 A ports node with endpoint definitions as defined in
112 Documentation/devicetree/bindings/media/video-interfaces.txt.
124 Input endpoints of the controller.
129 Output endpoints of the controller.
132 "^endpoint(@[0-9])$":
136 allwinner,tcon-channel:
137 $ref: /schemas/types.yaml#/definitions/uint32
139 TCON can have 1 or 2 channels, usually with the
140 first channel being used for the panels interfaces
141 (RGB, LVDS, etc.), and the second being used for the
142 outputs that require another controller (TV Encoder,
145 If that property is present, specifies the TCON
146 channel the endpoint is associated to. If that
147 property is not present, the endpoint number will be
148 used as the channel number.
150 unevaluatedProperties: true
158 additionalProperties: false
169 additionalProperties: false
177 - allwinner,sun4i-a10-tcon
178 - allwinner,sun5i-a13-tcon
179 - allwinner,sun7i-a20-tcon
197 - allwinner,sun6i-a31-tcon
198 - allwinner,sun6i-a31s-tcon
217 - allwinner,sun8i-a23-tcon
218 - allwinner,sun8i-a33-tcon
236 - allwinner,sun8i-a83t-tcon-lcd
237 - allwinner,sun8i-v3s-tcon
238 - allwinner,sun9i-a80-tcon-lcd
255 - allwinner,sun8i-a83t-tcon-tv
256 - allwinner,sun8i-r40-tcon-tv
257 - allwinner,sun9i-a80-tcon-tv
274 - allwinner,sun5i-a13-tcon
275 - allwinner,sun6i-a31-tcon
276 - allwinner,sun6i-a31s-tcon
277 - allwinner,sun7i-a20-tcon
278 - allwinner,sun8i-a23-tcon
279 - allwinner,sun8i-a33-tcon
280 - allwinner,sun8i-v3s-tcon
281 - allwinner,sun9i-a80-tcon-lcd
282 - allwinner,sun4i-a10-tcon
283 - allwinner,sun8i-a83t-tcon-lcd
295 - allwinner,sun6i-a31-tcon
296 - allwinner,sun6i-a31s-tcon
297 - allwinner,sun8i-a23-tcon
298 - allwinner,sun8i-a33-tcon
299 - allwinner,sun8i-a83t-tcon-lcd
316 - allwinner,sun9i-a80-tcon-lcd
334 - allwinner,sun9i-a80-tcon-tv
351 - allwinner,sun4i-a10-tcon
352 - allwinner,sun5i-a13-tcon
353 - allwinner,sun6i-a31-tcon
354 - allwinner,sun6i-a31s-tcon
355 - allwinner,sun7i-a20-tcon
356 - allwinner,sun8i-a23-tcon
357 - allwinner,sun8i-a33-tcon
365 #include <dt-bindings/dma/sun4i-a10.h>
368 * This comes from the clock/sun4i-a10-ccu.h and
369 * reset/sun4i-a10-ccu.h headers, but we can't include them since
370 * it would trigger a bunch of warnings for redefinitions of
371 * symbols with the other example.
374 #define CLK_AHB_LCD0 56
375 #define CLK_TCON0_CH0 149
376 #define CLK_TCON0_CH1 155
379 lcd-controller@1c0c000 {
380 compatible = "allwinner,sun4i-a10-tcon";
381 reg = <0x01c0c000 0x1000>;
383 resets = <&ccu RST_TCON0>;
385 clocks = <&ccu CLK_AHB_LCD0>,
386 <&ccu CLK_TCON0_CH0>,
387 <&ccu CLK_TCON0_CH1>;
391 clock-output-names = "tcon0-pixel-clock";
393 dmas = <&dma SUN4I_DMA_DEDICATED 14>;
396 #address-cells = <1>;
400 #address-cells = <1>;
406 remote-endpoint = <&be0_out_tcon0>;
411 remote-endpoint = <&be1_out_tcon0>;
416 #address-cells = <1>;
422 remote-endpoint = <&hdmi_in_tcon0>;
423 allwinner,tcon-channel = <1>;
435 #include <dt-bindings/interrupt-controller/arm-gic.h>
438 * This comes from the clock/sun6i-a31-ccu.h and
439 * reset/sun6i-a31-ccu.h headers, but we can't include them since
440 * it would trigger a bunch of warnings for redefinitions of
441 * symbols with the other example.
444 #define CLK_PLL_MIPI 15
445 #define CLK_AHB1_LCD0 47
446 #define CLK_LCD0_CH0 127
447 #define CLK_LCD0_CH1 129
448 #define RST_AHB1_LCD0 27
449 #define RST_AHB1_LVDS 41
451 lcd-controller@1c0c000 {
452 compatible = "allwinner,sun6i-a31-tcon";
453 reg = <0x01c0c000 0x1000>;
454 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
456 resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
457 reset-names = "lcd", "lvds";
458 clocks = <&ccu CLK_AHB1_LCD0>,
466 clock-output-names = "tcon0-pixel-clock";
470 #address-cells = <1>;
474 #address-cells = <1>;
480 remote-endpoint = <&drc0_out_tcon0>;
485 remote-endpoint = <&drc1_out_tcon0>;
490 #address-cells = <1>;
496 remote-endpoint = <&hdmi_in_tcon0>;
497 allwinner,tcon-channel = <1>;
511 #include <dt-bindings/interrupt-controller/arm-gic.h>
514 * This comes from the clock/sun9i-a80-ccu.h and
515 * reset/sun9i-a80-ccu.h headers, but we can't include them since
516 * it would trigger a bunch of warnings for redefinitions of
517 * symbols with the other example.
520 #define CLK_BUS_LCD0 102
522 #define RST_BUS_LCD0 22
523 #define RST_BUS_EDP 24
524 #define RST_BUS_LVDS 25
526 lcd-controller@3c00000 {
527 compatible = "allwinner,sun9i-a80-tcon-lcd";
528 reg = <0x03c00000 0x10000>;
529 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
530 clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
531 clock-names = "ahb", "tcon-ch0";
532 resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
533 reset-names = "lcd", "edp", "lvds";
534 clock-output-names = "tcon0-pixel-clock";
538 #address-cells = <1>;
545 remote-endpoint = <&drc0_out_tcon0>;
562 #include <dt-bindings/interrupt-controller/arm-gic.h>
565 * This comes from the clock/sun8i-a83t-ccu.h and
566 * reset/sun8i-a83t-ccu.h headers, but we can't include them since
567 * it would trigger a bunch of warnings for redefinitions of
568 * symbols with the other example.
571 #define CLK_BUS_TCON0 36
573 #define RST_BUS_TCON0 22
574 #define RST_BUS_LVDS 31
576 lcd-controller@1c0c000 {
577 compatible = "allwinner,sun8i-a83t-tcon-lcd";
578 reg = <0x01c0c000 0x1000>;
579 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
580 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
581 clock-names = "ahb", "tcon-ch0";
582 clock-output-names = "tcon-pixel-clock";
584 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
585 reset-names = "lcd", "lvds";
588 #address-cells = <1>;
592 #address-cells = <1>;
598 remote-endpoint = <&mixer0_out_tcon0>;
603 remote-endpoint = <&mixer1_out_tcon0>;
619 #include <dt-bindings/interrupt-controller/arm-gic.h>
622 * This comes from the clock/sun8i-r40-ccu.h and
623 * reset/sun8i-r40-ccu.h headers, but we can't include them since
624 * it would trigger a bunch of warnings for redefinitions of
625 * symbols with the other example.
628 #define CLK_BUS_TCON_TV0 73
629 #define RST_BUS_TCON_TV0 49
631 tcon_tv0: lcd-controller@1c73000 {
632 compatible = "allwinner,sun8i-r40-tcon-tv";
633 reg = <0x01c73000 0x1000>;
634 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
635 clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
636 clock-names = "ahb", "tcon-ch1";
637 resets = <&ccu RST_BUS_TCON_TV0>;
641 #address-cells = <1>;
645 #address-cells = <1>;
651 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
656 remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
660 tcon_tv0_out: port@1 {
661 #address-cells = <1>;
667 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
673 #undef CLK_BUS_TCON_TV0
674 #undef RST_BUS_TCON_TV0