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 - const: allwinner,sun8i-a83t-tcon-tv
50 - allwinner,sun50i-h6-tcon-tv
51 - const: allwinner,sun8i-r40-tcon-tv
69 - $ref: /schemas/types.yaml#/definitions/string-array
72 Name of the LCD pixel clock created.
80 - description: TCON Reset Line
83 - description: TCON Reset Line
84 - description: TCON LVDS Reset Line
87 - description: TCON Reset Line
88 - description: TCON eDP Reset Line
91 - description: TCON Reset Line
92 - description: TCON eDP Reset Line
93 - description: TCON LVDS Reset Line
115 A ports node with endpoint definitions as defined in
116 Documentation/devicetree/bindings/media/video-interfaces.txt.
128 Input endpoints of the controller.
133 Output endpoints of the controller.
136 "^endpoint(@[0-9])$":
140 allwinner,tcon-channel:
141 $ref: /schemas/types.yaml#/definitions/uint32
143 TCON can have 1 or 2 channels, usually with the
144 first channel being used for the panels interfaces
145 (RGB, LVDS, etc.), and the second being used for the
146 outputs that require another controller (TV Encoder,
149 If that property is present, specifies the TCON
150 channel the endpoint is associated to. If that
151 property is not present, the endpoint number will be
152 used as the channel number.
154 unevaluatedProperties: true
162 additionalProperties: false
173 additionalProperties: false
181 - allwinner,sun4i-a10-tcon
182 - allwinner,sun5i-a13-tcon
183 - allwinner,sun7i-a20-tcon
201 - allwinner,sun6i-a31-tcon
202 - allwinner,sun6i-a31s-tcon
221 - allwinner,sun8i-a23-tcon
222 - allwinner,sun8i-a33-tcon
240 - allwinner,sun8i-a83t-tcon-lcd
241 - allwinner,sun8i-v3s-tcon
242 - allwinner,sun9i-a80-tcon-lcd
259 - allwinner,sun8i-a83t-tcon-tv
260 - allwinner,sun8i-r40-tcon-tv
261 - allwinner,sun9i-a80-tcon-tv
278 - allwinner,sun5i-a13-tcon
279 - allwinner,sun6i-a31-tcon
280 - allwinner,sun6i-a31s-tcon
281 - allwinner,sun7i-a20-tcon
282 - allwinner,sun8i-a23-tcon
283 - allwinner,sun8i-a33-tcon
284 - allwinner,sun8i-v3s-tcon
285 - allwinner,sun9i-a80-tcon-lcd
286 - allwinner,sun4i-a10-tcon
287 - allwinner,sun8i-a83t-tcon-lcd
299 - allwinner,sun6i-a31-tcon
300 - allwinner,sun6i-a31s-tcon
301 - allwinner,sun8i-a23-tcon
302 - allwinner,sun8i-a33-tcon
303 - allwinner,sun8i-a83t-tcon-lcd
320 - allwinner,sun9i-a80-tcon-lcd
338 - allwinner,sun9i-a80-tcon-tv
355 - allwinner,sun4i-a10-tcon
356 - allwinner,sun5i-a13-tcon
357 - allwinner,sun6i-a31-tcon
358 - allwinner,sun6i-a31s-tcon
359 - allwinner,sun7i-a20-tcon
360 - allwinner,sun8i-a23-tcon
361 - allwinner,sun8i-a33-tcon
369 #include <dt-bindings/dma/sun4i-a10.h>
372 * This comes from the clock/sun4i-a10-ccu.h and
373 * reset/sun4i-a10-ccu.h headers, but we can't include them since
374 * it would trigger a bunch of warnings for redefinitions of
375 * symbols with the other example.
378 #define CLK_AHB_LCD0 56
379 #define CLK_TCON0_CH0 149
380 #define CLK_TCON0_CH1 155
383 lcd-controller@1c0c000 {
384 compatible = "allwinner,sun4i-a10-tcon";
385 reg = <0x01c0c000 0x1000>;
387 resets = <&ccu RST_TCON0>;
389 clocks = <&ccu CLK_AHB_LCD0>,
390 <&ccu CLK_TCON0_CH0>,
391 <&ccu CLK_TCON0_CH1>;
395 clock-output-names = "tcon0-pixel-clock";
397 dmas = <&dma SUN4I_DMA_DEDICATED 14>;
400 #address-cells = <1>;
404 #address-cells = <1>;
410 remote-endpoint = <&be0_out_tcon0>;
415 remote-endpoint = <&be1_out_tcon0>;
420 #address-cells = <1>;
426 remote-endpoint = <&hdmi_in_tcon0>;
427 allwinner,tcon-channel = <1>;
439 #include <dt-bindings/interrupt-controller/arm-gic.h>
442 * This comes from the clock/sun6i-a31-ccu.h and
443 * reset/sun6i-a31-ccu.h headers, but we can't include them since
444 * it would trigger a bunch of warnings for redefinitions of
445 * symbols with the other example.
448 #define CLK_PLL_MIPI 15
449 #define CLK_AHB1_LCD0 47
450 #define CLK_LCD0_CH0 127
451 #define CLK_LCD0_CH1 129
452 #define RST_AHB1_LCD0 27
453 #define RST_AHB1_LVDS 41
455 lcd-controller@1c0c000 {
456 compatible = "allwinner,sun6i-a31-tcon";
457 reg = <0x01c0c000 0x1000>;
458 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
460 resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
461 reset-names = "lcd", "lvds";
462 clocks = <&ccu CLK_AHB1_LCD0>,
470 clock-output-names = "tcon0-pixel-clock";
474 #address-cells = <1>;
478 #address-cells = <1>;
484 remote-endpoint = <&drc0_out_tcon0>;
489 remote-endpoint = <&drc1_out_tcon0>;
494 #address-cells = <1>;
500 remote-endpoint = <&hdmi_in_tcon0>;
501 allwinner,tcon-channel = <1>;
515 #include <dt-bindings/interrupt-controller/arm-gic.h>
518 * This comes from the clock/sun9i-a80-ccu.h and
519 * reset/sun9i-a80-ccu.h headers, but we can't include them since
520 * it would trigger a bunch of warnings for redefinitions of
521 * symbols with the other example.
524 #define CLK_BUS_LCD0 102
526 #define RST_BUS_LCD0 22
527 #define RST_BUS_EDP 24
528 #define RST_BUS_LVDS 25
530 lcd-controller@3c00000 {
531 compatible = "allwinner,sun9i-a80-tcon-lcd";
532 reg = <0x03c00000 0x10000>;
533 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
534 clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
535 clock-names = "ahb", "tcon-ch0";
536 resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
537 reset-names = "lcd", "edp", "lvds";
538 clock-output-names = "tcon0-pixel-clock";
542 #address-cells = <1>;
549 remote-endpoint = <&drc0_out_tcon0>;
566 #include <dt-bindings/interrupt-controller/arm-gic.h>
569 * This comes from the clock/sun8i-a83t-ccu.h and
570 * reset/sun8i-a83t-ccu.h headers, but we can't include them since
571 * it would trigger a bunch of warnings for redefinitions of
572 * symbols with the other example.
575 #define CLK_BUS_TCON0 36
577 #define RST_BUS_TCON0 22
578 #define RST_BUS_LVDS 31
580 lcd-controller@1c0c000 {
581 compatible = "allwinner,sun8i-a83t-tcon-lcd";
582 reg = <0x01c0c000 0x1000>;
583 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
584 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
585 clock-names = "ahb", "tcon-ch0";
586 clock-output-names = "tcon-pixel-clock";
588 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
589 reset-names = "lcd", "lvds";
592 #address-cells = <1>;
596 #address-cells = <1>;
602 remote-endpoint = <&mixer0_out_tcon0>;
607 remote-endpoint = <&mixer1_out_tcon0>;
623 #include <dt-bindings/interrupt-controller/arm-gic.h>
626 * This comes from the clock/sun8i-r40-ccu.h and
627 * reset/sun8i-r40-ccu.h headers, but we can't include them since
628 * it would trigger a bunch of warnings for redefinitions of
629 * symbols with the other example.
632 #define CLK_BUS_TCON_TV0 73
633 #define RST_BUS_TCON_TV0 49
635 tcon_tv0: lcd-controller@1c73000 {
636 compatible = "allwinner,sun8i-r40-tcon-tv";
637 reg = <0x01c73000 0x1000>;
638 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
639 clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
640 clock-names = "ahb", "tcon-ch1";
641 resets = <&ccu RST_BUS_TCON_TV0>;
645 #address-cells = <1>;
649 #address-cells = <1>;
655 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
660 remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
664 tcon_tv0_out: port@1 {
665 #address-cells = <1>;
671 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
677 #undef CLK_BUS_TCON_TV0
678 #undef RST_BUS_TCON_TV0