xref: /freebsd/sys/contrib/device-tree/Bindings/display/xlnx/xlnx,zynqmp-dpsub.yaml (revision 8bab661a3316d8bd9b9fbd11a3b4371b91507bd2)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/display/xlnx/xlnx,zynqmp-dpsub.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadottitle: Xilinx ZynqMP DisplayPort Subsystem
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotdescription: |
10c66ec88fSEmmanuel Vadot  The DisplayPort subsystem of Xilinx ZynqMP (Zynq UltraScale+ MPSoC)
11c66ec88fSEmmanuel Vadot  implements the display and audio pipelines based on the DisplayPort v1.2
12c66ec88fSEmmanuel Vadot  standard. The subsystem includes multiple functional blocks as below:
13c66ec88fSEmmanuel Vadot
14c66ec88fSEmmanuel Vadot               +------------------------------------------------------------+
15c66ec88fSEmmanuel Vadot  +--------+   | +----------------+     +-----------+                       |
16c66ec88fSEmmanuel Vadot  | DPDMA  | --->|                | --> |   Video   | Video +-------------+ |
17c66ec88fSEmmanuel Vadot  | 4x vid |   | |                |     | Rendering | -+--> |             | |   +------+
18c66ec88fSEmmanuel Vadot  | 2x aud |   | |  Audio/Video   | --> | Pipeline  |  |    | DisplayPort |---> | PHY0 |
19c66ec88fSEmmanuel Vadot  +--------+   | | Buffer Manager |     +-----------+  |    |   Source    | |   +------+
20c66ec88fSEmmanuel Vadot               | |    and STC     |     +-----------+  |    | Controller  | |   +------+
21c66ec88fSEmmanuel Vadot  Live Video --->|                | --> |   Audio   | Audio |             |---> | PHY1 |
22c66ec88fSEmmanuel Vadot               | |                |     |   Mixer   | --+-> |             | |   +------+
23c66ec88fSEmmanuel Vadot  Live Audio --->|                | --> |           |  ||   +-------------+ |
24c66ec88fSEmmanuel Vadot               | +----------------+     +-----------+  ||                   |
25c66ec88fSEmmanuel Vadot               +---------------------------------------||-------------------+
26c66ec88fSEmmanuel Vadot                                                       vv
27c66ec88fSEmmanuel Vadot                                                 Blended Video and
28c66ec88fSEmmanuel Vadot                                                 Mixed Audio to PL
29c66ec88fSEmmanuel Vadot
30c66ec88fSEmmanuel Vadot  The Buffer Manager interacts with external interface such as DMA engines or
31c66ec88fSEmmanuel Vadot  live audio/video streams from the programmable logic. The Video Rendering
32c66ec88fSEmmanuel Vadot  Pipeline blends the video and graphics layers and performs colorspace
33c66ec88fSEmmanuel Vadot  conversion. The Audio Mixer mixes the incoming audio streams. The DisplayPort
34c66ec88fSEmmanuel Vadot  Source Controller handles the DisplayPort protocol and connects to external
35c66ec88fSEmmanuel Vadot  PHYs.
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot  The subsystem supports 2 video and 2 audio streams, and various pixel formats
38c66ec88fSEmmanuel Vadot  and depths up to 4K@30 resolution.
39c66ec88fSEmmanuel Vadot
40c66ec88fSEmmanuel Vadot  Please refer to "Zynq UltraScale+ Device Technical Reference Manual"
41c66ec88fSEmmanuel Vadot  (https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf)
42c66ec88fSEmmanuel Vadot  for more details.
43c66ec88fSEmmanuel Vadot
44c66ec88fSEmmanuel Vadotmaintainers:
45c66ec88fSEmmanuel Vadot  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
46c66ec88fSEmmanuel Vadot
47c66ec88fSEmmanuel Vadotproperties:
48c66ec88fSEmmanuel Vadot  compatible:
49c66ec88fSEmmanuel Vadot    const: xlnx,zynqmp-dpsub-1.7
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel Vadot  reg:
52c66ec88fSEmmanuel Vadot    maxItems: 4
53c66ec88fSEmmanuel Vadot  reg-names:
54c66ec88fSEmmanuel Vadot    items:
55c66ec88fSEmmanuel Vadot      - const: dp
56c66ec88fSEmmanuel Vadot      - const: blend
57c66ec88fSEmmanuel Vadot      - const: av_buf
58c66ec88fSEmmanuel Vadot      - const: aud
59c66ec88fSEmmanuel Vadot
60c66ec88fSEmmanuel Vadot  interrupts:
61c66ec88fSEmmanuel Vadot    maxItems: 1
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadot  clocks:
64c66ec88fSEmmanuel Vadot    description:
65c66ec88fSEmmanuel Vadot      The APB clock and at least one video clock are mandatory, the audio clock
66c66ec88fSEmmanuel Vadot      is optional.
67c66ec88fSEmmanuel Vadot    minItems: 2
68c66ec88fSEmmanuel Vadot    items:
69c66ec88fSEmmanuel Vadot      - description: dp_apb_clk is the APB clock
70c66ec88fSEmmanuel Vadot      - description: dp_aud_clk is the Audio clock
71c66ec88fSEmmanuel Vadot      - description:
72c66ec88fSEmmanuel Vadot          dp_vtc_pixel_clk_in is the non-live video clock (from Processing
73c66ec88fSEmmanuel Vadot          System)
74c66ec88fSEmmanuel Vadot      - description:
75c66ec88fSEmmanuel Vadot          dp_live_video_in_clk is the live video clock (from Programmable
76c66ec88fSEmmanuel Vadot          Logic)
77c66ec88fSEmmanuel Vadot  clock-names:
78c66ec88fSEmmanuel Vadot    oneOf:
79c66ec88fSEmmanuel Vadot      - minItems: 2
80c66ec88fSEmmanuel Vadot        items:
81c66ec88fSEmmanuel Vadot          - const: dp_apb_clk
82c66ec88fSEmmanuel Vadot          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
83c66ec88fSEmmanuel Vadot          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
84c66ec88fSEmmanuel Vadot      - minItems: 3
85c66ec88fSEmmanuel Vadot        items:
86c66ec88fSEmmanuel Vadot          - const: dp_apb_clk
87c66ec88fSEmmanuel Vadot          - const: dp_aud_clk
88c66ec88fSEmmanuel Vadot          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
89c66ec88fSEmmanuel Vadot          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
90c66ec88fSEmmanuel Vadot
91c66ec88fSEmmanuel Vadot  power-domains:
92c66ec88fSEmmanuel Vadot    maxItems: 1
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot  resets:
95c66ec88fSEmmanuel Vadot    maxItems: 1
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot  dmas:
98c66ec88fSEmmanuel Vadot    items:
99c66ec88fSEmmanuel Vadot      - description: Video layer, plane 0 (RGB or luma)
100c66ec88fSEmmanuel Vadot      - description: Video layer, plane 1 (U/V or U)
101c66ec88fSEmmanuel Vadot      - description: Video layer, plane 2 (V)
102c66ec88fSEmmanuel Vadot      - description: Graphics layer
103c66ec88fSEmmanuel Vadot  dma-names:
104c66ec88fSEmmanuel Vadot    items:
105c66ec88fSEmmanuel Vadot      - const: vid0
106c66ec88fSEmmanuel Vadot      - const: vid1
107c66ec88fSEmmanuel Vadot      - const: vid2
108c66ec88fSEmmanuel Vadot      - const: gfx0
109c66ec88fSEmmanuel Vadot
110c66ec88fSEmmanuel Vadot  phys:
111c66ec88fSEmmanuel Vadot    description: PHYs for the DP data lanes
112c66ec88fSEmmanuel Vadot    minItems: 1
113c66ec88fSEmmanuel Vadot    maxItems: 2
114c66ec88fSEmmanuel Vadot  phy-names:
115c66ec88fSEmmanuel Vadot    minItems: 1
116c66ec88fSEmmanuel Vadot    items:
117c66ec88fSEmmanuel Vadot      - const: dp-phy0
118c66ec88fSEmmanuel Vadot      - const: dp-phy1
119c66ec88fSEmmanuel Vadot
120*8bab661aSEmmanuel Vadot  ports:
121*8bab661aSEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/ports
122*8bab661aSEmmanuel Vadot    description: |
123*8bab661aSEmmanuel Vadot      Connections to the programmable logic and the DisplayPort PHYs. Each port
124*8bab661aSEmmanuel Vadot      shall have a single endpoint.
125*8bab661aSEmmanuel Vadot
126*8bab661aSEmmanuel Vadot    properties:
127*8bab661aSEmmanuel Vadot      port@0:
128*8bab661aSEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
129*8bab661aSEmmanuel Vadot        description: The live video input from the programmable logic
130*8bab661aSEmmanuel Vadot
131*8bab661aSEmmanuel Vadot      port@1:
132*8bab661aSEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
133*8bab661aSEmmanuel Vadot        description: The live graphics input from the programmable logic
134*8bab661aSEmmanuel Vadot
135*8bab661aSEmmanuel Vadot      port@2:
136*8bab661aSEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
137*8bab661aSEmmanuel Vadot        description: The live audio input from the programmable logic
138*8bab661aSEmmanuel Vadot
139*8bab661aSEmmanuel Vadot      port@3:
140*8bab661aSEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
141*8bab661aSEmmanuel Vadot        description: The blended video output to the programmable logic
142*8bab661aSEmmanuel Vadot
143*8bab661aSEmmanuel Vadot      port@4:
144*8bab661aSEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
145*8bab661aSEmmanuel Vadot        description: The mixed audio output to the programmable logic
146*8bab661aSEmmanuel Vadot
147*8bab661aSEmmanuel Vadot      port@5:
148*8bab661aSEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
149*8bab661aSEmmanuel Vadot        description: The DisplayPort output
150*8bab661aSEmmanuel Vadot
151*8bab661aSEmmanuel Vadot    required:
152*8bab661aSEmmanuel Vadot      - port@0
153*8bab661aSEmmanuel Vadot      - port@1
154*8bab661aSEmmanuel Vadot      - port@2
155*8bab661aSEmmanuel Vadot      - port@3
156*8bab661aSEmmanuel Vadot      - port@4
157*8bab661aSEmmanuel Vadot      - port@5
158*8bab661aSEmmanuel Vadot
159c66ec88fSEmmanuel Vadotrequired:
160c66ec88fSEmmanuel Vadot  - compatible
161c66ec88fSEmmanuel Vadot  - reg
162c66ec88fSEmmanuel Vadot  - reg-names
163c66ec88fSEmmanuel Vadot  - interrupts
164c66ec88fSEmmanuel Vadot  - clocks
165c66ec88fSEmmanuel Vadot  - clock-names
166c66ec88fSEmmanuel Vadot  - power-domains
167c66ec88fSEmmanuel Vadot  - resets
168c66ec88fSEmmanuel Vadot  - dmas
169c66ec88fSEmmanuel Vadot  - dma-names
170c66ec88fSEmmanuel Vadot  - phys
171c66ec88fSEmmanuel Vadot  - phy-names
172*8bab661aSEmmanuel Vadot  - ports
173c66ec88fSEmmanuel Vadot
174c66ec88fSEmmanuel VadotadditionalProperties: false
175c66ec88fSEmmanuel Vadot
176c66ec88fSEmmanuel Vadotexamples:
177c66ec88fSEmmanuel Vadot  - |
178c66ec88fSEmmanuel Vadot    #include <dt-bindings/phy/phy.h>
179c66ec88fSEmmanuel Vadot    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
180c66ec88fSEmmanuel Vadot
181c66ec88fSEmmanuel Vadot    display@fd4a0000 {
182c66ec88fSEmmanuel Vadot        compatible = "xlnx,zynqmp-dpsub-1.7";
183c66ec88fSEmmanuel Vadot        reg = <0xfd4a0000 0x1000>,
184c66ec88fSEmmanuel Vadot              <0xfd4aa000 0x1000>,
185c66ec88fSEmmanuel Vadot              <0xfd4ab000 0x1000>,
186c66ec88fSEmmanuel Vadot              <0xfd4ac000 0x1000>;
187c66ec88fSEmmanuel Vadot        reg-names = "dp", "blend", "av_buf", "aud";
188c66ec88fSEmmanuel Vadot        interrupts = <0 119 4>;
189c66ec88fSEmmanuel Vadot        interrupt-parent = <&gic>;
190c66ec88fSEmmanuel Vadot
191c66ec88fSEmmanuel Vadot        clock-names = "dp_apb_clk", "dp_aud_clk", "dp_live_video_in_clk";
192c66ec88fSEmmanuel Vadot        clocks = <&dp_aclk>, <&clkc 17>, <&si570_1>;
193c66ec88fSEmmanuel Vadot
194c66ec88fSEmmanuel Vadot        power-domains = <&pd_dp>;
195c66ec88fSEmmanuel Vadot        resets = <&reset ZYNQMP_RESET_DP>;
196c66ec88fSEmmanuel Vadot
197c66ec88fSEmmanuel Vadot        dma-names = "vid0", "vid1", "vid2", "gfx0";
198c66ec88fSEmmanuel Vadot        dmas = <&xlnx_dpdma 0>,
199c66ec88fSEmmanuel Vadot               <&xlnx_dpdma 1>,
200c66ec88fSEmmanuel Vadot               <&xlnx_dpdma 2>,
201c66ec88fSEmmanuel Vadot               <&xlnx_dpdma 3>;
202c66ec88fSEmmanuel Vadot
2038cc087a1SEmmanuel Vadot        phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
2048cc087a1SEmmanuel Vadot               <&psgtr 0 PHY_TYPE_DP 1 3>;
205c66ec88fSEmmanuel Vadot
206c66ec88fSEmmanuel Vadot        phy-names = "dp-phy0", "dp-phy1";
207*8bab661aSEmmanuel Vadot
208*8bab661aSEmmanuel Vadot        ports {
209*8bab661aSEmmanuel Vadot            #address-cells = <1>;
210*8bab661aSEmmanuel Vadot            #size-cells = <0>;
211*8bab661aSEmmanuel Vadot
212*8bab661aSEmmanuel Vadot            port@0 {
213*8bab661aSEmmanuel Vadot                reg = <0>;
214*8bab661aSEmmanuel Vadot            };
215*8bab661aSEmmanuel Vadot            port@1 {
216*8bab661aSEmmanuel Vadot                reg = <1>;
217*8bab661aSEmmanuel Vadot            };
218*8bab661aSEmmanuel Vadot            port@2 {
219*8bab661aSEmmanuel Vadot                reg = <2>;
220*8bab661aSEmmanuel Vadot            };
221*8bab661aSEmmanuel Vadot            port@3 {
222*8bab661aSEmmanuel Vadot                reg = <3>;
223*8bab661aSEmmanuel Vadot            };
224*8bab661aSEmmanuel Vadot            port@4 {
225*8bab661aSEmmanuel Vadot                reg = <4>;
226*8bab661aSEmmanuel Vadot            };
227*8bab661aSEmmanuel Vadot            port@5 {
228*8bab661aSEmmanuel Vadot                reg = <5>;
229*8bab661aSEmmanuel Vadot                dpsub_dp_out: endpoint {
230*8bab661aSEmmanuel Vadot                    remote-endpoint = <&dp_connector>;
231*8bab661aSEmmanuel Vadot                };
232*8bab661aSEmmanuel Vadot            };
233*8bab661aSEmmanuel Vadot        };
234c66ec88fSEmmanuel Vadot    };
235c66ec88fSEmmanuel Vadot
236c66ec88fSEmmanuel Vadot...
237