xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/display/xlnx/xlnx,zynqmp-dpsub.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/display/xlnx/xlnx,zynqmp-dpsub.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Xilinx ZynqMP DisplayPort Subsystem
8*4882a593Smuzhiyun
9*4882a593Smuzhiyundescription: |
10*4882a593Smuzhiyun  The DisplayPort subsystem of Xilinx ZynqMP (Zynq UltraScale+ MPSoC)
11*4882a593Smuzhiyun  implements the display and audio pipelines based on the DisplayPort v1.2
12*4882a593Smuzhiyun  standard. The subsystem includes multiple functional blocks as below:
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun               +------------------------------------------------------------+
15*4882a593Smuzhiyun  +--------+   | +----------------+     +-----------+                       |
16*4882a593Smuzhiyun  | DPDMA  | --->|                | --> |   Video   | Video +-------------+ |
17*4882a593Smuzhiyun  | 4x vid |   | |                |     | Rendering | -+--> |             | |   +------+
18*4882a593Smuzhiyun  | 2x aud |   | |  Audio/Video   | --> | Pipeline  |  |    | DisplayPort |---> | PHY0 |
19*4882a593Smuzhiyun  +--------+   | | Buffer Manager |     +-----------+  |    |   Source    | |   +------+
20*4882a593Smuzhiyun               | |    and STC     |     +-----------+  |    | Controller  | |   +------+
21*4882a593Smuzhiyun  Live Video --->|                | --> |   Audio   | Audio |             |---> | PHY1 |
22*4882a593Smuzhiyun               | |                |     |   Mixer   | --+-> |             | |   +------+
23*4882a593Smuzhiyun  Live Audio --->|                | --> |           |  ||   +-------------+ |
24*4882a593Smuzhiyun               | +----------------+     +-----------+  ||                   |
25*4882a593Smuzhiyun               +---------------------------------------||-------------------+
26*4882a593Smuzhiyun                                                       vv
27*4882a593Smuzhiyun                                                 Blended Video and
28*4882a593Smuzhiyun                                                 Mixed Audio to PL
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun  The Buffer Manager interacts with external interface such as DMA engines or
31*4882a593Smuzhiyun  live audio/video streams from the programmable logic. The Video Rendering
32*4882a593Smuzhiyun  Pipeline blends the video and graphics layers and performs colorspace
33*4882a593Smuzhiyun  conversion. The Audio Mixer mixes the incoming audio streams. The DisplayPort
34*4882a593Smuzhiyun  Source Controller handles the DisplayPort protocol and connects to external
35*4882a593Smuzhiyun  PHYs.
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun  The subsystem supports 2 video and 2 audio streams, and various pixel formats
38*4882a593Smuzhiyun  and depths up to 4K@30 resolution.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun  Please refer to "Zynq UltraScale+ Device Technical Reference Manual"
41*4882a593Smuzhiyun  (https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf)
42*4882a593Smuzhiyun  for more details.
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunmaintainers:
45*4882a593Smuzhiyun  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
46*4882a593Smuzhiyun
47*4882a593Smuzhiyunproperties:
48*4882a593Smuzhiyun  compatible:
49*4882a593Smuzhiyun    const: xlnx,zynqmp-dpsub-1.7
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun  reg:
52*4882a593Smuzhiyun    maxItems: 4
53*4882a593Smuzhiyun  reg-names:
54*4882a593Smuzhiyun    items:
55*4882a593Smuzhiyun      - const: dp
56*4882a593Smuzhiyun      - const: blend
57*4882a593Smuzhiyun      - const: av_buf
58*4882a593Smuzhiyun      - const: aud
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun  interrupts:
61*4882a593Smuzhiyun    maxItems: 1
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun  clocks:
64*4882a593Smuzhiyun    description:
65*4882a593Smuzhiyun      The APB clock and at least one video clock are mandatory, the audio clock
66*4882a593Smuzhiyun      is optional.
67*4882a593Smuzhiyun    minItems: 2
68*4882a593Smuzhiyun    maxItems: 4
69*4882a593Smuzhiyun    items:
70*4882a593Smuzhiyun      - description: dp_apb_clk is the APB clock
71*4882a593Smuzhiyun      - description: dp_aud_clk is the Audio clock
72*4882a593Smuzhiyun      - description:
73*4882a593Smuzhiyun          dp_vtc_pixel_clk_in is the non-live video clock (from Processing
74*4882a593Smuzhiyun          System)
75*4882a593Smuzhiyun      - description:
76*4882a593Smuzhiyun          dp_live_video_in_clk is the live video clock (from Programmable
77*4882a593Smuzhiyun          Logic)
78*4882a593Smuzhiyun  clock-names:
79*4882a593Smuzhiyun    oneOf:
80*4882a593Smuzhiyun      - minItems: 2
81*4882a593Smuzhiyun        maxItems: 3
82*4882a593Smuzhiyun        items:
83*4882a593Smuzhiyun          - const: dp_apb_clk
84*4882a593Smuzhiyun          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
85*4882a593Smuzhiyun          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
86*4882a593Smuzhiyun      - minItems: 3
87*4882a593Smuzhiyun        maxItems: 4
88*4882a593Smuzhiyun        items:
89*4882a593Smuzhiyun          - const: dp_apb_clk
90*4882a593Smuzhiyun          - const: dp_aud_clk
91*4882a593Smuzhiyun          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
92*4882a593Smuzhiyun          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun  power-domains:
95*4882a593Smuzhiyun    maxItems: 1
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun  resets:
98*4882a593Smuzhiyun    maxItems: 1
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun  dmas:
101*4882a593Smuzhiyun    maxItems: 4
102*4882a593Smuzhiyun    items:
103*4882a593Smuzhiyun      - description: Video layer, plane 0 (RGB or luma)
104*4882a593Smuzhiyun      - description: Video layer, plane 1 (U/V or U)
105*4882a593Smuzhiyun      - description: Video layer, plane 2 (V)
106*4882a593Smuzhiyun      - description: Graphics layer
107*4882a593Smuzhiyun  dma-names:
108*4882a593Smuzhiyun    items:
109*4882a593Smuzhiyun      - const: vid0
110*4882a593Smuzhiyun      - const: vid1
111*4882a593Smuzhiyun      - const: vid2
112*4882a593Smuzhiyun      - const: gfx0
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun  phys:
115*4882a593Smuzhiyun    description: PHYs for the DP data lanes
116*4882a593Smuzhiyun    minItems: 1
117*4882a593Smuzhiyun    maxItems: 2
118*4882a593Smuzhiyun  phy-names:
119*4882a593Smuzhiyun    minItems: 1
120*4882a593Smuzhiyun    maxItems: 2
121*4882a593Smuzhiyun    items:
122*4882a593Smuzhiyun      - const: dp-phy0
123*4882a593Smuzhiyun      - const: dp-phy1
124*4882a593Smuzhiyun
125*4882a593Smuzhiyunrequired:
126*4882a593Smuzhiyun  - compatible
127*4882a593Smuzhiyun  - reg
128*4882a593Smuzhiyun  - reg-names
129*4882a593Smuzhiyun  - interrupts
130*4882a593Smuzhiyun  - clocks
131*4882a593Smuzhiyun  - clock-names
132*4882a593Smuzhiyun  - power-domains
133*4882a593Smuzhiyun  - resets
134*4882a593Smuzhiyun  - dmas
135*4882a593Smuzhiyun  - dma-names
136*4882a593Smuzhiyun  - phys
137*4882a593Smuzhiyun  - phy-names
138*4882a593Smuzhiyun
139*4882a593SmuzhiyunadditionalProperties: false
140*4882a593Smuzhiyun
141*4882a593Smuzhiyunexamples:
142*4882a593Smuzhiyun  - |
143*4882a593Smuzhiyun    #include <dt-bindings/phy/phy.h>
144*4882a593Smuzhiyun    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun    display@fd4a0000 {
147*4882a593Smuzhiyun        compatible = "xlnx,zynqmp-dpsub-1.7";
148*4882a593Smuzhiyun        reg = <0xfd4a0000 0x1000>,
149*4882a593Smuzhiyun              <0xfd4aa000 0x1000>,
150*4882a593Smuzhiyun              <0xfd4ab000 0x1000>,
151*4882a593Smuzhiyun              <0xfd4ac000 0x1000>;
152*4882a593Smuzhiyun        reg-names = "dp", "blend", "av_buf", "aud";
153*4882a593Smuzhiyun        interrupts = <0 119 4>;
154*4882a593Smuzhiyun        interrupt-parent = <&gic>;
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun        clock-names = "dp_apb_clk", "dp_aud_clk", "dp_live_video_in_clk";
157*4882a593Smuzhiyun        clocks = <&dp_aclk>, <&clkc 17>, <&si570_1>;
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun        power-domains = <&pd_dp>;
160*4882a593Smuzhiyun        resets = <&reset ZYNQMP_RESET_DP>;
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun        dma-names = "vid0", "vid1", "vid2", "gfx0";
163*4882a593Smuzhiyun        dmas = <&xlnx_dpdma 0>,
164*4882a593Smuzhiyun               <&xlnx_dpdma 1>,
165*4882a593Smuzhiyun               <&xlnx_dpdma 2>,
166*4882a593Smuzhiyun               <&xlnx_dpdma 3>;
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun        phys = <&psgtr 1 PHY_TYPE_DP 0 3 27000000>,
169*4882a593Smuzhiyun               <&psgtr 0 PHY_TYPE_DP 1 3 27000000>;
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun        phy-names = "dp-phy0", "dp-phy1";
172*4882a593Smuzhiyun    };
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun...
175