18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/display/allwinner,sun8i-r40-tcon-top.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: Allwinner R40 TCON TOP Device Tree Bindings 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Chen-Yu Tsai <wens@csie.org> 118c2ecf20Sopenharmony_ci - Maxime Ripard <mripard@kernel.org> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cidescription: | 148c2ecf20Sopenharmony_ci TCON TOPs main purpose is to configure whole display pipeline. It 158c2ecf20Sopenharmony_ci determines relationships between mixers and TCONs, selects source 168c2ecf20Sopenharmony_ci TCON for HDMI, muxes LCD and TV encoder GPIO output, selects TV 178c2ecf20Sopenharmony_ci encoder clock source and contains additional TV TCON and DSI gates. 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci It allows display pipeline to be configured in very different ways: 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci / LCD0/LVDS0 228c2ecf20Sopenharmony_ci / [0] TCON-LCD0 238c2ecf20Sopenharmony_ci | \ MIPI DSI 248c2ecf20Sopenharmony_ci mixer0 | 258c2ecf20Sopenharmony_ci \ / [1] TCON-LCD1 - LCD1/LVDS1 268c2ecf20Sopenharmony_ci TCON-TOP 278c2ecf20Sopenharmony_ci / \ [2] TCON-TV0 [0] - TVE0/RGB 288c2ecf20Sopenharmony_ci mixer1 | \ 298c2ecf20Sopenharmony_ci | TCON-TOP - HDMI 308c2ecf20Sopenharmony_ci | / 318c2ecf20Sopenharmony_ci \ [3] TCON-TV1 [1] - TVE1/RGB 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci Note that both TCON TOP references same physical unit. Both mixers 348c2ecf20Sopenharmony_ci can be connected to any TCON. Not all TCON TOP variants support all 358c2ecf20Sopenharmony_ci features. 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciproperties: 388c2ecf20Sopenharmony_ci "#clock-cells": 398c2ecf20Sopenharmony_ci const: 1 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci compatible: 428c2ecf20Sopenharmony_ci enum: 438c2ecf20Sopenharmony_ci - allwinner,sun8i-r40-tcon-top 448c2ecf20Sopenharmony_ci - allwinner,sun50i-h6-tcon-top 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci reg: 478c2ecf20Sopenharmony_ci maxItems: 1 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci clocks: 508c2ecf20Sopenharmony_ci minItems: 2 518c2ecf20Sopenharmony_ci maxItems: 6 528c2ecf20Sopenharmony_ci items: 538c2ecf20Sopenharmony_ci - description: The TCON TOP interface clock 548c2ecf20Sopenharmony_ci - description: The TCON TOP TV0 clock 558c2ecf20Sopenharmony_ci - description: The TCON TOP TVE0 clock 568c2ecf20Sopenharmony_ci - description: The TCON TOP TV1 clock 578c2ecf20Sopenharmony_ci - description: The TCON TOP TVE1 clock 588c2ecf20Sopenharmony_ci - description: The TCON TOP MIPI DSI clock 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci clock-names: 618c2ecf20Sopenharmony_ci minItems: 2 628c2ecf20Sopenharmony_ci maxItems: 6 638c2ecf20Sopenharmony_ci items: 648c2ecf20Sopenharmony_ci - const: bus 658c2ecf20Sopenharmony_ci - const: tcon-tv0 668c2ecf20Sopenharmony_ci - const: tve0 678c2ecf20Sopenharmony_ci - const: tcon-tv1 688c2ecf20Sopenharmony_ci - const: tve1 698c2ecf20Sopenharmony_ci - const: dsi 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci clock-output-names: 728c2ecf20Sopenharmony_ci minItems: 1 738c2ecf20Sopenharmony_ci maxItems: 3 748c2ecf20Sopenharmony_ci description: > 758c2ecf20Sopenharmony_ci The first item is the name of the clock created for the TV0 768c2ecf20Sopenharmony_ci channel, the second item is the name of the TCON TV1 channel 778c2ecf20Sopenharmony_ci clock and the third one is the name of the DSI channel clock. 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci resets: 808c2ecf20Sopenharmony_ci maxItems: 1 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci ports: 838c2ecf20Sopenharmony_ci type: object 848c2ecf20Sopenharmony_ci description: | 858c2ecf20Sopenharmony_ci A ports node with endpoint definitions as defined in 868c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/media/video-interfaces.txt. 878c2ecf20Sopenharmony_ci All ports should have only one endpoint connected to 888c2ecf20Sopenharmony_ci remote endpoint. 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci properties: 918c2ecf20Sopenharmony_ci "#address-cells": 928c2ecf20Sopenharmony_ci const: 1 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci "#size-cells": 958c2ecf20Sopenharmony_ci const: 0 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci port@0: 988c2ecf20Sopenharmony_ci type: object 998c2ecf20Sopenharmony_ci description: | 1008c2ecf20Sopenharmony_ci Input endpoint for Mixer 0 mux. 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci port@1: 1038c2ecf20Sopenharmony_ci type: object 1048c2ecf20Sopenharmony_ci description: | 1058c2ecf20Sopenharmony_ci Output endpoint for Mixer 0 mux 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci properties: 1088c2ecf20Sopenharmony_ci "#address-cells": 1098c2ecf20Sopenharmony_ci const: 1 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci "#size-cells": 1128c2ecf20Sopenharmony_ci const: 0 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci reg: true 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ci patternProperties: 1178c2ecf20Sopenharmony_ci "^endpoint@[0-9]$": 1188c2ecf20Sopenharmony_ci type: object 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci properties: 1218c2ecf20Sopenharmony_ci reg: 1228c2ecf20Sopenharmony_ci description: | 1238c2ecf20Sopenharmony_ci ID of the target TCON 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci required: 1268c2ecf20Sopenharmony_ci - reg 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci required: 1298c2ecf20Sopenharmony_ci - "#address-cells" 1308c2ecf20Sopenharmony_ci - "#size-cells" 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci additionalProperties: false 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci port@2: 1358c2ecf20Sopenharmony_ci type: object 1368c2ecf20Sopenharmony_ci description: | 1378c2ecf20Sopenharmony_ci Input endpoint for Mixer 1 mux. 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci port@3: 1408c2ecf20Sopenharmony_ci type: object 1418c2ecf20Sopenharmony_ci description: | 1428c2ecf20Sopenharmony_ci Output endpoint for Mixer 1 mux 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci properties: 1458c2ecf20Sopenharmony_ci "#address-cells": 1468c2ecf20Sopenharmony_ci const: 1 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci "#size-cells": 1498c2ecf20Sopenharmony_ci const: 0 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci reg: true 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci patternProperties: 1548c2ecf20Sopenharmony_ci "^endpoint@[0-9]$": 1558c2ecf20Sopenharmony_ci type: object 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ci properties: 1588c2ecf20Sopenharmony_ci reg: 1598c2ecf20Sopenharmony_ci description: | 1608c2ecf20Sopenharmony_ci ID of the target TCON 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci required: 1638c2ecf20Sopenharmony_ci - reg 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ci required: 1668c2ecf20Sopenharmony_ci - "#address-cells" 1678c2ecf20Sopenharmony_ci - "#size-cells" 1688c2ecf20Sopenharmony_ci 1698c2ecf20Sopenharmony_ci additionalProperties: false 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci port@4: 1728c2ecf20Sopenharmony_ci type: object 1738c2ecf20Sopenharmony_ci description: | 1748c2ecf20Sopenharmony_ci Input endpoint for HDMI mux. 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_ci properties: 1778c2ecf20Sopenharmony_ci "#address-cells": 1788c2ecf20Sopenharmony_ci const: 1 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci "#size-cells": 1818c2ecf20Sopenharmony_ci const: 0 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ci reg: true 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci patternProperties: 1868c2ecf20Sopenharmony_ci "^endpoint@[0-9]$": 1878c2ecf20Sopenharmony_ci type: object 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ci properties: 1908c2ecf20Sopenharmony_ci reg: 1918c2ecf20Sopenharmony_ci description: | 1928c2ecf20Sopenharmony_ci ID of the target TCON 1938c2ecf20Sopenharmony_ci 1948c2ecf20Sopenharmony_ci required: 1958c2ecf20Sopenharmony_ci - reg 1968c2ecf20Sopenharmony_ci 1978c2ecf20Sopenharmony_ci required: 1988c2ecf20Sopenharmony_ci - "#address-cells" 1998c2ecf20Sopenharmony_ci - "#size-cells" 2008c2ecf20Sopenharmony_ci 2018c2ecf20Sopenharmony_ci additionalProperties: false 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci port@5: 2048c2ecf20Sopenharmony_ci type: object 2058c2ecf20Sopenharmony_ci description: | 2068c2ecf20Sopenharmony_ci Output endpoint for HDMI mux 2078c2ecf20Sopenharmony_ci 2088c2ecf20Sopenharmony_ci required: 2098c2ecf20Sopenharmony_ci - "#address-cells" 2108c2ecf20Sopenharmony_ci - "#size-cells" 2118c2ecf20Sopenharmony_ci - port@0 2128c2ecf20Sopenharmony_ci - port@1 2138c2ecf20Sopenharmony_ci - port@4 2148c2ecf20Sopenharmony_ci - port@5 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci additionalProperties: false 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_cirequired: 2198c2ecf20Sopenharmony_ci - "#clock-cells" 2208c2ecf20Sopenharmony_ci - compatible 2218c2ecf20Sopenharmony_ci - reg 2228c2ecf20Sopenharmony_ci - clocks 2238c2ecf20Sopenharmony_ci - clock-names 2248c2ecf20Sopenharmony_ci - clock-output-names 2258c2ecf20Sopenharmony_ci - resets 2268c2ecf20Sopenharmony_ci - ports 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ciadditionalProperties: false 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_ciif: 2318c2ecf20Sopenharmony_ci properties: 2328c2ecf20Sopenharmony_ci compatible: 2338c2ecf20Sopenharmony_ci contains: 2348c2ecf20Sopenharmony_ci const: allwinner,sun50i-h6-tcon-top 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_cithen: 2378c2ecf20Sopenharmony_ci properties: 2388c2ecf20Sopenharmony_ci clocks: 2398c2ecf20Sopenharmony_ci maxItems: 2 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci clock-output-names: 2428c2ecf20Sopenharmony_ci maxItems: 1 2438c2ecf20Sopenharmony_ci 2448c2ecf20Sopenharmony_cielse: 2458c2ecf20Sopenharmony_ci properties: 2468c2ecf20Sopenharmony_ci clocks: 2478c2ecf20Sopenharmony_ci minItems: 6 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci clock-output-names: 2508c2ecf20Sopenharmony_ci minItems: 3 2518c2ecf20Sopenharmony_ci 2528c2ecf20Sopenharmony_ci ports: 2538c2ecf20Sopenharmony_ci required: 2548c2ecf20Sopenharmony_ci - port@2 2558c2ecf20Sopenharmony_ci - port@3 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ciexamples: 2588c2ecf20Sopenharmony_ci - | 2598c2ecf20Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ci #include <dt-bindings/clock/sun8i-r40-ccu.h> 2628c2ecf20Sopenharmony_ci #include <dt-bindings/reset/sun8i-r40-ccu.h> 2638c2ecf20Sopenharmony_ci 2648c2ecf20Sopenharmony_ci tcon_top: tcon-top@1c70000 { 2658c2ecf20Sopenharmony_ci compatible = "allwinner,sun8i-r40-tcon-top"; 2668c2ecf20Sopenharmony_ci reg = <0x01c70000 0x1000>; 2678c2ecf20Sopenharmony_ci clocks = <&ccu CLK_BUS_TCON_TOP>, 2688c2ecf20Sopenharmony_ci <&ccu CLK_TCON_TV0>, 2698c2ecf20Sopenharmony_ci <&ccu CLK_TVE0>, 2708c2ecf20Sopenharmony_ci <&ccu CLK_TCON_TV1>, 2718c2ecf20Sopenharmony_ci <&ccu CLK_TVE1>, 2728c2ecf20Sopenharmony_ci <&ccu CLK_DSI_DPHY>; 2738c2ecf20Sopenharmony_ci clock-names = "bus", 2748c2ecf20Sopenharmony_ci "tcon-tv0", 2758c2ecf20Sopenharmony_ci "tve0", 2768c2ecf20Sopenharmony_ci "tcon-tv1", 2778c2ecf20Sopenharmony_ci "tve1", 2788c2ecf20Sopenharmony_ci "dsi"; 2798c2ecf20Sopenharmony_ci clock-output-names = "tcon-top-tv0", 2808c2ecf20Sopenharmony_ci "tcon-top-tv1", 2818c2ecf20Sopenharmony_ci "tcon-top-dsi"; 2828c2ecf20Sopenharmony_ci resets = <&ccu RST_BUS_TCON_TOP>; 2838c2ecf20Sopenharmony_ci #clock-cells = <1>; 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ci ports { 2868c2ecf20Sopenharmony_ci #address-cells = <1>; 2878c2ecf20Sopenharmony_ci #size-cells = <0>; 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ci tcon_top_mixer0_in: port@0 { 2908c2ecf20Sopenharmony_ci reg = <0>; 2918c2ecf20Sopenharmony_ci 2928c2ecf20Sopenharmony_ci tcon_top_mixer0_in_mixer0: endpoint { 2938c2ecf20Sopenharmony_ci remote-endpoint = <&mixer0_out_tcon_top>; 2948c2ecf20Sopenharmony_ci }; 2958c2ecf20Sopenharmony_ci }; 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_ci tcon_top_mixer0_out: port@1 { 2988c2ecf20Sopenharmony_ci #address-cells = <1>; 2998c2ecf20Sopenharmony_ci #size-cells = <0>; 3008c2ecf20Sopenharmony_ci reg = <1>; 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ci tcon_top_mixer0_out_tcon_lcd0: endpoint@0 { 3038c2ecf20Sopenharmony_ci reg = <0>; 3048c2ecf20Sopenharmony_ci }; 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_ci tcon_top_mixer0_out_tcon_lcd1: endpoint@1 { 3078c2ecf20Sopenharmony_ci reg = <1>; 3088c2ecf20Sopenharmony_ci }; 3098c2ecf20Sopenharmony_ci 3108c2ecf20Sopenharmony_ci tcon_top_mixer0_out_tcon_tv0: endpoint@2 { 3118c2ecf20Sopenharmony_ci reg = <2>; 3128c2ecf20Sopenharmony_ci remote-endpoint = <&tcon_tv0_in_tcon_top_mixer0>; 3138c2ecf20Sopenharmony_ci }; 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ci tcon_top_mixer0_out_tcon_tv1: endpoint@3 { 3168c2ecf20Sopenharmony_ci reg = <3>; 3178c2ecf20Sopenharmony_ci remote-endpoint = <&tcon_tv1_in_tcon_top_mixer0>; 3188c2ecf20Sopenharmony_ci }; 3198c2ecf20Sopenharmony_ci }; 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_ci tcon_top_mixer1_in: port@2 { 3228c2ecf20Sopenharmony_ci #address-cells = <1>; 3238c2ecf20Sopenharmony_ci #size-cells = <0>; 3248c2ecf20Sopenharmony_ci reg = <2>; 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ci tcon_top_mixer1_in_mixer1: endpoint@1 { 3278c2ecf20Sopenharmony_ci reg = <1>; 3288c2ecf20Sopenharmony_ci remote-endpoint = <&mixer1_out_tcon_top>; 3298c2ecf20Sopenharmony_ci }; 3308c2ecf20Sopenharmony_ci }; 3318c2ecf20Sopenharmony_ci 3328c2ecf20Sopenharmony_ci tcon_top_mixer1_out: port@3 { 3338c2ecf20Sopenharmony_ci #address-cells = <1>; 3348c2ecf20Sopenharmony_ci #size-cells = <0>; 3358c2ecf20Sopenharmony_ci reg = <3>; 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ci tcon_top_mixer1_out_tcon_lcd0: endpoint@0 { 3388c2ecf20Sopenharmony_ci reg = <0>; 3398c2ecf20Sopenharmony_ci }; 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ci tcon_top_mixer1_out_tcon_lcd1: endpoint@1 { 3428c2ecf20Sopenharmony_ci reg = <1>; 3438c2ecf20Sopenharmony_ci }; 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_ci tcon_top_mixer1_out_tcon_tv0: endpoint@2 { 3468c2ecf20Sopenharmony_ci reg = <2>; 3478c2ecf20Sopenharmony_ci remote-endpoint = <&tcon_tv0_in_tcon_top_mixer1>; 3488c2ecf20Sopenharmony_ci }; 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ci tcon_top_mixer1_out_tcon_tv1: endpoint@3 { 3518c2ecf20Sopenharmony_ci reg = <3>; 3528c2ecf20Sopenharmony_ci remote-endpoint = <&tcon_tv1_in_tcon_top_mixer1>; 3538c2ecf20Sopenharmony_ci }; 3548c2ecf20Sopenharmony_ci }; 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_ci tcon_top_hdmi_in: port@4 { 3578c2ecf20Sopenharmony_ci #address-cells = <1>; 3588c2ecf20Sopenharmony_ci #size-cells = <0>; 3598c2ecf20Sopenharmony_ci reg = <4>; 3608c2ecf20Sopenharmony_ci 3618c2ecf20Sopenharmony_ci tcon_top_hdmi_in_tcon_tv0: endpoint@0 { 3628c2ecf20Sopenharmony_ci reg = <0>; 3638c2ecf20Sopenharmony_ci remote-endpoint = <&tcon_tv0_out_tcon_top>; 3648c2ecf20Sopenharmony_ci }; 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_ci tcon_top_hdmi_in_tcon_tv1: endpoint@1 { 3678c2ecf20Sopenharmony_ci reg = <1>; 3688c2ecf20Sopenharmony_ci remote-endpoint = <&tcon_tv1_out_tcon_top>; 3698c2ecf20Sopenharmony_ci }; 3708c2ecf20Sopenharmony_ci }; 3718c2ecf20Sopenharmony_ci 3728c2ecf20Sopenharmony_ci tcon_top_hdmi_out: port@5 { 3738c2ecf20Sopenharmony_ci reg = <5>; 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_ci tcon_top_hdmi_out_hdmi: endpoint { 3768c2ecf20Sopenharmony_ci remote-endpoint = <&hdmi_in_tcon_top>; 3778c2ecf20Sopenharmony_ci }; 3788c2ecf20Sopenharmony_ci }; 3798c2ecf20Sopenharmony_ci }; 3808c2ecf20Sopenharmony_ci }; 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_ci... 383