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