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,sun7i-a20-tcon0
40 - allwinner,sun7i-a20-tcon1
41 - const: allwinner,sun7i-a20-tcon
45 - allwinner,sun50i-a64-tcon-lcd
46 - const: allwinner,sun8i-a83t-tcon-lcd
50 - allwinner,sun8i-h3-tcon-tv
51 - allwinner,sun50i-a64-tcon-tv
52 - const: allwinner,sun8i-a83t-tcon-tv
56 - allwinner,sun50i-h6-tcon-tv
57 - const: allwinner,sun8i-r40-tcon-tv
75 - $ref: /schemas/types.yaml#/definitions/string-array
78 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
121 A ports node with endpoint definitions as defined in
122 Documentation/devicetree/bindings/media/video-interfaces.txt.
134 Input endpoints of the controller.
139 Output endpoints of the controller.
142 "^endpoint(@[0-9])$":
146 allwinner,tcon-channel:
147 $ref: /schemas/types.yaml#/definitions/uint32
149 TCON can have 1 or 2 channels, usually with the
150 first channel being used for the panels interfaces
151 (RGB, LVDS, etc.), and the second being used for the
152 outputs that require another controller (TV Encoder,
155 If that property is present, specifies the TCON
156 channel the endpoint is associated to. If that
157 property is not present, the endpoint number will be
158 used as the channel number.
160 unevaluatedProperties: true
168 additionalProperties: false
179 additionalProperties: false
187 - allwinner,sun4i-a10-tcon
188 - allwinner,sun5i-a13-tcon
189 - allwinner,sun7i-a20-tcon
207 - allwinner,sun6i-a31-tcon
208 - allwinner,sun6i-a31s-tcon
227 - allwinner,sun8i-a23-tcon
228 - allwinner,sun8i-a33-tcon
246 - allwinner,sun8i-a83t-tcon-lcd
247 - allwinner,sun8i-v3s-tcon
248 - allwinner,sun9i-a80-tcon-lcd
265 - allwinner,sun8i-a83t-tcon-tv
266 - allwinner,sun8i-r40-tcon-tv
267 - allwinner,sun9i-a80-tcon-tv
284 - allwinner,sun5i-a13-tcon
285 - allwinner,sun6i-a31-tcon
286 - allwinner,sun6i-a31s-tcon
287 - allwinner,sun7i-a20-tcon
288 - allwinner,sun8i-a23-tcon
289 - allwinner,sun8i-a33-tcon
290 - allwinner,sun8i-v3s-tcon
291 - allwinner,sun9i-a80-tcon-lcd
292 - allwinner,sun4i-a10-tcon
293 - allwinner,sun8i-a83t-tcon-lcd
305 - allwinner,sun6i-a31-tcon
306 - allwinner,sun6i-a31s-tcon
307 - allwinner,sun8i-a23-tcon
308 - allwinner,sun8i-a33-tcon
309 - allwinner,sun8i-a83t-tcon-lcd
326 - allwinner,sun9i-a80-tcon-lcd
344 - allwinner,sun9i-a80-tcon-tv
361 - allwinner,sun4i-a10-tcon
362 - allwinner,sun5i-a13-tcon
363 - allwinner,sun6i-a31-tcon
364 - allwinner,sun6i-a31s-tcon
365 - allwinner,sun7i-a20-tcon
366 - allwinner,sun8i-a23-tcon
367 - allwinner,sun8i-a33-tcon
375 #include <dt-bindings/dma/sun4i-a10.h>
378 * This comes from the clock/sun4i-a10-ccu.h and
379 * reset/sun4i-a10-ccu.h headers, but we can't include them since
380 * it would trigger a bunch of warnings for redefinitions of
381 * symbols with the other example.
384 #define CLK_AHB_LCD0 56
385 #define CLK_TCON0_CH0 149
386 #define CLK_TCON0_CH1 155
389 lcd-controller@1c0c000 {
390 compatible = "allwinner,sun4i-a10-tcon";
391 reg = <0x01c0c000 0x1000>;
393 resets = <&ccu RST_TCON0>;
395 clocks = <&ccu CLK_AHB_LCD0>,
396 <&ccu CLK_TCON0_CH0>,
397 <&ccu CLK_TCON0_CH1>;
401 clock-output-names = "tcon0-pixel-clock";
403 dmas = <&dma SUN4I_DMA_DEDICATED 14>;
406 #address-cells = <1>;
410 #address-cells = <1>;
416 remote-endpoint = <&be0_out_tcon0>;
421 remote-endpoint = <&be1_out_tcon0>;
426 #address-cells = <1>;
432 remote-endpoint = <&hdmi_in_tcon0>;
433 allwinner,tcon-channel = <1>;
445 #include <dt-bindings/interrupt-controller/arm-gic.h>
448 * This comes from the clock/sun6i-a31-ccu.h and
449 * reset/sun6i-a31-ccu.h headers, but we can't include them since
450 * it would trigger a bunch of warnings for redefinitions of
451 * symbols with the other example.
454 #define CLK_PLL_MIPI 15
455 #define CLK_AHB1_LCD0 47
456 #define CLK_LCD0_CH0 127
457 #define CLK_LCD0_CH1 129
458 #define RST_AHB1_LCD0 27
459 #define RST_AHB1_LVDS 41
461 lcd-controller@1c0c000 {
462 compatible = "allwinner,sun6i-a31-tcon";
463 reg = <0x01c0c000 0x1000>;
464 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
466 resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
467 reset-names = "lcd", "lvds";
468 clocks = <&ccu CLK_AHB1_LCD0>,
476 clock-output-names = "tcon0-pixel-clock";
480 #address-cells = <1>;
484 #address-cells = <1>;
490 remote-endpoint = <&drc0_out_tcon0>;
495 remote-endpoint = <&drc1_out_tcon0>;
500 #address-cells = <1>;
506 remote-endpoint = <&hdmi_in_tcon0>;
507 allwinner,tcon-channel = <1>;
521 #include <dt-bindings/interrupt-controller/arm-gic.h>
524 * This comes from the clock/sun9i-a80-ccu.h and
525 * reset/sun9i-a80-ccu.h headers, but we can't include them since
526 * it would trigger a bunch of warnings for redefinitions of
527 * symbols with the other example.
530 #define CLK_BUS_LCD0 102
532 #define RST_BUS_LCD0 22
533 #define RST_BUS_EDP 24
534 #define RST_BUS_LVDS 25
536 lcd-controller@3c00000 {
537 compatible = "allwinner,sun9i-a80-tcon-lcd";
538 reg = <0x03c00000 0x10000>;
539 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
540 clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
541 clock-names = "ahb", "tcon-ch0";
542 resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
543 reset-names = "lcd", "edp", "lvds";
544 clock-output-names = "tcon0-pixel-clock";
548 #address-cells = <1>;
555 remote-endpoint = <&drc0_out_tcon0>;
572 #include <dt-bindings/interrupt-controller/arm-gic.h>
575 * This comes from the clock/sun8i-a83t-ccu.h and
576 * reset/sun8i-a83t-ccu.h headers, but we can't include them since
577 * it would trigger a bunch of warnings for redefinitions of
578 * symbols with the other example.
581 #define CLK_BUS_TCON0 36
583 #define RST_BUS_TCON0 22
584 #define RST_BUS_LVDS 31
586 lcd-controller@1c0c000 {
587 compatible = "allwinner,sun8i-a83t-tcon-lcd";
588 reg = <0x01c0c000 0x1000>;
589 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
590 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
591 clock-names = "ahb", "tcon-ch0";
592 clock-output-names = "tcon-pixel-clock";
594 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
595 reset-names = "lcd", "lvds";
598 #address-cells = <1>;
602 #address-cells = <1>;
608 remote-endpoint = <&mixer0_out_tcon0>;
613 remote-endpoint = <&mixer1_out_tcon0>;
629 #include <dt-bindings/interrupt-controller/arm-gic.h>
632 * This comes from the clock/sun8i-r40-ccu.h and
633 * reset/sun8i-r40-ccu.h headers, but we can't include them since
634 * it would trigger a bunch of warnings for redefinitions of
635 * symbols with the other example.
638 #define CLK_BUS_TCON_TV0 73
639 #define RST_BUS_TCON_TV0 49
641 tcon_tv0: lcd-controller@1c73000 {
642 compatible = "allwinner,sun8i-r40-tcon-tv";
643 reg = <0x01c73000 0x1000>;
644 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
645 clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
646 clock-names = "ahb", "tcon-ch1";
647 resets = <&ccu RST_BUS_TCON_TV0>;
651 #address-cells = <1>;
655 #address-cells = <1>;
661 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
666 remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
670 tcon_tv0_out: port@1 {
671 #address-cells = <1>;
677 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
683 #undef CLK_BUS_TCON_TV0
684 #undef RST_BUS_TCON_TV0