[PATCH 4/7] drm/exynos: make zpos property immutable

Inki Dae inki.dae at samsung.com
Wed Mar 11 08:10:37 PDT 2015


On 2015년 02월 19일 22:22, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan at collabora.co.uk>
> 
> We already set each plane zpos at init, after that changes to zpos are
> not expected. This patch turns zpos into a read-only property so now it is
> impossible to set zpos.
> 
> Signed-off-by: Gustavo Padovan <gustavo.padovan at collabora.co.uk>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_plane.c | 21 ++-------------------
>  1 file changed, 2 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.c b/drivers/gpu/drm/exynos/exynos_drm_plane.c
> index 504bd6e..2fbac9b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_plane.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_plane.c
> @@ -184,27 +184,10 @@ static void exynos_plane_destroy(struct drm_plane *plane)
>  	drm_plane_cleanup(plane);
>  }
>  
> -static int exynos_plane_set_property(struct drm_plane *plane,
> -				     struct drm_property *property,
> -				     uint64_t val)
> -{
> -	struct drm_device *dev = plane->dev;
> -	struct exynos_drm_plane *exynos_plane = to_exynos_plane(plane);
> -	struct exynos_drm_private *dev_priv = dev->dev_private;
> -
> -	if (property == dev_priv->plane_zpos_property) {
> -		exynos_plane->zpos = val;
> -		return 0;
> -	}
> -
> -	return -EINVAL;
> -}
> -
>  static struct drm_plane_funcs exynos_plane_funcs = {
>  	.update_plane	= exynos_update_plane,
>  	.disable_plane	= exynos_disable_plane,
>  	.destroy	= exynos_plane_destroy,
> -	.set_property	= exynos_plane_set_property,

It's a good idea for a hardware overlay to a plane object isn't changed
by user-space. However, this patch would make the compatibility of the
existing application - using set_property ioctl to change hardware
overlay to particular plane - to be broken because the set_property
ioctl request will always be failed without the set_property callback.

So how about leaving warning message 'the hardware overlay cannot be
changed to another anymore' when the set_property ioctl is requested by
user-space, and returning just 0?

Thanks,
Inki Dae

>  };
>  
>  static void exynos_plane_attach_zpos_property(struct drm_plane *plane,
> @@ -216,8 +199,8 @@ static void exynos_plane_attach_zpos_property(struct drm_plane *plane,
>  
>  	prop = dev_priv->plane_zpos_property;
>  	if (!prop) {
> -		prop = drm_property_create_range(dev, 0, "zpos", 0,
> -						 MAX_PLANE - 1);
> +		prop = drm_property_create_range(dev, DRM_MODE_PROP_IMMUTABLE,
> +						 "zpos", 0, MAX_PLANE - 1);
>  		if (!prop)
>  			return;
>  
> 



More information about the dri-devel mailing list