# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/xlnx/xlnx,zynqmp-dpsub.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Xilinx ZynqMP DisplayPort Subsystem

description: |
  The DisplayPort subsystem of Xilinx ZynqMP (Zynq UltraScale+ MPSoC)
  implements the display and audio pipelines based on the DisplayPort v1.2
  standard. The subsystem includes multiple functional blocks as below:

               +------------------------------------------------------------+
  +--------+   | +----------------+     +-----------+                       |
  | DPDMA  | --->|                | --> |   Video   | Video +-------------+ |
  | 4x vid |   | |                |     | Rendering | -+--> |             | |   +------+
  | 2x aud |   | |  Audio/Video   | --> | Pipeline  |  |    | DisplayPort |---> | PHY0 |
  +--------+   | | Buffer Manager |     +-----------+  |    |   Source    | |   +------+
               | |    and STC     |     +-----------+  |    | Controller  | |   +------+
  Live Video --->|                | --> |   Audio   | Audio |             |---> | PHY1 |
               | |                |     |   Mixer   | --+-> |             | |   +------+
  Live Audio --->|                | --> |           |  ||   +-------------+ |
               | +----------------+     +-----------+  ||                   |
               +---------------------------------------||-------------------+
                                                       vv
                                                 Blended Video and
                                                 Mixed Audio to PL

  The Buffer Manager interacts with external interface such as DMA engines or
  live audio/video streams from the programmable logic. The Video Rendering
  Pipeline blends the video and graphics layers and performs colorspace
  conversion. The Audio Mixer mixes the incoming audio streams. The DisplayPort
  Source Controller handles the DisplayPort protocol and connects to external
  PHYs.

  The subsystem supports 2 video and 2 audio streams, and various pixel formats
  and depths up to 4K@30 resolution.

  Please refer to "Zynq UltraScale+ Device Technical Reference Manual"
  (https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf)
  for more details.

maintainers:
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

properties:
  compatible:
    const: xlnx,zynqmp-dpsub-1.7

  reg:
    maxItems: 4
  reg-names:
    items:
      - const: dp
      - const: blend
      - const: av_buf
      - const: aud

  interrupts:
    maxItems: 1

  clocks:
    description:
      The APB clock and at least one video clock are mandatory, the audio clock
      is optional.
    minItems: 2
    maxItems: 4
    items:
      - description: dp_apb_clk is the APB clock
      - description: dp_aud_clk is the Audio clock
      - description:
          dp_vtc_pixel_clk_in is the non-live video clock (from Processing
          System)
      - description:
          dp_live_video_in_clk is the live video clock (from Programmable
          Logic)
  clock-names:
    oneOf:
      - minItems: 2
        maxItems: 3
        items:
          - const: dp_apb_clk
          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
      - minItems: 3
        maxItems: 4
        items:
          - const: dp_apb_clk
          - const: dp_aud_clk
          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
          - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]

  power-domains:
    maxItems: 1

  resets:
    maxItems: 1

  dmas:
    maxItems: 4
    items:
      - description: Video layer, plane 0 (RGB or luma)
      - description: Video layer, plane 1 (U/V or U)
      - description: Video layer, plane 2 (V)
      - description: Graphics layer
  dma-names:
    items:
      - const: vid0
      - const: vid1
      - const: vid2
      - const: gfx0

  phys:
    description: PHYs for the DP data lanes
    minItems: 1
    maxItems: 2
  phy-names:
    minItems: 1
    maxItems: 2
    items:
      - const: dp-phy0
      - const: dp-phy1

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - clocks
  - clock-names
  - power-domains
  - resets
  - dmas
  - dma-names
  - phys
  - phy-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>

    display@fd4a0000 {
        compatible = "xlnx,zynqmp-dpsub-1.7";
        reg = <0xfd4a0000 0x1000>,
              <0xfd4aa000 0x1000>,
              <0xfd4ab000 0x1000>,
              <0xfd4ac000 0x1000>;
        reg-names = "dp", "blend", "av_buf", "aud";
        interrupts = <0 119 4>;
        interrupt-parent = <&gic>;

        clock-names = "dp_apb_clk", "dp_aud_clk", "dp_live_video_in_clk";
        clocks = <&dp_aclk>, <&clkc 17>, <&si570_1>;

        power-domains = <&pd_dp>;
        resets = <&reset ZYNQMP_RESET_DP>;

        dma-names = "vid0", "vid1", "vid2", "gfx0";
        dmas = <&xlnx_dpdma 0>,
               <&xlnx_dpdma 1>,
               <&xlnx_dpdma 2>,
               <&xlnx_dpdma 3>;

        phys = <&psgtr 1 PHY_TYPE_DP 0 3 27000000>,
               <&psgtr 0 PHY_TYPE_DP 1 3 27000000>;

        phy-names = "dp-phy0", "dp-phy1";
    };

...
