1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 # Copyright 2019 Bootlin
5 $id: http://devicetree.org/schemas/display/xylon,logicvc-display.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
8 title: Xylon LogiCVC display controller
11 - Paul Kocialkowski <paul.kocialkowski@bootlin.com>
14 The Xylon LogiCVC is a display controller that supports multiple layers.
15 It is usually implemented as programmable logic and was optimized for use
16 with Xilinx Zynq-7000 SoCs and Xilinx FPGAs.
18 Because the controller is intended for use in a FPGA, most of the
19 configuration of the controller takes place at logic configuration bitstream
20 synthesis time. As a result, many of the device-tree bindings are meant to
21 reflect the synthesis configuration and must not be configured differently.
22 Matching synthesis parameters are provided when applicable.
24 Layers are declared in the "layers" sub-node and have dedicated configuration.
25 In version 3 of the controller, each layer has fixed memory offset and address
26 starting from the video memory base address for its framebuffer. In version 4,
27 framebuffers are configured with a direct memory address instead.
32 - xylon,logicvc-3.02.a-display
33 - xylon,logicvc-4.01.a-display
45 # vclk is required and must be provided as first item.
47 # Other clocks are optional and can be provided in any order.
67 xylon,display-interface:
69 # Parallel RGB interface (C_DISPLAY_INTERFACE == 0)
71 # ITU-T BR656 interface (C_DISPLAY_INTERFACE == 1)
73 # 4-bit LVDS interface (C_DISPLAY_INTERFACE == 2)
75 # 3-bit LVDS interface (C_DISPLAY_INTERFACE == 4)
77 # DVI interface (C_DISPLAY_INTERFACE == 5)
79 description: Display output interface (C_DISPLAY_INTERFACE).
81 xylon,display-colorspace:
83 # RGB colorspace (C_DISPLAY_COLOR_SPACE == 0)
85 # YUV 4:2:2 colorspace (C_DISPLAY_COLOR_SPACE == 1)
87 # YUV 4:4:4 colorspace (C_DISPLAY_COLOR_SPACE == 2)
89 description: Display output colorspace (C_DISPLAY_COLOR_SPACE).
92 $ref: /schemas/types.yaml#/definitions/uint32
93 description: Display output depth (C_PIXEL_DATA_WIDTH).
96 $ref: /schemas/types.yaml#/definitions/uint32
97 description: Fixed number of pixels in a framebuffer row (C_ROW_STRIDE).
100 $ref: /schemas/types.yaml#/definitions/flag
101 description: Dithering module is enabled (C_XCOLOR)
103 xylon,background-layer:
104 $ref: /schemas/types.yaml#/definitions/flag
106 The last layer is used to display a black background (C_USE_BACKGROUND).
107 The layer must still be registered.
109 xylon,layers-configurable:
110 $ref: /schemas/types.yaml#/definitions/flag
112 Configuration of layers' size, position and offset is enabled
113 (C_USE_SIZE_POSITION).
134 $ref: /schemas/types.yaml#/definitions/uint32
135 description: Layer depth (C_LAYER_X_DATA_WIDTH).
137 xylon,layer-colorspace:
139 # RGB colorspace (C_LAYER_X_TYPE == 0)
141 # YUV packed colorspace (C_LAYER_X_TYPE == 0)
143 description: Layer colorspace (C_LAYER_X_TYPE).
145 xylon,layer-alpha-mode:
147 # Alpha is configured layer-wide (C_LAYER_X_ALPHA_MODE == 0)
149 # Alpha is configured per-pixel (C_LAYER_X_ALPHA_MODE == 1)
151 description: Alpha mode for the layer (C_LAYER_X_ALPHA_MODE).
153 xylon,layer-base-offset:
154 $ref: /schemas/types.yaml#/definitions/uint32
156 Offset in number of lines (C_LAYER_X_OFFSET) starting from the
157 video RAM base (C_VMEM_BASEADDR), only for version 3.
159 xylon,layer-buffer-offset:
160 $ref: /schemas/types.yaml#/definitions/uint32
162 Offset in number of lines (C_BUFFER_*_OFFSET) starting from the
163 layer base offset for the second buffer used in double-buffering.
166 $ref: /schemas/types.yaml#/definitions/flag
168 Layer should be registered as a primary plane (exactly one is
171 additionalProperties: false
176 - xylon,layer-colorspace
177 - xylon,layer-alpha-mode
184 additionalProperties: false
187 The description of the display controller layers, containing layer
188 sub-nodes that each describe a registered layer.
191 $ref: /schemas/graph.yaml#/properties/port
193 Video output port, typically connected to a panel or bridge.
195 additionalProperties: false
203 - xylon,display-interface
204 - xylon,display-colorspace
205 - xylon,display-depth
212 #include <dt-bindings/interrupt-controller/irq.h>
214 logicvc: logicvc@43c00000 {
215 compatible = "xylon,logicvc-3.02.a", "syscon", "simple-mfd";
216 reg = <0x43c00000 0x6000>;
218 #address-cells = <1>;
221 logicvc_display: display@0 {
222 compatible = "xylon,logicvc-3.02.a-display";
225 memory-region = <&logicvc_cma>;
227 clocks = <&logicvc_vclk 0>, <&logicvc_lvdsclk 0>;
228 clock-names = "vclk", "lvdsclk";
230 interrupt-parent = <&intc>;
231 interrupts = <0 34 IRQ_TYPE_LEVEL_HIGH>;
233 xylon,display-interface = "lvds-4bits";
234 xylon,display-colorspace = "rgb";
235 xylon,display-depth = <16>;
236 xylon,row-stride = <1024>;
238 xylon,layers-configurable;
241 #address-cells = <1>;
246 xylon,layer-depth = <16>;
247 xylon,layer-colorspace = "rgb";
248 xylon,layer-alpha-mode = "layer";
249 xylon,layer-base-offset = <0>;
250 xylon,layer-buffer-offset = <480>;
256 xylon,layer-depth = <16>;
257 xylon,layer-colorspace = "rgb";
258 xylon,layer-alpha-mode = "layer";
259 xylon,layer-base-offset = <2400>;
260 xylon,layer-buffer-offset = <480>;
265 xylon,layer-depth = <16>;
266 xylon,layer-colorspace = "rgb";
267 xylon,layer-alpha-mode = "layer";
268 xylon,layer-base-offset = <960>;
269 xylon,layer-buffer-offset = <480>;
274 xylon,layer-depth = <16>;
275 xylon,layer-colorspace = "rgb";
276 xylon,layer-alpha-mode = "layer";
277 xylon,layer-base-offset = <480>;
278 xylon,layer-buffer-offset = <480>;
283 xylon,layer-depth = <16>;
284 xylon,layer-colorspace = "rgb";
285 xylon,layer-alpha-mode = "layer";
286 xylon,layer-base-offset = <8192>;
287 xylon,layer-buffer-offset = <480>;
292 #address-cells = <1>;
295 logicvc_output: endpoint@0 {
297 remote-endpoint = <&panel_input>;