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
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
252 - allwinner,sun8i-a83t-tcon-tv
253 - allwinner,sun8i-r40-tcon-tv
254 - allwinner,sun9i-a80-tcon-tv
271 - allwinner,sun5i-a13-tcon
272 - allwinner,sun6i-a31-tcon
273 - allwinner,sun6i-a31s-tcon
274 - allwinner,sun7i-a20-tcon
275 - allwinner,sun8i-a23-tcon
276 - allwinner,sun8i-a33-tcon
277 - allwinner,sun8i-v3s-tcon
278 - allwinner,sun9i-a80-tcon-lcd
279 - allwinner,sun4i-a10-tcon
280 - allwinner,sun8i-a83t-tcon-lcd
292 - allwinner,sun6i-a31-tcon
293 - allwinner,sun6i-a31s-tcon
294 - allwinner,sun8i-a23-tcon
295 - allwinner,sun8i-a33-tcon
296 - allwinner,sun8i-a83t-tcon-lcd
313 - allwinner,sun9i-a80-tcon-lcd
331 - allwinner,sun9i-a80-tcon-tv
348 - allwinner,sun4i-a10-tcon
349 - allwinner,sun5i-a13-tcon
350 - allwinner,sun6i-a31-tcon
351 - allwinner,sun6i-a31s-tcon
352 - allwinner,sun7i-a20-tcon
353 - allwinner,sun8i-a23-tcon
354 - allwinner,sun8i-a33-tcon
362 #include <dt-bindings/dma/sun4i-a10.h>
365 * This comes from the clock/sun4i-a10-ccu.h and
366 * reset/sun4i-a10-ccu.h headers, but we can't include them since
367 * it would trigger a bunch of warnings for redefinitions of
368 * symbols with the other example.
371 #define CLK_AHB_LCD0 56
372 #define CLK_TCON0_CH0 149
373 #define CLK_TCON0_CH1 155
376 lcd-controller@1c0c000 {
377 compatible = "allwinner,sun4i-a10-tcon";
378 reg = <0x01c0c000 0x1000>;
380 resets = <&ccu RST_TCON0>;
382 clocks = <&ccu CLK_AHB_LCD0>,
383 <&ccu CLK_TCON0_CH0>,
384 <&ccu CLK_TCON0_CH1>;
388 clock-output-names = "tcon0-pixel-clock";
390 dmas = <&dma SUN4I_DMA_DEDICATED 14>;
393 #address-cells = <1>;
397 #address-cells = <1>;
403 remote-endpoint = <&be0_out_tcon0>;
408 remote-endpoint = <&be1_out_tcon0>;
413 #address-cells = <1>;
419 remote-endpoint = <&hdmi_in_tcon0>;
420 allwinner,tcon-channel = <1>;
432 #include <dt-bindings/interrupt-controller/arm-gic.h>
435 * This comes from the clock/sun6i-a31-ccu.h and
436 * reset/sun6i-a31-ccu.h headers, but we can't include them since
437 * it would trigger a bunch of warnings for redefinitions of
438 * symbols with the other example.
441 #define CLK_PLL_MIPI 15
442 #define CLK_AHB1_LCD0 47
443 #define CLK_LCD0_CH0 127
444 #define CLK_LCD0_CH1 129
445 #define RST_AHB1_LCD0 27
446 #define RST_AHB1_LVDS 41
448 lcd-controller@1c0c000 {
449 compatible = "allwinner,sun6i-a31-tcon";
450 reg = <0x01c0c000 0x1000>;
451 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
453 resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
454 reset-names = "lcd", "lvds";
455 clocks = <&ccu CLK_AHB1_LCD0>,
463 clock-output-names = "tcon0-pixel-clock";
467 #address-cells = <1>;
471 #address-cells = <1>;
477 remote-endpoint = <&drc0_out_tcon0>;
482 remote-endpoint = <&drc1_out_tcon0>;
487 #address-cells = <1>;
493 remote-endpoint = <&hdmi_in_tcon0>;
494 allwinner,tcon-channel = <1>;
508 #include <dt-bindings/interrupt-controller/arm-gic.h>
511 * This comes from the clock/sun9i-a80-ccu.h and
512 * reset/sun9i-a80-ccu.h headers, but we can't include them since
513 * it would trigger a bunch of warnings for redefinitions of
514 * symbols with the other example.
517 #define CLK_BUS_LCD0 102
519 #define RST_BUS_LCD0 22
520 #define RST_BUS_EDP 24
521 #define RST_BUS_LVDS 25
523 lcd-controller@3c00000 {
524 compatible = "allwinner,sun9i-a80-tcon-lcd";
525 reg = <0x03c00000 0x10000>;
526 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
527 clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
528 clock-names = "ahb", "tcon-ch0";
529 resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
530 reset-names = "lcd", "edp", "lvds";
531 clock-output-names = "tcon0-pixel-clock";
535 #address-cells = <1>;
542 remote-endpoint = <&drc0_out_tcon0>;
559 #include <dt-bindings/interrupt-controller/arm-gic.h>
562 * This comes from the clock/sun8i-a83t-ccu.h and
563 * reset/sun8i-a83t-ccu.h headers, but we can't include them since
564 * it would trigger a bunch of warnings for redefinitions of
565 * symbols with the other example.
568 #define CLK_BUS_TCON0 36
570 #define RST_BUS_TCON0 22
571 #define RST_BUS_LVDS 31
573 lcd-controller@1c0c000 {
574 compatible = "allwinner,sun8i-a83t-tcon-lcd";
575 reg = <0x01c0c000 0x1000>;
576 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
577 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
578 clock-names = "ahb", "tcon-ch0";
579 clock-output-names = "tcon-pixel-clock";
581 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
582 reset-names = "lcd", "lvds";
585 #address-cells = <1>;
589 #address-cells = <1>;
595 remote-endpoint = <&mixer0_out_tcon0>;
600 remote-endpoint = <&mixer1_out_tcon0>;
616 #include <dt-bindings/interrupt-controller/arm-gic.h>
619 * This comes from the clock/sun8i-r40-ccu.h and
620 * reset/sun8i-r40-ccu.h headers, but we can't include them since
621 * it would trigger a bunch of warnings for redefinitions of
622 * symbols with the other example.
625 #define CLK_BUS_TCON_TV0 73
626 #define RST_BUS_TCON_TV0 49
628 tcon_tv0: lcd-controller@1c73000 {
629 compatible = "allwinner,sun8i-r40-tcon-tv";
630 reg = <0x01c73000 0x1000>;
631 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
632 clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
633 clock-names = "ahb", "tcon-ch1";
634 resets = <&ccu RST_BUS_TCON_TV0>;
638 #address-cells = <1>;
642 #address-cells = <1>;
648 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
653 remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
657 tcon_tv0_out: port@1 {
658 #address-cells = <1>;
664 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
670 #undef CLK_BUS_TCON_TV0
671 #undef RST_BUS_TCON_TV0