[PATCH] drm/omap: only advertise rotation prop if supported

2012-10-25 Thread Rob Clark
From: Rob Clark 

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 
---
 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(>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(>crtcs[i]->base,
+   priv->rotation_prop, 0);
+   }

-   for (i = 0; i < priv->num_planes; i++) {
-   drm_object_property_set_value(>planes[i]->base,
-   priv->rotation_prop, 0);
+   for (i = 0; i < priv->num_planes; i++) {
+   drm_object_property_set_value(>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



[PATCH] drm/omap: only advertise rotation prop if supported

2012-10-25 Thread Rob Clark
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