Lines Matching refs:layer

96  * @ZYNQMP_DISP_LAYER_VID: Video layer
97 * @ZYNQMP_DISP_LAYER_GFX: Graphics layer
115 * struct zynqmp_disp_layer_dma - DMA channel for one data plane of a layer
127 * struct zynqmp_disp_layer_info - Static layer information
139 * struct zynqmp_disp_layer - Display layer (DRM plane)
143 * @info: Static layer information
257 /* List of video layer formats */
362 /* List of graphics layer formats */
439 * zynqmp_disp_avbuf_set_format - Set the input format for a layer
441 * @layer: The layer ID
444 * Set the video buffer manager format for @layer to @fmt.
447 enum zynqmp_disp_layer_id layer,
454 val &= layer == ZYNQMP_DISP_LAYER_VID
461 unsigned int reg = layer == ZYNQMP_DISP_LAYER_VID
575 * zynqmp_disp_avbuf_enable_video - Enable a video layer
577 * @layer: The layer ID
578 * @mode: Operating mode of layer
580 * Enable the video/graphics buffer for @layer.
583 enum zynqmp_disp_layer_id layer,
589 if (layer == ZYNQMP_DISP_LAYER_VID) {
607 * zynqmp_disp_avbuf_disable_video - Disable a video layer
609 * @layer: The layer ID
611 * Disable the video/graphics buffer for @layer.
614 enum zynqmp_disp_layer_id layer)
619 if (layer == ZYNQMP_DISP_LAYER_VID) {
780 * zynqmp_disp_blend_layer_set_csc - Configure colorspace conversion for layer
782 * @layer: The layer
786 * Configure the input colorspace conversion matrix and offsets for the @layer.
791 struct zynqmp_disp_layer *layer,
799 if (layer->disp_fmt->swap) {
800 if (layer->drm_fmt->is_yuv) {
811 if (layer->id == ZYNQMP_DISP_LAYER_VID)
822 if (layer->id == ZYNQMP_DISP_LAYER_VID)
832 * zynqmp_disp_blend_layer_enable - Enable a layer
834 * @layer: The layer
837 struct zynqmp_disp_layer *layer)
843 val = (layer->drm_fmt->is_yuv ?
845 (layer->drm_fmt->hsub > 1 ?
849 ZYNQMP_DISP_V_BLEND_LAYER_CONTROL(layer->id),
852 if (layer->drm_fmt->is_yuv) {
860 zynqmp_disp_blend_layer_set_csc(blend, layer, coeffs, offsets);
864 * zynqmp_disp_blend_layer_disable - Disable a layer
866 * @layer: The layer
869 struct zynqmp_disp_layer *layer)
872 ZYNQMP_DISP_V_BLEND_LAYER_CONTROL(layer->id),
875 zynqmp_disp_blend_layer_set_csc(blend, layer, csc_zero_matrix,
997 * @layer: The layer
1001 * format @drm_fmt for the @layer, and return a pointer to the format
1007 zynqmp_disp_layer_find_format(struct zynqmp_disp_layer *layer,
1012 for (i = 0; i < layer->info->num_formats; i++) {
1013 if (layer->info->formats[i].drm_fmt == drm_fmt)
1014 return &layer->info->formats[i];
1021 * zynqmp_disp_layer_enable - Enable a layer
1022 * @layer: The layer
1024 * Enable the @layer in the audio/video buffer manager and the blender. DMA
1027 static void zynqmp_disp_layer_enable(struct zynqmp_disp_layer *layer)
1029 zynqmp_disp_avbuf_enable_video(&layer->disp->avbuf, layer->id,
1031 zynqmp_disp_blend_layer_enable(&layer->disp->blend, layer);
1033 layer->mode = ZYNQMP_DISP_LAYER_NONLIVE;
1037 * zynqmp_disp_layer_disable - Disable the layer
1038 * @layer: The layer
1040 * Disable the layer by stopping its DMA channels and disabling it in the
1043 static void zynqmp_disp_layer_disable(struct zynqmp_disp_layer *layer)
1047 for (i = 0; i < layer->drm_fmt->num_planes; i++)
1048 dmaengine_terminate_sync(layer->dmas[i].chan);
1050 zynqmp_disp_avbuf_disable_video(&layer->disp->avbuf, layer->id);
1051 zynqmp_disp_blend_layer_disable(&layer->disp->blend, layer);
1055 * zynqmp_disp_layer_set_format - Set the layer format
1056 * @layer: The layer
1059 * Set the format for @layer based on @state->fb->format. The layer must be
1062 static void zynqmp_disp_layer_set_format(struct zynqmp_disp_layer *layer,
1068 layer->disp_fmt = zynqmp_disp_layer_find_format(layer, info->format);
1069 layer->drm_fmt = info;
1071 zynqmp_disp_avbuf_set_format(&layer->disp->avbuf, layer->id,
1072 layer->disp_fmt);
1079 struct zynqmp_disp_layer_dma *dma = &layer->dmas[i];
1090 * zynqmp_disp_layer_update - Update the layer framebuffer
1091 * @layer: The layer
1094 * Update the framebuffer for the layer by issuing a new DMA engine transaction
1099 static int zynqmp_disp_layer_update(struct zynqmp_disp_layer *layer,
1102 const struct drm_format_info *info = layer->drm_fmt;
1105 for (i = 0; i < layer->drm_fmt->num_planes; i++) {
1108 struct zynqmp_disp_layer_dma *dma = &layer->dmas[i];
1128 dev_err(layer->disp->dev,
1168 struct zynqmp_disp_layer *layer = plane_to_layer(plane);
1173 zynqmp_disp_layer_disable(layer);
1180 struct zynqmp_disp_layer *layer = plane_to_layer(plane);
1194 zynqmp_disp_layer_disable(layer);
1196 zynqmp_disp_layer_set_format(layer, plane->state);
1199 zynqmp_disp_layer_update(layer, plane->state);
1203 zynqmp_disp_layer_enable(layer);
1227 struct zynqmp_disp_layer *layer = &disp->layers[i];
1232 layer->info->num_formats,
1237 for (j = 0; j < layer->info->num_formats; ++j)
1238 drm_formats[j] = layer->info->formats[j].drm_fmt;
1240 /* Graphics layer is primary, and video layer is overlay. */
1243 ret = drm_universal_plane_init(disp->drm, &layer->plane, 0,
1246 layer->info->num_formats,
1251 drm_plane_helper_add(&layer->plane,
1259 * zynqmp_disp_layer_release_dma - Release DMA channels for a layer
1261 * @layer: The layer
1263 * Release the DMA channels associated with @layer.
1266 struct zynqmp_disp_layer *layer)
1270 if (!layer->info)
1273 for (i = 0; i < layer->info->num_channels; i++) {
1274 struct zynqmp_disp_layer_dma *dma = &layer->dmas[i];
1298 * zynqmp_disp_layer_request_dma - Request DMA channels for a layer
1300 * @layer: The layer
1302 * Request all DMA engine channels needed by @layer.
1307 struct zynqmp_disp_layer *layer)
1313 for (i = 0; i < layer->info->num_channels; i++) {
1314 struct zynqmp_disp_layer_dma *dma = &layer->dmas[i];
1318 "%s%u", dma_names[layer->id], i);
1357 struct zynqmp_disp_layer *layer = &disp->layers[i];
1359 layer->id = i;
1360 layer->disp = disp;
1361 layer->info = &layer_info[i];
1363 ret = zynqmp_disp_layer_request_dma(disp, layer);
1628 struct zynqmp_disp_layer *layer;
1680 layer = &disp->layers[ZYNQMP_DISP_LAYER_VID];
1681 dpsub->dma_align = 1 << layer->dmas[0].chan->device->copy_align;