[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