public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Thomas Wood <thomas.wood@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	Sonika Jindal <sonika.jindal@intel.com>
Subject: Re: [PATCH v2] drm: fix plane rotation when restoring fbdev configuration
Date: Wed, 20 Aug 2014 17:22:22 +0200	[thread overview]
Message-ID: <20140820152222.GA12373@bremse> (raw)
In-Reply-To: <1408542300-12422-1-git-send-email-thomas.wood@intel.com>

On Wed, Aug 20, 2014 at 02:45:00PM +0100, Thomas Wood wrote:
> Make sure plane rotation is reset correctly when restoring the fbdev
> configuration by using drm_mode_plane_set_obj_prop which calls the
> driver's set_property callback.
> 
> The rotation reset feature was introduced in commit 9783de2 (drm:
> Resetting rotation property) and the callback issue was originally
> addressed in a previous version of the patch, but the fix was not
> present in the final version.
> 
> v2: Fix documentation warning
>     Add some more details to the commit message (Daniel Vetter)
> 
> Testcase: igt/kms_rotation_crc
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82236
> Cc: Sonika Jindal <sonika.jindal@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Dave Airlie <airlied@gmail.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Signed-off-by: Thomas Wood <thomas.wood@intel.com>

Queued for -next, thanks for the patch.

Aside: If I've picked up a patch already, I prefer just the fixup diff to
squash in. I've kicked out your v1, but if I've frozen down my queue as
drm-intel-next already (or done a merge or something else that freezes
history) I need the fixup. And squashing in the fixup is not more work
than doing the rebase to kick out the old version anyway. And the fixup is
easier to review.

Thanks, Daniel
> ---
>  drivers/gpu/drm/drm_crtc.c      | 25 ++++++++++++++++++++-----
>  drivers/gpu/drm/drm_fb_helper.c |  6 +++---
>  include/drm/drm_crtc.h          |  3 +++
>  3 files changed, 26 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index f09b752..7d7c1fd 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -4175,12 +4175,25 @@ static int drm_mode_crtc_set_obj_prop(struct drm_mode_object *obj,
>  	return ret;
>  }
>  
> -static int drm_mode_plane_set_obj_prop(struct drm_mode_object *obj,
> -				      struct drm_property *property,
> -				      uint64_t value)
> +/**
> + * drm_mode_plane_set_obj_prop - set the value of a property
> + * @plane: drm plane object to set property value for
> + * @property: property to set
> + * @value: value the property should be set to
> + *
> + * This functions sets a given property on a given plane object. This function
> + * calls the driver's ->set_property callback and changes the software state of
> + * the property if the callback succeeds.
> + *
> + * Returns:
> + * Zero on success, error code on failure.
> + */
> +int drm_mode_plane_set_obj_prop(struct drm_plane *plane,
> +				struct drm_property *property,
> +				uint64_t value)
>  {
>  	int ret = -EINVAL;
> -	struct drm_plane *plane = obj_to_plane(obj);
> +	struct drm_mode_object *obj = &plane->base;
>  
>  	if (plane->funcs->set_property)
>  		ret = plane->funcs->set_property(plane, property, value);
> @@ -4189,6 +4202,7 @@ static int drm_mode_plane_set_obj_prop(struct drm_mode_object *obj,
>  
>  	return ret;
>  }
> +EXPORT_SYMBOL(drm_mode_plane_set_obj_prop);
>  
>  /**
>   * drm_mode_getproperty_ioctl - get the current value of a object's property
> @@ -4327,7 +4341,8 @@ int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data,
>  		ret = drm_mode_crtc_set_obj_prop(arg_obj, property, arg->value);
>  		break;
>  	case DRM_MODE_OBJECT_PLANE:
> -		ret = drm_mode_plane_set_obj_prop(arg_obj, property, arg->value);
> +		ret = drm_mode_plane_set_obj_prop(obj_to_plane(arg_obj),
> +						  property, arg->value);
>  		break;
>  	}
>  
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 63d7b8e..0c0c39b 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -296,9 +296,9 @@ static bool restore_fbdev_mode(struct drm_fb_helper *fb_helper)
>  			drm_plane_force_disable(plane);
>  
>  		if (dev->mode_config.rotation_property) {
> -			drm_object_property_set_value(&plane->base,
> -					dev->mode_config.rotation_property,
> -					BIT(DRM_ROTATE_0));
> +			drm_mode_plane_set_obj_prop(plane,
> +						    dev->mode_config.rotation_property,
> +						    BIT(DRM_ROTATE_0));
>  		}
>  	}
>  
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index 0375d75..31344bf 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -1127,6 +1127,9 @@ extern int drm_mode_obj_get_properties_ioctl(struct drm_device *dev, void *data,
>  					     struct drm_file *file_priv);
>  extern int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data,
>  					   struct drm_file *file_priv);
> +extern int drm_mode_plane_set_obj_prop(struct drm_plane *plane,
> +				       struct drm_property *property,
> +				       uint64_t value);
>  
>  extern void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth,
>  				 int *bpp);
> -- 
> 1.9.3
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

      reply	other threads:[~2014-08-20 15:22 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-14 15:33 [PATCH] drm: fix plane rotation when restoring fbdev configuration Thomas Wood
2014-08-14 16:02 ` Daniel Vetter
2014-08-15  9:42   ` Thomas Wood
2014-08-15  9:48     ` Thomas Wood
2014-08-15 10:22       ` Daniel Vetter
2014-08-15 15:34         ` [Intel-gfx] " Thomas Wood
2014-08-20 13:45           ` [PATCH v2] " Thomas Wood
2014-08-20 15:22             ` Daniel Vetter [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140820152222.GA12373@bremse \
    --to=daniel@ffwll.ch \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=sonika.jindal@intel.com \
    --cc=thomas.wood@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox