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