18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/display/xlnx/xlnx,zynqmp-dpsub.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Xilinx ZynqMP DisplayPort Subsystem
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription: |
108c2ecf20Sopenharmony_ci  The DisplayPort subsystem of Xilinx ZynqMP (Zynq UltraScale+ MPSoC)
118c2ecf20Sopenharmony_ci  implements the display and audio pipelines based on the DisplayPort v1.2
128c2ecf20Sopenharmony_ci  standard. The subsystem includes multiple functional blocks as below:
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci               +------------------------------------------------------------+
158c2ecf20Sopenharmony_ci  +--------+   | +----------------+     +-----------+                       |
168c2ecf20Sopenharmony_ci  | DPDMA  | --->|                | --> |   Video   | Video +-------------+ |
178c2ecf20Sopenharmony_ci  | 4x vid |   | |                |     | Rendering | -+--> |             | |   +------+
188c2ecf20Sopenharmony_ci  | 2x aud |   | |  Audio/Video   | --> | Pipeline  |  |    | DisplayPort |---> | PHY0 |
198c2ecf20Sopenharmony_ci  +--------+   | | Buffer Manager |     +-----------+  |    |   Source    | |   +------+
208c2ecf20Sopenharmony_ci               | |    and STC     |     +-----------+  |    | Controller  | |   +------+
218c2ecf20Sopenharmony_ci  Live Video --->|                | --> |   Audio   | Audio |             |---> | PHY1 |
228c2ecf20Sopenharmony_ci               | |                |     |   Mixer   | --+-> |             | |   +------+
238c2ecf20Sopenharmony_ci  Live Audio --->|                | --> |           |  ||   +-------------+ |
248c2ecf20Sopenharmony_ci               | +----------------+     +-----------+  ||                   |
258c2ecf20Sopenharmony_ci               +---------------------------------------||-------------------+
268c2ecf20Sopenharmony_ci                                                       vv
278c2ecf20Sopenharmony_ci                                                 Blended Video and
288c2ecf20Sopenharmony_ci                                                 Mixed Audio to PL
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  The Buffer Manager interacts with external interface such as DMA engines or
318c2ecf20Sopenharmony_ci  live audio/video streams from the programmable logic. The Video Rendering
328c2ecf20Sopenharmony_ci  Pipeline blends the video and graphics layers and performs colorspace
338c2ecf20Sopenharmony_ci  conversion. The Audio Mixer mixes the incoming audio streams. The DisplayPort
348c2ecf20Sopenharmony_ci  Source Controller handles the DisplayPort protocol and connects to external
358c2ecf20Sopenharmony_ci  PHYs.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci  The subsystem supports 2 video and 2 audio streams, and various pixel formats
388c2ecf20Sopenharmony_ci  and depths up to 4K@30 resolution.
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  Please refer to "Zynq UltraScale+ Device Technical Reference Manual"
418c2ecf20Sopenharmony_ci  (https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf)
428c2ecf20Sopenharmony_ci  for more details.
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cimaintainers:
458c2ecf20Sopenharmony_ci  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ciproperties:
488c2ecf20Sopenharmony_ci  compatible:
498c2ecf20Sopenharmony_ci    const: xlnx,zynqmp-dpsub-1.7
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci  reg:
528c2ecf20Sopenharmony_ci    maxItems: 4
538c2ecf20Sopenharmony_ci  reg-names:
548c2ecf20Sopenharmony_ci    items:
558c2ecf20Sopenharmony_ci      - const: dp
568c2ecf20Sopenharmony_ci      - const: blend
578c2ecf20Sopenharmony_ci      - const: av_buf
588c2ecf20Sopenharmony_ci      - const: aud
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  interrupts:
618c2ecf20Sopenharmony_ci    maxItems: 1
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci  clocks:
648c2ecf20Sopenharmony_ci    description:
658c2ecf20Sopenharmony_ci      The APB clock and at least one video clock are mandatory, the audio clock
668c2ecf20Sopenharmony_ci      is optional.
678c2ecf20Sopenharmony_ci    minItems: 2
688c2ecf20Sopenharmony_ci    maxItems: 4
698c2ecf20Sopenharmony_ci    items:
708c2ecf20Sopenharmony_ci      - description: dp_apb_clk is the APB clock
718c2ecf20Sopenharmony_ci      - description: dp_aud_clk is the Audio clock
728c2ecf20Sopenharmony_ci      - description:
738c2ecf20Sopenharmony_ci          dp_vtc_pixel_clk_in is the non-live video clock (from Processing
748c2ecf20Sopenharmony_ci          System)
758c2ecf20Sopenharmony_ci      - description:
768c2ecf20Sopenharmony_ci          dp_live_video_in_clk is the live video clock (from Programmable
778c2ecf20Sopenharmony_ci          Logic)
788c2ecf20Sopenharmony_ci  clock-names:
798c2ecf20Sopenharmony_ci    oneOf:
808c2ecf20Sopenharmony_ci      - minItems: 2
818c2ecf20Sopenharmony_ci        maxItems: 3
828c2ecf20Sopenharmony_ci        items:
838c2ecf20Sopenharmony_ci          - const: dp_apb_clk
848c2ecf20Sopenharmony_ci          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
858c2ecf20Sopenharmony_ci          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
868c2ecf20Sopenharmony_ci      - minItems: 3
878c2ecf20Sopenharmony_ci        maxItems: 4
888c2ecf20Sopenharmony_ci        items:
898c2ecf20Sopenharmony_ci          - const: dp_apb_clk
908c2ecf20Sopenharmony_ci          - const: dp_aud_clk
918c2ecf20Sopenharmony_ci          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
928c2ecf20Sopenharmony_ci          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci  power-domains:
958c2ecf20Sopenharmony_ci    maxItems: 1
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci  resets:
988c2ecf20Sopenharmony_ci    maxItems: 1
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci  dmas:
1018c2ecf20Sopenharmony_ci    maxItems: 4
1028c2ecf20Sopenharmony_ci    items:
1038c2ecf20Sopenharmony_ci      - description: Video layer, plane 0 (RGB or luma)
1048c2ecf20Sopenharmony_ci      - description: Video layer, plane 1 (U/V or U)
1058c2ecf20Sopenharmony_ci      - description: Video layer, plane 2 (V)
1068c2ecf20Sopenharmony_ci      - description: Graphics layer
1078c2ecf20Sopenharmony_ci  dma-names:
1088c2ecf20Sopenharmony_ci    items:
1098c2ecf20Sopenharmony_ci      - const: vid0
1108c2ecf20Sopenharmony_ci      - const: vid1
1118c2ecf20Sopenharmony_ci      - const: vid2
1128c2ecf20Sopenharmony_ci      - const: gfx0
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci  phys:
1158c2ecf20Sopenharmony_ci    description: PHYs for the DP data lanes
1168c2ecf20Sopenharmony_ci    minItems: 1
1178c2ecf20Sopenharmony_ci    maxItems: 2
1188c2ecf20Sopenharmony_ci  phy-names:
1198c2ecf20Sopenharmony_ci    minItems: 1
1208c2ecf20Sopenharmony_ci    maxItems: 2
1218c2ecf20Sopenharmony_ci    items:
1228c2ecf20Sopenharmony_ci      - const: dp-phy0
1238c2ecf20Sopenharmony_ci      - const: dp-phy1
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_cirequired:
1268c2ecf20Sopenharmony_ci  - compatible
1278c2ecf20Sopenharmony_ci  - reg
1288c2ecf20Sopenharmony_ci  - reg-names
1298c2ecf20Sopenharmony_ci  - interrupts
1308c2ecf20Sopenharmony_ci  - clocks
1318c2ecf20Sopenharmony_ci  - clock-names
1328c2ecf20Sopenharmony_ci  - power-domains
1338c2ecf20Sopenharmony_ci  - resets
1348c2ecf20Sopenharmony_ci  - dmas
1358c2ecf20Sopenharmony_ci  - dma-names
1368c2ecf20Sopenharmony_ci  - phys
1378c2ecf20Sopenharmony_ci  - phy-names
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ciadditionalProperties: false
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ciexamples:
1428c2ecf20Sopenharmony_ci  - |
1438c2ecf20Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
1448c2ecf20Sopenharmony_ci    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ci    display@fd4a0000 {
1478c2ecf20Sopenharmony_ci        compatible = "xlnx,zynqmp-dpsub-1.7";
1488c2ecf20Sopenharmony_ci        reg = <0xfd4a0000 0x1000>,
1498c2ecf20Sopenharmony_ci              <0xfd4aa000 0x1000>,
1508c2ecf20Sopenharmony_ci              <0xfd4ab000 0x1000>,
1518c2ecf20Sopenharmony_ci              <0xfd4ac000 0x1000>;
1528c2ecf20Sopenharmony_ci        reg-names = "dp", "blend", "av_buf", "aud";
1538c2ecf20Sopenharmony_ci        interrupts = <0 119 4>;
1548c2ecf20Sopenharmony_ci        interrupt-parent = <&gic>;
1558c2ecf20Sopenharmony_ci
1568c2ecf20Sopenharmony_ci        clock-names = "dp_apb_clk", "dp_aud_clk", "dp_live_video_in_clk";
1578c2ecf20Sopenharmony_ci        clocks = <&dp_aclk>, <&clkc 17>, <&si570_1>;
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci        power-domains = <&pd_dp>;
1608c2ecf20Sopenharmony_ci        resets = <&reset ZYNQMP_RESET_DP>;
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ci        dma-names = "vid0", "vid1", "vid2", "gfx0";
1638c2ecf20Sopenharmony_ci        dmas = <&xlnx_dpdma 0>,
1648c2ecf20Sopenharmony_ci               <&xlnx_dpdma 1>,
1658c2ecf20Sopenharmony_ci               <&xlnx_dpdma 2>,
1668c2ecf20Sopenharmony_ci               <&xlnx_dpdma 3>;
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ci        phys = <&psgtr 1 PHY_TYPE_DP 0 3 27000000>,
1698c2ecf20Sopenharmony_ci               <&psgtr 0 PHY_TYPE_DP 1 3 27000000>;
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci        phy-names = "dp-phy0", "dp-phy1";
1728c2ecf20Sopenharmony_ci    };
1738c2ecf20Sopenharmony_ci
1748c2ecf20Sopenharmony_ci...
175