162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/display/xlnx/xlnx,zynqmp-dpsub.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Xilinx ZynqMP DisplayPort Subsystem 862306a36Sopenharmony_ci 962306a36Sopenharmony_cidescription: | 1062306a36Sopenharmony_ci The DisplayPort subsystem of Xilinx ZynqMP (Zynq UltraScale+ MPSoC) 1162306a36Sopenharmony_ci implements the display and audio pipelines based on the DisplayPort v1.2 1262306a36Sopenharmony_ci standard. The subsystem includes multiple functional blocks as below: 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci +------------------------------------------------------------+ 1562306a36Sopenharmony_ci +--------+ | +----------------+ +-----------+ | 1662306a36Sopenharmony_ci | DPDMA | --->| | --> | Video | Video +-------------+ | 1762306a36Sopenharmony_ci | 4x vid | | | | | Rendering | -+--> | | | +------+ 1862306a36Sopenharmony_ci | 2x aud | | | Audio/Video | --> | Pipeline | | | DisplayPort |---> | PHY0 | 1962306a36Sopenharmony_ci +--------+ | | Buffer Manager | +-----------+ | | Source | | +------+ 2062306a36Sopenharmony_ci | | and STC | +-----------+ | | Controller | | +------+ 2162306a36Sopenharmony_ci Live Video --->| | --> | Audio | Audio | |---> | PHY1 | 2262306a36Sopenharmony_ci | | | | Mixer | --+-> | | | +------+ 2362306a36Sopenharmony_ci Live Audio --->| | --> | | || +-------------+ | 2462306a36Sopenharmony_ci | +----------------+ +-----------+ || | 2562306a36Sopenharmony_ci +---------------------------------------||-------------------+ 2662306a36Sopenharmony_ci vv 2762306a36Sopenharmony_ci Blended Video and 2862306a36Sopenharmony_ci Mixed Audio to PL 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci The Buffer Manager interacts with external interface such as DMA engines or 3162306a36Sopenharmony_ci live audio/video streams from the programmable logic. The Video Rendering 3262306a36Sopenharmony_ci Pipeline blends the video and graphics layers and performs colorspace 3362306a36Sopenharmony_ci conversion. The Audio Mixer mixes the incoming audio streams. The DisplayPort 3462306a36Sopenharmony_ci Source Controller handles the DisplayPort protocol and connects to external 3562306a36Sopenharmony_ci PHYs. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci The subsystem supports 2 video and 2 audio streams, and various pixel formats 3862306a36Sopenharmony_ci and depths up to 4K@30 resolution. 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci Please refer to "Zynq UltraScale+ Device Technical Reference Manual" 4162306a36Sopenharmony_ci (https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf) 4262306a36Sopenharmony_ci for more details. 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cimaintainers: 4562306a36Sopenharmony_ci - Laurent Pinchart <laurent.pinchart@ideasonboard.com> 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciproperties: 4862306a36Sopenharmony_ci compatible: 4962306a36Sopenharmony_ci const: xlnx,zynqmp-dpsub-1.7 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci reg: 5262306a36Sopenharmony_ci maxItems: 4 5362306a36Sopenharmony_ci reg-names: 5462306a36Sopenharmony_ci items: 5562306a36Sopenharmony_ci - const: dp 5662306a36Sopenharmony_ci - const: blend 5762306a36Sopenharmony_ci - const: av_buf 5862306a36Sopenharmony_ci - const: aud 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci interrupts: 6162306a36Sopenharmony_ci maxItems: 1 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci clocks: 6462306a36Sopenharmony_ci description: 6562306a36Sopenharmony_ci The APB clock and at least one video clock are mandatory, the audio clock 6662306a36Sopenharmony_ci is optional. 6762306a36Sopenharmony_ci minItems: 2 6862306a36Sopenharmony_ci items: 6962306a36Sopenharmony_ci - description: dp_apb_clk is the APB clock 7062306a36Sopenharmony_ci - description: dp_aud_clk is the Audio clock 7162306a36Sopenharmony_ci - description: 7262306a36Sopenharmony_ci dp_vtc_pixel_clk_in is the non-live video clock (from Processing 7362306a36Sopenharmony_ci System) 7462306a36Sopenharmony_ci - description: 7562306a36Sopenharmony_ci dp_live_video_in_clk is the live video clock (from Programmable 7662306a36Sopenharmony_ci Logic) 7762306a36Sopenharmony_ci clock-names: 7862306a36Sopenharmony_ci oneOf: 7962306a36Sopenharmony_ci - minItems: 2 8062306a36Sopenharmony_ci items: 8162306a36Sopenharmony_ci - const: dp_apb_clk 8262306a36Sopenharmony_ci - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] 8362306a36Sopenharmony_ci - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] 8462306a36Sopenharmony_ci - minItems: 3 8562306a36Sopenharmony_ci items: 8662306a36Sopenharmony_ci - const: dp_apb_clk 8762306a36Sopenharmony_ci - const: dp_aud_clk 8862306a36Sopenharmony_ci - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] 8962306a36Sopenharmony_ci - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci power-domains: 9262306a36Sopenharmony_ci maxItems: 1 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci resets: 9562306a36Sopenharmony_ci maxItems: 1 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci dmas: 9862306a36Sopenharmony_ci items: 9962306a36Sopenharmony_ci - description: Video layer, plane 0 (RGB or luma) 10062306a36Sopenharmony_ci - description: Video layer, plane 1 (U/V or U) 10162306a36Sopenharmony_ci - description: Video layer, plane 2 (V) 10262306a36Sopenharmony_ci - description: Graphics layer 10362306a36Sopenharmony_ci dma-names: 10462306a36Sopenharmony_ci items: 10562306a36Sopenharmony_ci - const: vid0 10662306a36Sopenharmony_ci - const: vid1 10762306a36Sopenharmony_ci - const: vid2 10862306a36Sopenharmony_ci - const: gfx0 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci phys: 11162306a36Sopenharmony_ci description: PHYs for the DP data lanes 11262306a36Sopenharmony_ci minItems: 1 11362306a36Sopenharmony_ci maxItems: 2 11462306a36Sopenharmony_ci phy-names: 11562306a36Sopenharmony_ci minItems: 1 11662306a36Sopenharmony_ci items: 11762306a36Sopenharmony_ci - const: dp-phy0 11862306a36Sopenharmony_ci - const: dp-phy1 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci ports: 12162306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/ports 12262306a36Sopenharmony_ci description: | 12362306a36Sopenharmony_ci Connections to the programmable logic and the DisplayPort PHYs. Each port 12462306a36Sopenharmony_ci shall have a single endpoint. 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci properties: 12762306a36Sopenharmony_ci port@0: 12862306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 12962306a36Sopenharmony_ci description: The live video input from the programmable logic 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci port@1: 13262306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 13362306a36Sopenharmony_ci description: The live graphics input from the programmable logic 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci port@2: 13662306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 13762306a36Sopenharmony_ci description: The live audio input from the programmable logic 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci port@3: 14062306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 14162306a36Sopenharmony_ci description: The blended video output to the programmable logic 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci port@4: 14462306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 14562306a36Sopenharmony_ci description: The mixed audio output to the programmable logic 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci port@5: 14862306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 14962306a36Sopenharmony_ci description: The DisplayPort output 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci required: 15262306a36Sopenharmony_ci - port@0 15362306a36Sopenharmony_ci - port@1 15462306a36Sopenharmony_ci - port@2 15562306a36Sopenharmony_ci - port@3 15662306a36Sopenharmony_ci - port@4 15762306a36Sopenharmony_ci - port@5 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_cirequired: 16062306a36Sopenharmony_ci - compatible 16162306a36Sopenharmony_ci - reg 16262306a36Sopenharmony_ci - reg-names 16362306a36Sopenharmony_ci - interrupts 16462306a36Sopenharmony_ci - clocks 16562306a36Sopenharmony_ci - clock-names 16662306a36Sopenharmony_ci - power-domains 16762306a36Sopenharmony_ci - resets 16862306a36Sopenharmony_ci - dmas 16962306a36Sopenharmony_ci - dma-names 17062306a36Sopenharmony_ci - phys 17162306a36Sopenharmony_ci - phy-names 17262306a36Sopenharmony_ci - ports 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ciadditionalProperties: false 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ciexamples: 17762306a36Sopenharmony_ci - | 17862306a36Sopenharmony_ci #include <dt-bindings/phy/phy.h> 17962306a36Sopenharmony_ci #include <dt-bindings/reset/xlnx-zynqmp-resets.h> 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci display@fd4a0000 { 18262306a36Sopenharmony_ci compatible = "xlnx,zynqmp-dpsub-1.7"; 18362306a36Sopenharmony_ci reg = <0xfd4a0000 0x1000>, 18462306a36Sopenharmony_ci <0xfd4aa000 0x1000>, 18562306a36Sopenharmony_ci <0xfd4ab000 0x1000>, 18662306a36Sopenharmony_ci <0xfd4ac000 0x1000>; 18762306a36Sopenharmony_ci reg-names = "dp", "blend", "av_buf", "aud"; 18862306a36Sopenharmony_ci interrupts = <0 119 4>; 18962306a36Sopenharmony_ci interrupt-parent = <&gic>; 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci clock-names = "dp_apb_clk", "dp_aud_clk", "dp_live_video_in_clk"; 19262306a36Sopenharmony_ci clocks = <&dp_aclk>, <&clkc 17>, <&si570_1>; 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci power-domains = <&pd_dp>; 19562306a36Sopenharmony_ci resets = <&reset ZYNQMP_RESET_DP>; 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci dma-names = "vid0", "vid1", "vid2", "gfx0"; 19862306a36Sopenharmony_ci dmas = <&xlnx_dpdma 0>, 19962306a36Sopenharmony_ci <&xlnx_dpdma 1>, 20062306a36Sopenharmony_ci <&xlnx_dpdma 2>, 20162306a36Sopenharmony_ci <&xlnx_dpdma 3>; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci phys = <&psgtr 1 PHY_TYPE_DP 0 3>, 20462306a36Sopenharmony_ci <&psgtr 0 PHY_TYPE_DP 1 3>; 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci phy-names = "dp-phy0", "dp-phy1"; 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci ports { 20962306a36Sopenharmony_ci #address-cells = <1>; 21062306a36Sopenharmony_ci #size-cells = <0>; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci port@0 { 21362306a36Sopenharmony_ci reg = <0>; 21462306a36Sopenharmony_ci }; 21562306a36Sopenharmony_ci port@1 { 21662306a36Sopenharmony_ci reg = <1>; 21762306a36Sopenharmony_ci }; 21862306a36Sopenharmony_ci port@2 { 21962306a36Sopenharmony_ci reg = <2>; 22062306a36Sopenharmony_ci }; 22162306a36Sopenharmony_ci port@3 { 22262306a36Sopenharmony_ci reg = <3>; 22362306a36Sopenharmony_ci }; 22462306a36Sopenharmony_ci port@4 { 22562306a36Sopenharmony_ci reg = <4>; 22662306a36Sopenharmony_ci }; 22762306a36Sopenharmony_ci port@5 { 22862306a36Sopenharmony_ci reg = <5>; 22962306a36Sopenharmony_ci dpsub_dp_out: endpoint { 23062306a36Sopenharmony_ci remote-endpoint = <&dp_connector>; 23162306a36Sopenharmony_ci }; 23262306a36Sopenharmony_ci }; 23362306a36Sopenharmony_ci }; 23462306a36Sopenharmony_ci }; 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci... 237