16b9ebf1eSNeil Armstrong# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 26b9ebf1eSNeil Armstrong# Copyright 2019 BayLibre, SAS 36b9ebf1eSNeil Armstrong%YAML 1.2 46b9ebf1eSNeil Armstrong--- 5*4334aec0SRob Herring$id: http://devicetree.org/schemas/display/amlogic,meson-vpu.yaml# 6*4334aec0SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml# 76b9ebf1eSNeil Armstrong 86b9ebf1eSNeil Armstrongtitle: Amlogic Meson Display Controller 96b9ebf1eSNeil Armstrong 106b9ebf1eSNeil Armstrongmaintainers: 11c6a43fb3SNeil Armstrong - Neil Armstrong <neil.armstrong@linaro.org> 126b9ebf1eSNeil Armstrong 136b9ebf1eSNeil Armstrongdescription: | 146b9ebf1eSNeil Armstrong The Amlogic Meson Display controller is composed of several components 156b9ebf1eSNeil Armstrong that are going to be documented below 166b9ebf1eSNeil Armstrong 176b9ebf1eSNeil Armstrong DMC|---------------VPU (Video Processing Unit)----------------|------HHI------| 186b9ebf1eSNeil Armstrong | vd1 _______ _____________ _________________ | | 196b9ebf1eSNeil Armstrong D |-------| |----| | | | | HDMI PLL | 206b9ebf1eSNeil Armstrong D | vd2 | VIU | | Video Post | | Video Encoders |<---|-----VCLK | 216b9ebf1eSNeil Armstrong R |-------| |----| Processing | | | | | 226b9ebf1eSNeil Armstrong | osd2 | | | |---| Enci ----------|----|-----VDAC------| 236b9ebf1eSNeil Armstrong R |-------| CSC |----| Scalers | | Encp ----------|----|----HDMI-TX----| 246b9ebf1eSNeil Armstrong A | osd1 | | | Blenders | | Encl ----------|----|---------------| 256b9ebf1eSNeil Armstrong M |-------|______|----|____________| |________________| | | 266b9ebf1eSNeil Armstrong ___|__________________________________________________________|_______________| 276b9ebf1eSNeil Armstrong 286b9ebf1eSNeil Armstrong 296b9ebf1eSNeil Armstrong VIU: Video Input Unit 306b9ebf1eSNeil Armstrong --------------------- 316b9ebf1eSNeil Armstrong 326b9ebf1eSNeil Armstrong The Video Input Unit is in charge of the pixel scanout from the DDR memory. 336b9ebf1eSNeil Armstrong It fetches the frames addresses, stride and parameters from the "Canvas" memory. 346b9ebf1eSNeil Armstrong This part is also in charge of the CSC (Colorspace Conversion). 356b9ebf1eSNeil Armstrong It can handle 2 OSD Planes and 2 Video Planes. 366b9ebf1eSNeil Armstrong 376b9ebf1eSNeil Armstrong VPP: Video Post Processing 386b9ebf1eSNeil Armstrong -------------------------- 396b9ebf1eSNeil Armstrong 406b9ebf1eSNeil Armstrong The Video Post Processing is in charge of the scaling and blending of the 416b9ebf1eSNeil Armstrong various planes into a single pixel stream. 426b9ebf1eSNeil Armstrong There is a special "pre-blending" used by the video planes with a dedicated 436b9ebf1eSNeil Armstrong scaler and a "post-blending" to merge with the OSD Planes. 446b9ebf1eSNeil Armstrong The OSD planes also have a dedicated scaler for one of the OSD. 456b9ebf1eSNeil Armstrong 466b9ebf1eSNeil Armstrong VENC: Video Encoders 476b9ebf1eSNeil Armstrong -------------------- 486b9ebf1eSNeil Armstrong 496b9ebf1eSNeil Armstrong The VENC is composed of the multiple pixel encoders 506b9ebf1eSNeil Armstrong - ENCI : Interlace Video encoder for CVBS and Interlace HDMI 516b9ebf1eSNeil Armstrong - ENCP : Progressive Video Encoder for HDMI 526b9ebf1eSNeil Armstrong - ENCL : LCD LVDS Encoder 536b9ebf1eSNeil Armstrong The VENC Unit gets a Pixel Clocks (VCLK) from a dedicated HDMI PLL and clock 546b9ebf1eSNeil Armstrong tree and provides the scanout clock to the VPP and VIU. 556b9ebf1eSNeil Armstrong The ENCI is connected to a single VDAC for Composite Output. 566b9ebf1eSNeil Armstrong The ENCI and ENCP are connected to an on-chip HDMI Transceiver. 576b9ebf1eSNeil Armstrong 586b9ebf1eSNeil Armstrongproperties: 596b9ebf1eSNeil Armstrong compatible: 606b9ebf1eSNeil Armstrong oneOf: 616b9ebf1eSNeil Armstrong - items: 626b9ebf1eSNeil Armstrong - enum: 636b9ebf1eSNeil Armstrong - amlogic,meson-gxbb-vpu # GXBB (S905) 646b9ebf1eSNeil Armstrong - amlogic,meson-gxl-vpu # GXL (S905X, S905D) 656b9ebf1eSNeil Armstrong - amlogic,meson-gxm-vpu # GXM (S912) 666b9ebf1eSNeil Armstrong - const: amlogic,meson-gx-vpu 676b9ebf1eSNeil Armstrong - enum: 686b9ebf1eSNeil Armstrong - amlogic,meson-g12a-vpu # G12A (S905X2, S905Y2, S905D2) 696b9ebf1eSNeil Armstrong 706b9ebf1eSNeil Armstrong reg: 716b9ebf1eSNeil Armstrong maxItems: 2 726b9ebf1eSNeil Armstrong 736b9ebf1eSNeil Armstrong reg-names: 746b9ebf1eSNeil Armstrong items: 756b9ebf1eSNeil Armstrong - const: vpu 766b9ebf1eSNeil Armstrong - const: hhi 776b9ebf1eSNeil Armstrong 786b9ebf1eSNeil Armstrong interrupts: 796b9ebf1eSNeil Armstrong maxItems: 1 806b9ebf1eSNeil Armstrong 81640f35b8SAlexander Stein amlogic,canvas: 82640f35b8SAlexander Stein description: should point to a canvas provider node 83640f35b8SAlexander Stein $ref: /schemas/types.yaml#/definitions/phandle 84640f35b8SAlexander Stein 856b9ebf1eSNeil Armstrong power-domains: 866b9ebf1eSNeil Armstrong maxItems: 1 876b9ebf1eSNeil Armstrong description: phandle to the associated power domain 886b9ebf1eSNeil Armstrong 896b9ebf1eSNeil Armstrong port@0: 90b6755423SRob Herring $ref: /schemas/graph.yaml#/properties/port 916b9ebf1eSNeil Armstrong description: 926b9ebf1eSNeil Armstrong A port node pointing to the CVBS VDAC port node. 936b9ebf1eSNeil Armstrong 946b9ebf1eSNeil Armstrong port@1: 95b6755423SRob Herring $ref: /schemas/graph.yaml#/properties/port 966b9ebf1eSNeil Armstrong description: 976b9ebf1eSNeil Armstrong A port node pointing to the HDMI-TX port node. 986b9ebf1eSNeil Armstrong 996b9ebf1eSNeil Armstrong port@2: 1006b9ebf1eSNeil Armstrong $ref: /schemas/graph.yaml#/properties/port 1016b9ebf1eSNeil Armstrong description: 1026b9ebf1eSNeil Armstrong A port node pointing to the DPI port node (e.g. DSI or LVDS transceiver). 1036b9ebf1eSNeil Armstrong 1046b9ebf1eSNeil Armstrong "#address-cells": 1056b9ebf1eSNeil Armstrong const: 1 1066b9ebf1eSNeil Armstrong 1076b9ebf1eSNeil Armstrong "#size-cells": 1086b9ebf1eSNeil Armstrong const: 0 1096b9ebf1eSNeil Armstrong 1106b9ebf1eSNeil Armstrongrequired: 1116b9ebf1eSNeil Armstrong - compatible 1126b9ebf1eSNeil Armstrong - reg 113640f35b8SAlexander Stein - interrupts 1146b9ebf1eSNeil Armstrong - port@0 1157f464532SRob Herring - port@1 1167f464532SRob Herring - "#address-cells" 1176b9ebf1eSNeil Armstrong - "#size-cells" 1186b9ebf1eSNeil Armstrong - amlogic,canvas 1196b9ebf1eSNeil Armstrong 1206b9ebf1eSNeil ArmstrongadditionalProperties: false 1216b9ebf1eSNeil Armstrong 1226b9ebf1eSNeil Armstrongexamples: 1236b9ebf1eSNeil Armstrong - | 1246b9ebf1eSNeil Armstrong vpu: vpu@d0100000 { 1256b9ebf1eSNeil Armstrong compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu"; 126640f35b8SAlexander Stein reg = <0xd0100000 0x100000>, <0xc883c000 0x1000>; 1276b9ebf1eSNeil Armstrong reg-names = "vpu", "hhi"; 1286b9ebf1eSNeil Armstrong interrupts = <3>; 1296b9ebf1eSNeil Armstrong #address-cells = <1>; 1306b9ebf1eSNeil Armstrong #size-cells = <0>; 1316b9ebf1eSNeil Armstrong amlogic,canvas = <&canvas>; 1326b9ebf1eSNeil Armstrong 1336b9ebf1eSNeil Armstrong /* CVBS VDAC output port */ 1346b9ebf1eSNeil Armstrong port@0 { 1356b9ebf1eSNeil Armstrong reg = <0>; 1366b9ebf1eSNeil Armstrong 1376b9ebf1eSNeil Armstrong cvbs_vdac_out: endpoint { 1386b9ebf1eSNeil Armstrong remote-endpoint = <&tv_connector_in>; 1396b9ebf1eSNeil Armstrong }; 1406b9ebf1eSNeil Armstrong }; 1416b9ebf1eSNeil Armstrong 1426b9ebf1eSNeil Armstrong /* HDMI TX output port */ 1436b9ebf1eSNeil Armstrong port@1 { 1446b9ebf1eSNeil Armstrong reg = <1>; 1456b9ebf1eSNeil Armstrong 146 hdmi_tx_out: endpoint { 147 remote-endpoint = <&hdmi_tx_in>; 148 }; 149 }; 150 }; 151