staging: drm/omap: only advertise rotation prop if supported
authorRob Clark <rob@ti.com>
Thu, 25 Oct 2012 22:14:13 +0000 (17:14 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Oct 2012 18:06:59 +0000 (11:06 -0700)
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 <rob@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/omapdrm/omap_drv.c
drivers/staging/omapdrm/omap_plane.c

index ebdb0b6..053c45d 100644 (file)
@@ -659,19 +659,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);
index 4bde639..1b3a9fe 100644 (file)
@@ -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) {