| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| # Copyright 2019 BayLibre, SAS |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/display/amlogic,meson-vpu.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Amlogic Meson Display Controller |
| |
| maintainers: |
| - Neil Armstrong <neil.armstrong@linaro.org> |
| |
| description: | |
| The Amlogic Meson Display controller is composed of several components |
| that are going to be documented below |
| |
| DMC|---------------VPU (Video Processing Unit)----------------|------HHI------| |
| | vd1 _______ _____________ _________________ | | |
| D |-------| |----| | | | | HDMI PLL | |
| D | vd2 | VIU | | Video Post | | Video Encoders |<---|-----VCLK | |
| R |-------| |----| Processing | | | | | |
| | osd2 | | | |---| Enci ----------|----|-----VDAC------| |
| R |-------| CSC |----| Scalers | | Encp ----------|----|----HDMI-TX----| |
| A | osd1 | | | Blenders | | Encl ----------|----|---------------| |
| M |-------|______|----|____________| |________________| | | |
| ___|__________________________________________________________|_______________| |
| |
| |
| VIU: Video Input Unit |
| --------------------- |
| |
| The Video Input Unit is in charge of the pixel scanout from the DDR memory. |
| It fetches the frames addresses, stride and parameters from the "Canvas" memory. |
| This part is also in charge of the CSC (Colorspace Conversion). |
| It can handle 2 OSD Planes and 2 Video Planes. |
| |
| VPP: Video Post Processing |
| -------------------------- |
| |
| The Video Post Processing is in charge of the scaling and blending of the |
| various planes into a single pixel stream. |
| There is a special "pre-blending" used by the video planes with a dedicated |
| scaler and a "post-blending" to merge with the OSD Planes. |
| The OSD planes also have a dedicated scaler for one of the OSD. |
| |
| VENC: Video Encoders |
| -------------------- |
| |
| The VENC is composed of the multiple pixel encoders |
| - ENCI : Interlace Video encoder for CVBS and Interlace HDMI |
| - ENCP : Progressive Video Encoder for HDMI |
| - ENCL : LCD LVDS Encoder |
| The VENC Unit gets a Pixel Clocks (VCLK) from a dedicated HDMI PLL and clock |
| tree and provides the scanout clock to the VPP and VIU. |
| The ENCI is connected to a single VDAC for Composite Output. |
| The ENCI and ENCP are connected to an on-chip HDMI Transceiver. |
| |
| properties: |
| compatible: |
| oneOf: |
| - items: |
| - enum: |
| - amlogic,meson-gxbb-vpu # GXBB (S905) |
| - amlogic,meson-gxl-vpu # GXL (S905X, S905D) |
| - amlogic,meson-gxm-vpu # GXM (S912) |
| - const: amlogic,meson-gx-vpu |
| - enum: |
| - amlogic,meson-g12a-vpu # G12A (S905X2, S905Y2, S905D2) |
| |
| reg: |
| maxItems: 2 |
| |
| reg-names: |
| items: |
| - const: vpu |
| - const: hhi |
| |
| interrupts: |
| maxItems: 1 |
| |
| amlogic,canvas: |
| description: should point to a canvas provider node |
| $ref: /schemas/types.yaml#/definitions/phandle |
| |
| power-domains: |
| maxItems: 1 |
| description: phandle to the associated power domain |
| |
| port@0: |
| $ref: /schemas/graph.yaml#/properties/port |
| description: |
| A port node pointing to the CVBS VDAC port node. |
| |
| port@1: |
| $ref: /schemas/graph.yaml#/properties/port |
| description: |
| A port node pointing to the HDMI-TX port node. |
| |
| port@2: |
| $ref: /schemas/graph.yaml#/properties/port |
| description: |
| A port node pointing to the DPI port node (e.g. DSI or LVDS transceiver). |
| |
| "#address-cells": |
| const: 1 |
| |
| "#size-cells": |
| const: 0 |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| - port@0 |
| - port@1 |
| - "#address-cells" |
| - "#size-cells" |
| - amlogic,canvas |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| vpu: vpu@d0100000 { |
| compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu"; |
| reg = <0xd0100000 0x100000>, <0xc883c000 0x1000>; |
| reg-names = "vpu", "hhi"; |
| interrupts = <3>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| amlogic,canvas = <&canvas>; |
| |
| /* CVBS VDAC output port */ |
| port@0 { |
| reg = <0>; |
| |
| cvbs_vdac_out: endpoint { |
| remote-endpoint = <&tv_connector_in>; |
| }; |
| }; |
| |
| /* HDMI TX output port */ |
| port@1 { |
| reg = <1>; |
| |
| hdmi_tx_out: endpoint { |
| remote-endpoint = <&hdmi_tx_in>; |
| }; |
| }; |
| }; |