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)
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
36 - const: allwinner,sun20i-d1-tcon-lcd
37 - const: allwinner,sun20i-d1-tcon-tv
41 - allwinner,sun7i-a20-tcon0
42 - allwinner,sun7i-a20-tcon1
43 - const: allwinner,sun7i-a20-tcon
47 - allwinner,sun50i-a64-tcon-lcd
48 - const: allwinner,sun8i-a83t-tcon-lcd
52 - allwinner,sun8i-h3-tcon-tv
53 - allwinner,sun50i-a64-tcon-tv
54 - const: allwinner,sun8i-a83t-tcon-tv
58 - allwinner,sun50i-h6-tcon-tv
59 - const: allwinner,sun8i-r40-tcon-tv
77 Name of the LCD pixel clock created.
86 - description: TCON Reset Line
89 - description: TCON Reset Line
90 - description: TCON LVDS Reset Line
93 - description: TCON Reset Line
94 - description: TCON eDP Reset Line
97 - description: TCON Reset Line
98 - description: TCON eDP Reset Line
99 - description: TCON LVDS Reset Line
119 $ref: /schemas/graph.yaml#/properties/ports
123 $ref: /schemas/graph.yaml#/properties/port
125 Input endpoints of the controller.
128 $ref: /schemas/graph.yaml#/$defs/port-base
129 unevaluatedProperties: false
131 Output endpoints of the controller.
134 "^endpoint(@[0-9])$":
135 $ref: /schemas/graph.yaml#/$defs/endpoint-base
136 unevaluatedProperties: false
139 allwinner,tcon-channel:
140 $ref: /schemas/types.yaml#/definitions/uint32
142 TCON can have 1 or 2 channels, usually with the
143 first channel being used for the panels interfaces
144 (RGB, LVDS, etc.), and the second being used for the
145 outputs that require another controller (TV Encoder,
148 If that property is present, specifies the TCON
149 channel the endpoint is associated to. If that
150 property is not present, the endpoint number will be
151 used as the channel number.
166 additionalProperties: false
174 - allwinner,sun4i-a10-tcon
175 - allwinner,sun5i-a13-tcon
176 - allwinner,sun7i-a20-tcon
194 - allwinner,sun6i-a31-tcon
195 - allwinner,sun6i-a31s-tcon
214 - allwinner,sun8i-a23-tcon
215 - allwinner,sun8i-a33-tcon
233 - allwinner,sun8i-a83t-tcon-lcd
234 - allwinner,sun8i-v3s-tcon
235 - allwinner,sun9i-a80-tcon-lcd
236 - allwinner,sun20i-d1-tcon-lcd
253 - allwinner,sun8i-a83t-tcon-tv
254 - allwinner,sun8i-r40-tcon-tv
255 - allwinner,sun9i-a80-tcon-tv
256 - allwinner,sun20i-d1-tcon-tv
273 - allwinner,sun5i-a13-tcon
274 - allwinner,sun6i-a31-tcon
275 - allwinner,sun6i-a31s-tcon
276 - allwinner,sun7i-a20-tcon
277 - allwinner,sun8i-a23-tcon
278 - allwinner,sun8i-a33-tcon
279 - allwinner,sun8i-v3s-tcon
280 - allwinner,sun9i-a80-tcon-lcd
281 - allwinner,sun4i-a10-tcon
282 - allwinner,sun8i-a83t-tcon-lcd
283 - allwinner,sun20i-d1-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
300 - allwinner,sun20i-d1-tcon-lcd
317 - allwinner,sun9i-a80-tcon-lcd
335 - allwinner,sun9i-a80-tcon-tv
352 - allwinner,sun4i-a10-tcon
353 - allwinner,sun5i-a13-tcon
354 - allwinner,sun6i-a31-tcon
355 - allwinner,sun6i-a31s-tcon
356 - allwinner,sun7i-a20-tcon
357 - allwinner,sun8i-a23-tcon
358 - allwinner,sun8i-a33-tcon
366 #include <dt-bindings/dma/sun4i-a10.h>
369 * This comes from the clock/sun4i-a10-ccu.h and
370 * reset/sun4i-a10-ccu.h headers, but we can't include them since
371 * it would trigger a bunch of warnings for redefinitions of
372 * symbols with the other example.
375 #define CLK_AHB_LCD0 56
376 #define CLK_TCON0_CH0 149
377 #define CLK_TCON0_CH1 155
380 lcd-controller@1c0c000 {
381 compatible = "allwinner,sun4i-a10-tcon";
382 reg = <0x01c0c000 0x1000>;
384 resets = <&ccu RST_TCON0>;
386 clocks = <&ccu CLK_AHB_LCD0>,
387 <&ccu CLK_TCON0_CH0>,
388 <&ccu CLK_TCON0_CH1>;
392 clock-output-names = "tcon0-pixel-clock";
394 dmas = <&dma SUN4I_DMA_DEDICATED 14>;
397 #address-cells = <1>;
401 #address-cells = <1>;
407 remote-endpoint = <&be0_out_tcon0>;
412 remote-endpoint = <&be1_out_tcon0>;
417 #address-cells = <1>;
423 remote-endpoint = <&hdmi_in_tcon0>;
424 allwinner,tcon-channel = <1>;
436 #include <dt-bindings/interrupt-controller/arm-gic.h>
439 * This comes from the clock/sun6i-a31-ccu.h and
440 * reset/sun6i-a31-ccu.h headers, but we can't include them since
441 * it would trigger a bunch of warnings for redefinitions of
442 * symbols with the other example.
445 #define CLK_PLL_MIPI 15
446 #define CLK_AHB1_LCD0 47
447 #define CLK_LCD0_CH0 127
448 #define CLK_LCD0_CH1 129
449 #define RST_AHB1_LCD0 27
450 #define RST_AHB1_LVDS 41
452 lcd-controller@1c0c000 {
453 compatible = "allwinner,sun6i-a31-tcon";
454 reg = <0x01c0c000 0x1000>;
455 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
457 resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
458 reset-names = "lcd", "lvds";
459 clocks = <&ccu CLK_AHB1_LCD0>,
467 clock-output-names = "tcon0-pixel-clock";
471 #address-cells = <1>;
475 #address-cells = <1>;
481 remote-endpoint = <&drc0_out_tcon0>;
486 remote-endpoint = <&drc1_out_tcon0>;
491 #address-cells = <1>;
497 remote-endpoint = <&hdmi_in_tcon0>;
498 allwinner,tcon-channel = <1>;
512 #include <dt-bindings/interrupt-controller/arm-gic.h>
515 * This comes from the clock/sun9i-a80-ccu.h and
516 * reset/sun9i-a80-ccu.h headers, but we can't include them since
517 * it would trigger a bunch of warnings for redefinitions of
518 * symbols with the other example.
521 #define CLK_BUS_LCD0 102
523 #define RST_BUS_LCD0 22
524 #define RST_BUS_EDP 24
525 #define RST_BUS_LVDS 25
527 lcd-controller@3c00000 {
528 compatible = "allwinner,sun9i-a80-tcon-lcd";
529 reg = <0x03c00000 0x10000>;
530 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
531 clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
532 clock-names = "ahb", "tcon-ch0";
533 resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
534 reset-names = "lcd", "edp", "lvds";
535 clock-output-names = "tcon0-pixel-clock";
539 #address-cells = <1>;
546 remote-endpoint = <&drc0_out_tcon0>;
563 #include <dt-bindings/interrupt-controller/arm-gic.h>
566 * This comes from the clock/sun8i-a83t-ccu.h and
567 * reset/sun8i-a83t-ccu.h headers, but we can't include them since
568 * it would trigger a bunch of warnings for redefinitions of
569 * symbols with the other example.
572 #define CLK_BUS_TCON0 36
574 #define RST_BUS_TCON0 22
575 #define RST_BUS_LVDS 31
577 lcd-controller@1c0c000 {
578 compatible = "allwinner,sun8i-a83t-tcon-lcd";
579 reg = <0x01c0c000 0x1000>;
580 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
581 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
582 clock-names = "ahb", "tcon-ch0";
583 clock-output-names = "tcon-pixel-clock";
585 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
586 reset-names = "lcd", "lvds";
589 #address-cells = <1>;
593 #address-cells = <1>;
599 remote-endpoint = <&mixer0_out_tcon0>;
604 remote-endpoint = <&mixer1_out_tcon0>;
620 #include <dt-bindings/interrupt-controller/arm-gic.h>
623 * This comes from the clock/sun8i-r40-ccu.h and
624 * reset/sun8i-r40-ccu.h headers, but we can't include them since
625 * it would trigger a bunch of warnings for redefinitions of
626 * symbols with the other example.
629 #define CLK_BUS_TCON_TV0 73
630 #define RST_BUS_TCON_TV0 49
632 tcon_tv0: lcd-controller@1c73000 {
633 compatible = "allwinner,sun8i-r40-tcon-tv";
634 reg = <0x01c73000 0x1000>;
635 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
636 clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
637 clock-names = "ahb", "tcon-ch1";
638 resets = <&ccu RST_BUS_TCON_TV0>;
642 #address-cells = <1>;
646 #address-cells = <1>;
652 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
657 remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
661 tcon_tv0_out: port@1 {
662 #address-cells = <1>;
668 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
674 #undef CLK_BUS_TCON_TV0
675 #undef RST_BUS_TCON_TV0