From: Rob Clark <r...@ti.com>

For hardware that does not have DMM/TILER, there is no rotation,
so no point in getting userspace's hopes up.

Signed-off-by: Rob Clark <r...@ti.com>
---
 drivers/staging/omapdrm/omap_drv.c   |   27 +++++++++++++++------------
 drivers/staging/omapdrm/omap_plane.c |   34 ++++++++++++++++++----------------
 2 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/drivers/staging/omapdrm/omap_drv.c 
b/drivers/staging/omapdrm/omap_drv.c
index 2bf7259..e4f3cd8 100644
--- a/drivers/staging/omapdrm/omap_drv.c
+++ b/drivers/staging/omapdrm/omap_drv.c
@@ -670,19 +670,22 @@ static void dev_lastclose(struct drm_device *dev)
 
        DBG("lastclose: dev=%p", dev);
 
-       /* 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);
-       }
+       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);
+               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(priv->fbdev);
diff --git a/drivers/staging/omapdrm/omap_plane.c 
b/drivers/staging/omapdrm/omap_plane.c
index 4bde639..1b3a9fe 100644
--- a/drivers/staging/omapdrm/omap_plane.c
+++ b/drivers/staging/omapdrm/omap_plane.c
@@ -416,23 +416,25 @@ void omap_plane_install_properties(struct drm_plane 
*plane,
        struct omap_drm_private *priv = dev->dev_private;
        struct drm_property *prop;
 
-       prop = priv->rotation_prop;
-       if (!prop) {
-               const struct drm_prop_enum_list props[] = {
-                               { DRM_ROTATE_0,   "rotate-0" },
-                               { DRM_ROTATE_90,  "rotate-90" },
-                               { DRM_ROTATE_180, "rotate-180" },
-                               { DRM_ROTATE_270, "rotate-270" },
-                               { DRM_REFLECT_X,  "reflect-x" },
-                               { DRM_REFLECT_Y,  "reflect-y" },
-               };
-               prop = drm_property_create_bitmask(dev, 0, "rotation",
-                               props, ARRAY_SIZE(props));
-               if (prop == NULL)
-                       return;
-               priv->rotation_prop = prop;
+       if (priv->has_dmm) {
+               prop = priv->rotation_prop;
+               if (!prop) {
+                       const struct drm_prop_enum_list props[] = {
+                                       { DRM_ROTATE_0,   "rotate-0" },
+                                       { DRM_ROTATE_90,  "rotate-90" },
+                                       { DRM_ROTATE_180, "rotate-180" },
+                                       { DRM_ROTATE_270, "rotate-270" },
+                                       { DRM_REFLECT_X,  "reflect-x" },
+                                       { DRM_REFLECT_Y,  "reflect-y" },
+                       };
+                       prop = drm_property_create_bitmask(dev, 0, "rotation",
+                                       props, ARRAY_SIZE(props));
+                       if (prop == NULL)
+                               return;
+                       priv->rotation_prop = prop;
+               }
+               drm_object_attach_property(obj, prop, 0);
        }
-       drm_object_attach_property(obj, prop, 0);
 
         prop = priv->zorder_prop;
         if (!prop) {
-- 
1.7.9.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to