xref: /freebsd/sys/contrib/device-tree/Bindings/display/amlogic,meson-vpu.yaml (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot# Copyright 2019 BayLibre, SAS
3c66ec88fSEmmanuel Vadot%YAML 1.2
4c66ec88fSEmmanuel Vadot---
5fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/display/amlogic,meson-vpu.yaml#
6fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadottitle: Amlogic Meson Display Controller
9c66ec88fSEmmanuel Vadot
10c66ec88fSEmmanuel Vadotmaintainers:
11b97ee269SEmmanuel Vadot  - Neil Armstrong <neil.armstrong@linaro.org>
12c66ec88fSEmmanuel Vadot
13c66ec88fSEmmanuel Vadotdescription: |
14c66ec88fSEmmanuel Vadot  The Amlogic Meson Display controller is composed of several components
15c66ec88fSEmmanuel Vadot  that are going to be documented below
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel Vadot  DMC|---------------VPU (Video Processing Unit)----------------|------HHI------|
18c66ec88fSEmmanuel Vadot     | vd1   _______     _____________    _________________     |               |
19c66ec88fSEmmanuel Vadot  D  |-------|      |----|            |   |                |    |   HDMI PLL    |
20c66ec88fSEmmanuel Vadot  D  | vd2   | VIU  |    | Video Post |   | Video Encoders |<---|-----VCLK      |
21c66ec88fSEmmanuel Vadot  R  |-------|      |----| Processing |   |                |    |               |
22c66ec88fSEmmanuel Vadot     | osd2  |      |    |            |---| Enci ----------|----|-----VDAC------|
23c66ec88fSEmmanuel Vadot  R  |-------| CSC  |----| Scalers    |   | Encp ----------|----|----HDMI-TX----|
24c66ec88fSEmmanuel Vadot  A  | osd1  |      |    | Blenders   |   | Encl ----------|----|---------------|
25c66ec88fSEmmanuel Vadot  M  |-------|______|----|____________|   |________________|    |               |
26c66ec88fSEmmanuel Vadot  ___|__________________________________________________________|_______________|
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot
29c66ec88fSEmmanuel Vadot  VIU: Video Input Unit
30c66ec88fSEmmanuel Vadot  ---------------------
31c66ec88fSEmmanuel Vadot
32c66ec88fSEmmanuel Vadot  The Video Input Unit is in charge of the pixel scanout from the DDR memory.
33c66ec88fSEmmanuel Vadot  It fetches the frames addresses, stride and parameters from the "Canvas" memory.
34c66ec88fSEmmanuel Vadot  This part is also in charge of the CSC (Colorspace Conversion).
35c66ec88fSEmmanuel Vadot  It can handle 2 OSD Planes and 2 Video Planes.
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot  VPP: Video Post Processing
38c66ec88fSEmmanuel Vadot  --------------------------
39c66ec88fSEmmanuel Vadot
40c66ec88fSEmmanuel Vadot  The Video Post Processing is in charge of the scaling and blending of the
41c66ec88fSEmmanuel Vadot  various planes into a single pixel stream.
42c66ec88fSEmmanuel Vadot  There is a special "pre-blending" used by the video planes with a dedicated
43c66ec88fSEmmanuel Vadot  scaler and a "post-blending" to merge with the OSD Planes.
44c66ec88fSEmmanuel Vadot  The OSD planes also have a dedicated scaler for one of the OSD.
45c66ec88fSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot  VENC: Video Encoders
47c66ec88fSEmmanuel Vadot  --------------------
48c66ec88fSEmmanuel Vadot
49c66ec88fSEmmanuel Vadot  The VENC is composed of the multiple pixel encoders
50c66ec88fSEmmanuel Vadot   - ENCI : Interlace Video encoder for CVBS and Interlace HDMI
51c66ec88fSEmmanuel Vadot   - ENCP : Progressive Video Encoder for HDMI
52c66ec88fSEmmanuel Vadot   - ENCL : LCD LVDS Encoder
53c66ec88fSEmmanuel Vadot  The VENC Unit gets a Pixel Clocks (VCLK) from a dedicated HDMI PLL and clock
54c66ec88fSEmmanuel Vadot  tree and provides the scanout clock to the VPP and VIU.
55c66ec88fSEmmanuel Vadot  The ENCI is connected to a single VDAC for Composite Output.
56c66ec88fSEmmanuel Vadot  The ENCI and ENCP are connected to an on-chip HDMI Transceiver.
57c66ec88fSEmmanuel Vadot
58c66ec88fSEmmanuel Vadotproperties:
59c66ec88fSEmmanuel Vadot  compatible:
60c66ec88fSEmmanuel Vadot    oneOf:
61c66ec88fSEmmanuel Vadot      - items:
62c66ec88fSEmmanuel Vadot          - enum:
63c66ec88fSEmmanuel Vadot              - amlogic,meson-gxbb-vpu # GXBB (S905)
64c66ec88fSEmmanuel Vadot              - amlogic,meson-gxl-vpu # GXL (S905X, S905D)
65c66ec88fSEmmanuel Vadot              - amlogic,meson-gxm-vpu # GXM (S912)
66c66ec88fSEmmanuel Vadot          - const: amlogic,meson-gx-vpu
67c66ec88fSEmmanuel Vadot      - enum:
68c66ec88fSEmmanuel Vadot          - amlogic,meson-g12a-vpu # G12A (S905X2, S905Y2, S905D2)
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot  reg:
71c66ec88fSEmmanuel Vadot    maxItems: 2
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel Vadot  reg-names:
74c66ec88fSEmmanuel Vadot    items:
75c66ec88fSEmmanuel Vadot      - const: vpu
76c66ec88fSEmmanuel Vadot      - const: hhi
77c66ec88fSEmmanuel Vadot
78c66ec88fSEmmanuel Vadot  interrupts:
79c66ec88fSEmmanuel Vadot    maxItems: 1
80c66ec88fSEmmanuel Vadot
81e67e8565SEmmanuel Vadot  amlogic,canvas:
82e67e8565SEmmanuel Vadot    description: should point to a canvas provider node
83e67e8565SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
84e67e8565SEmmanuel Vadot
85c66ec88fSEmmanuel Vadot  power-domains:
86c66ec88fSEmmanuel Vadot    maxItems: 1
87c66ec88fSEmmanuel Vadot    description: phandle to the associated power domain
88c66ec88fSEmmanuel Vadot
89c66ec88fSEmmanuel Vadot  port@0:
905def4c47SEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/port
91c66ec88fSEmmanuel Vadot    description:
92c66ec88fSEmmanuel Vadot      A port node pointing to the CVBS VDAC port node.
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot  port@1:
955def4c47SEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/port
96c66ec88fSEmmanuel Vadot    description:
97c66ec88fSEmmanuel Vadot      A port node pointing to the HDMI-TX port node.
98c66ec88fSEmmanuel Vadot
99*f126890aSEmmanuel Vadot  port@2:
100*f126890aSEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/port
101*f126890aSEmmanuel Vadot    description:
102*f126890aSEmmanuel Vadot      A port node pointing to the DPI port node (e.g. DSI or LVDS transceiver).
103*f126890aSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot  "#address-cells":
105c66ec88fSEmmanuel Vadot    const: 1
106c66ec88fSEmmanuel Vadot
107c66ec88fSEmmanuel Vadot  "#size-cells":
108c66ec88fSEmmanuel Vadot    const: 0
109c66ec88fSEmmanuel Vadot
110c66ec88fSEmmanuel Vadotrequired:
111c66ec88fSEmmanuel Vadot  - compatible
112c66ec88fSEmmanuel Vadot  - reg
113c66ec88fSEmmanuel Vadot  - interrupts
114c66ec88fSEmmanuel Vadot  - port@0
115c66ec88fSEmmanuel Vadot  - port@1
116c66ec88fSEmmanuel Vadot  - "#address-cells"
117c66ec88fSEmmanuel Vadot  - "#size-cells"
118e67e8565SEmmanuel Vadot  - amlogic,canvas
119c66ec88fSEmmanuel Vadot
120c66ec88fSEmmanuel VadotadditionalProperties: false
121c66ec88fSEmmanuel Vadot
122c66ec88fSEmmanuel Vadotexamples:
123c66ec88fSEmmanuel Vadot  - |
124c66ec88fSEmmanuel Vadot    vpu: vpu@d0100000 {
125c66ec88fSEmmanuel Vadot        compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu";
126c66ec88fSEmmanuel Vadot        reg = <0xd0100000 0x100000>, <0xc883c000 0x1000>;
127c66ec88fSEmmanuel Vadot        reg-names = "vpu", "hhi";
128c66ec88fSEmmanuel Vadot        interrupts = <3>;
129c66ec88fSEmmanuel Vadot        #address-cells = <1>;
130c66ec88fSEmmanuel Vadot        #size-cells = <0>;
131e67e8565SEmmanuel Vadot        amlogic,canvas = <&canvas>;
132c66ec88fSEmmanuel Vadot
133c66ec88fSEmmanuel Vadot        /* CVBS VDAC output port */
134c66ec88fSEmmanuel Vadot        port@0 {
135c66ec88fSEmmanuel Vadot            reg = <0>;
136c66ec88fSEmmanuel Vadot
137c66ec88fSEmmanuel Vadot            cvbs_vdac_out: endpoint {
138c66ec88fSEmmanuel Vadot                remote-endpoint = <&tv_connector_in>;
139c66ec88fSEmmanuel Vadot            };
140c66ec88fSEmmanuel Vadot        };
141c66ec88fSEmmanuel Vadot
142c66ec88fSEmmanuel Vadot        /* HDMI TX output port */
143c66ec88fSEmmanuel Vadot        port@1 {
144c66ec88fSEmmanuel Vadot            reg = <1>;
145c66ec88fSEmmanuel Vadot
146c66ec88fSEmmanuel Vadot            hdmi_tx_out: endpoint {
147c66ec88fSEmmanuel Vadot                remote-endpoint = <&hdmi_tx_in>;
148c66ec88fSEmmanuel Vadot            };
149c66ec88fSEmmanuel Vadot        };
150c66ec88fSEmmanuel Vadot    };
151