OSDN Git Service

staging: drm/omap: invert dimensions on crtc when rotated
authorRob Clark <rob@ti.com>
Tue, 4 Sep 2012 16:36:20 +0000 (11:36 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Sep 2012 19:18:10 +0000 (12:18 -0700)
If rotated 90 or 270, we need to invert the dimensions used by drm
core for calculating if the dimensions of an attached fb are correct.

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/omapdrm/omap_crtc.c

index 98a10bc..dade3de 100644 (file)
@@ -195,6 +195,13 @@ 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;
+
+       if (property == priv->rotation_prop) {
+               crtc->invert_dimensions =
+                               !!(val & ((1LL << DRM_ROTATE_90) | (1LL << DRM_ROTATE_270)));
+       }
+
        return omap_plane_set_property(omap_crtc->plane, property, val);
 }