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@xxxxxx> > >>>> Cc: Rob Clark <robdclark@xxxxxxxxx> > >>>> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > >>>> > >>>> -- > >>>> > >>>> 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@xxxxxxxxx> > > 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@xxxxxxxx> > 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@xxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > --- > 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel