xref: /openbmc/linux/Documentation/devicetree/bindings/display/amlogic,meson-vpu.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
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