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