mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 03:11:11 -04:00
drm/imx: ipuv3-plane: support underlay plane
The IPUv3 overlay plane may be placed over or under the primary plane. Set the zpos of the primary to an immutable position of 1 to have the possibility to place the other plane underneath it. Set the zpos of other planes (the overlay plane) to a mutable value between 0 (the lowest possible value of a zpos) and directly above the primary plane with the latter being the default. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Link: https://patch.msgid.link/20260219-drm-imx-underlay-plane-v2-2-26ef829c5483@pengutronix.de
This commit is contained in:
committed by
Philipp Zabel
parent
a872e90e36
commit
ecbcceea47
@@ -890,7 +890,7 @@ struct ipu_plane *ipu_plane_init(struct drm_device *dev, struct ipu_soc *ipu,
|
||||
{
|
||||
struct ipu_plane *ipu_plane;
|
||||
const uint64_t *modifiers = ipu_format_modifiers;
|
||||
unsigned int zpos = (type == DRM_PLANE_TYPE_PRIMARY) ? 0 : 1;
|
||||
unsigned int primary_zpos = 1;
|
||||
unsigned int format_count;
|
||||
const uint32_t *formats;
|
||||
int ret;
|
||||
@@ -923,17 +923,16 @@ struct ipu_plane *ipu_plane_init(struct drm_device *dev, struct ipu_soc *ipu,
|
||||
ipu_plane->dma = dma;
|
||||
ipu_plane->dp_flow = dp;
|
||||
|
||||
if (type == DRM_PLANE_TYPE_PRIMARY)
|
||||
if (type == DRM_PLANE_TYPE_PRIMARY) {
|
||||
drm_plane_helper_add(&ipu_plane->base, &ipu_primary_plane_helper_funcs);
|
||||
else
|
||||
drm_plane_helper_add(&ipu_plane->base, &ipu_plane_helper_funcs);
|
||||
|
||||
if (dp == IPU_DP_FLOW_SYNC_BG || dp == IPU_DP_FLOW_SYNC_FG)
|
||||
ret = drm_plane_create_zpos_property(&ipu_plane->base, zpos, 0,
|
||||
1);
|
||||
else
|
||||
ret = drm_plane_create_zpos_immutable_property(&ipu_plane->base,
|
||||
0);
|
||||
primary_zpos);
|
||||
} else {
|
||||
drm_plane_helper_add(&ipu_plane->base, &ipu_plane_helper_funcs);
|
||||
ret = drm_plane_create_zpos_property(&ipu_plane->base,
|
||||
primary_zpos + 1, 0,
|
||||
primary_zpos + 1);
|
||||
}
|
||||
if (ret)
|
||||
return ERR_PTR(ret);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user