[PATCH] drm/omap: move rotation property to drm core mode_config

Daniel Vetter daniel at ffwll.ch
Tue Sep 30 06:11:25 PDT 2014


On Tue, Sep 30, 2014 at 03:15:07PM +0300, Tomi Valkeinen wrote:
> On 30/09/14 14:52, Daniel Vetter wrote:
> > On Tue, Sep 30, 2014 at 01:49:20PM +0200, Daniel Vetter wrote:
> >> On Tue, Sep 30, 2014 at 02:42:01PM +0300, Tomi Valkeinen wrote:
> >>> On 06/08/14 11:40, Daniel Vetter wrote:
> >>>> This allows us to ditch the driver-private lastclose logic.
> >>>>
> >>>> Cc: Tomi Valkeinen <tomi.valkeinen at ti.com>
> >>>> Cc: Rob Clark <robdclark at gmail.com>
> >>>> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> >>>>
> >>>> --
> >>>>
> >>>> Untested and atm only applies on top of drm-intel-nightly.
> >>>
> >>> I could give this a try if you point me to a git tree with the patch.
> >>
> >> I should apply on top of drm-next nowadays, prerequisites that went in
> >> through drm-intel are all merged now. I guess you'll take care of this one
> >> now?
> 
> It didn't compile, but it was trivial to fix. And yes, I can pick it to my
> omapdrm patches, which I guess will be delayed until 3.19.
> 
> > btw if this works you can drop the entire if (rotation_property) hunk from
> > lastclose, since the fbdev helper now takes care of this itself:
> > 
> > commit 3a5f87c286515c54ff5c52c3e64d0c522b7570c0
> > Author: Thomas Wood <thomas.wood at intel.com>
> > Date:   Wed Aug 20 14:45:00 2014 +0100
> > 
> >     drm: fix plane rotation when restoring fbdev configuration
> 
> I updated the patch, with the compile fix and removal of the lastclose stuff.
> Seems to work fine with a quick test: I exit X (after fiddling with xrandr
> rotation in there), and I see the rotation property restored to the default
> value.

Yeah, lgtm. Thanks for taking care of this.
-Daniel

> 
>  Tomi
> 
> From afb37e165010fc5f3db82efdec9b883fb578deac Mon Sep 17 00:00:00 2001
> From: Daniel Vetter <daniel.vetter at ffwll.ch>
> Date: Wed, 6 Aug 2014 10:40:24 +0200
> Subject: [PATCH] drm/omap: move rotation property to drm core mode_config
> 
> Move rotation property to drm core mode_config. This allows us to ditch
> the driver-private lastclose logic.
> 
> Cc: Rob Clark <robdclark at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
> ---
>  drivers/gpu/drm/omapdrm/omap_crtc.c  |  4 ++--
>  drivers/gpu/drm/omapdrm/omap_drv.c   | 20 --------------------
>  drivers/gpu/drm/omapdrm/omap_drv.h   |  1 -
>  drivers/gpu/drm/omapdrm/omap_plane.c |  7 ++++---
>  4 files changed, 6 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
> index 2d28dc337cfb..1240fa61b397 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -385,9 +385,9 @@ static int omap_crtc_set_property(struct drm_crtc *crtc,
>  		struct drm_property *property, uint64_t val)
>  {
>  	struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
> -	struct omap_drm_private *priv = crtc->dev->dev_private;
> +	struct drm_device *dev = crtc->dev;
>  
> -	if (property == priv->rotation_prop) {
> +	if (property == dev->mode_config.rotation_property) {
>  		crtc->invert_dimensions =
>  				!!(val & ((1LL << DRM_ROTATE_90) | (1LL << DRM_ROTATE_270)));
>  	}
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 862ba03c236c..282f5ec4f1a2 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -560,8 +560,6 @@ static int dev_open(struct drm_device *dev, struct drm_file *file)
>   */
>  static void dev_lastclose(struct drm_device *dev)
>  {
> -	int i;
> -
>  	/* we don't support vga-switcheroo.. so just make sure the fbdev
>  	 * mode is active
>  	 */
> @@ -570,24 +568,6 @@ static void dev_lastclose(struct drm_device *dev)
>  
>  	DBG("lastclose: dev=%p", dev);
>  
> -	if (priv->rotation_prop) {
> -		/* need to restore default rotation state.. not sure
> -		 * if there is a cleaner way to restore properties to
> -		 * default state?  Maybe a flag that properties should
> -		 * automatically be restored to default state on
> -		 * lastclose?
> -		 */
> -		for (i = 0; i < priv->num_crtcs; i++) {
> -			drm_object_property_set_value(&priv->crtcs[i]->base,
> -					priv->rotation_prop, 0);
> -		}
> -
> -		for (i = 0; i < priv->num_planes; i++) {
> -			drm_object_property_set_value(&priv->planes[i]->base,
> -					priv->rotation_prop, 0);
> -		}
> -	}
> -
>  	ret = drm_fb_helper_restore_fbdev_mode_unlocked(priv->fbdev);
>  	if (ret)
>  		DBG("failed to restore crtc mode");
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
> index 60e47b33c801..aa596504e662 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.h
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.h
> @@ -111,7 +111,6 @@ struct omap_drm_private {
>  	bool has_dmm;
>  
>  	/* properties: */
> -	struct drm_property *rotation_prop;
>  	struct drm_property *zorder_prop;
>  
>  	/* irq handling: */
> diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
> index 891a4dc608af..3b5fad2a359c 100644
> --- a/drivers/gpu/drm/omapdrm/omap_plane.c
> +++ b/drivers/gpu/drm/omapdrm/omap_plane.c
> @@ -306,7 +306,7 @@ void omap_plane_install_properties(struct drm_plane *plane,
>  	struct drm_property *prop;
>  
>  	if (priv->has_dmm) {
> -		prop = priv->rotation_prop;
> +		prop = dev->mode_config.rotation_property;
>  		if (!prop) {
>  			prop = drm_mode_create_rotation_property(dev,
>  								 BIT(DRM_ROTATE_0) |
> @@ -317,7 +317,7 @@ void omap_plane_install_properties(struct drm_plane *plane,
>  								 BIT(DRM_REFLECT_Y));
>  			if (prop == NULL)
>  				return;
> -			priv->rotation_prop = prop;
> +			dev->mode_config.rotation_property = prop;
>  		}
>  		drm_object_attach_property(obj, prop, 0);
>  	}
> @@ -337,9 +337,10 @@ int omap_plane_set_property(struct drm_plane *plane,
>  {
>  	struct omap_plane *omap_plane = to_omap_plane(plane);
>  	struct omap_drm_private *priv = plane->dev->dev_private;
> +	struct drm_device *dev = omap_plane->base.dev;
>  	int ret = -EINVAL;
>  
> -	if (property == priv->rotation_prop) {
> +	if (property == dev->mode_config.rotation_property) {
>  		DBG("%s: rotation: %02x", omap_plane->name, (uint32_t)val);
>  		omap_plane->win.rotation = val;
>  		ret = apply(plane);
> -- 
> 2.1.1
> 
> 
> 



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


More information about the dri-devel mailing list