drm: RIP mode_config->rotation_property
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 21 Oct 2016 19:22:45 +0000 (22:22 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 22 Oct 2016 08:42:11 +0000 (10:42 +0200)
Now that all drivers have been converted over to the per-plane rotation
property, we can just nuke the global rotation property.

v2: Rebase due to BIT(),__builtin_ffs() & co.
    Deal with superfluous code shuffling

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1477077768-4274-4-git-send-email-ville.syrjala@linux.intel.com
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_blend.c
drivers/gpu/drm/drm_fb_helper.c
include/drm/drm_blend.h
include/drm/drm_crtc.h

index f817063878899eabd6cfcbd6c942dabdf8e79e2b..1b5a32df9a9a793f3dfbf527f5980a9eb1ccd0d4 100644 (file)
@@ -705,8 +705,7 @@ int drm_atomic_plane_set_property(struct drm_plane *plane,
                state->src_w = val;
        } else if (property == config->prop_src_h) {
                state->src_h = val;
-       } else if (property == config->rotation_property ||
-                  property == plane->rotation_property) {
+       } else if (property == plane->rotation_property) {
                if (!is_power_of_2(val & DRM_ROTATE_MASK))
                        return -EINVAL;
                state->rotation = val;
@@ -766,8 +765,7 @@ drm_atomic_plane_get_property(struct drm_plane *plane,
                *val = state->src_w;
        } else if (property == config->prop_src_h) {
                *val = state->src_h;
-       } else if (property == config->rotation_property ||
-                  property == plane->rotation_property) {
+       } else if (property == plane->rotation_property) {
                *val = state->rotation;
        } else if (property == plane->zpos_property) {
                *val = state->zpos;
index e52aece309009be8f354a4b2368ba2d9804daf2b..1f2412c7ccfdb2929555c63bec6e3ccf136589f8 100644 (file)
@@ -89,7 +89,7 @@
  * On top of this basic transformation additional properties can be exposed by
  * the driver:
  *
- * - Rotation is set up with drm_mode_create_rotation_property(). It adds a
+ * - Rotation is set up with drm_plane_create_rotation_property(). It adds a
  *   rotation and reflection step between the source and destination rectangles.
  *   Without this property the rectangle is only scaled, but not rotated or
  *   reflected.
  */
 
 /**
- * drm_mode_create_rotation_property - create a new rotation property
- * @dev: DRM device
+ * drm_plane_create_rotation_property - create a new rotation property
+ * @plane: drm plane
+ * @rotation: initial value of the rotation property
  * @supported_rotations: bitmask of supported rotations and reflections
  *
  * This creates a new property with the selected support for transformations.
- * The resulting property should be stored in @rotation_property in
- * &drm_mode_config. It then must be attached to each plane which supports
- * rotations using drm_object_attach_property().
- *
- * FIXME: Probably better if the rotation property is created on each plane,
- * like the zpos property. Otherwise it's not possible to allow different
- * rotation modes on different planes.
  *
  * Since a rotation by 180° degress is the same as reflecting both along the x
  * and the y axis the rotation property is somewhat redundant. Drivers can use
  * rotation. After reflection, the rotation is applied to the image sampled from
  * the source rectangle, before scaling it to fit the destination rectangle.
  */
-struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev,
-                                                      unsigned int supported_rotations)
-{
-       static const struct drm_prop_enum_list props[] = {
-               { __builtin_ffs(DRM_ROTATE_0) - 1,   "rotate-0" },
-               { __builtin_ffs(DRM_ROTATE_90) - 1,  "rotate-90" },
-               { __builtin_ffs(DRM_ROTATE_180) - 1, "rotate-180" },
-               { __builtin_ffs(DRM_ROTATE_270) - 1, "rotate-270" },
-               { __builtin_ffs(DRM_REFLECT_X) - 1,  "reflect-x" },
-               { __builtin_ffs(DRM_REFLECT_Y) - 1,  "reflect-y" },
-       };
-
-       return drm_property_create_bitmask(dev, 0, "rotation",
-                                          props, ARRAY_SIZE(props),
-                                          supported_rotations);
-}
-EXPORT_SYMBOL(drm_mode_create_rotation_property);
-
 int drm_plane_create_rotation_property(struct drm_plane *plane,
                                       unsigned int rotation,
                                       unsigned int supported_rotations)
index e0d428f9d1cb3f65273918b3b2c346c128a15b50..83dbae0fabcf1d581e4bdb3bda3d064cc7fce5ea 100644 (file)
@@ -392,15 +392,10 @@ static int restore_fbdev_mode(struct drm_fb_helper *fb_helper)
                if (plane->type != DRM_PLANE_TYPE_PRIMARY)
                        drm_plane_force_disable(plane);
 
-               if (plane->rotation_property) {
+               if (plane->rotation_property)
                        drm_mode_plane_set_obj_prop(plane,
                                                    plane->rotation_property,
                                                    DRM_ROTATE_0);
-               } else if (dev->mode_config.rotation_property) {
-                       drm_mode_plane_set_obj_prop(plane,
-                                                   dev->mode_config.rotation_property,
-                                                   DRM_ROTATE_0);
-               }
        }
 
        for (i = 0; i < fb_helper->crtc_count; i++) {
index fd351924e1c5b573710819edf84b29cb21009171..13221cf9b3eb1f7bcae06b8e5acb3125ae827b10 100644 (file)
@@ -52,8 +52,6 @@ static inline bool drm_rotation_90_or_270(unsigned int rotation)
        return rotation & (DRM_ROTATE_90 | DRM_ROTATE_270);
 }
 
-struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev,
-                                                      unsigned int supported_rotations);
 int drm_plane_create_rotation_property(struct drm_plane *plane,
                                       unsigned int rotation,
                                       unsigned int supported_rotations);
index 284c1b3aec109729a11302c900126acf70705029..bc860cfc67ca8d0bbb948d02fad02b14983abbed 100644 (file)
@@ -1155,11 +1155,6 @@ struct drm_mode_config {
         * CURSOR, PRIMARY and OVERLAY legacy uses of planes.
         */
        struct drm_property *plane_type_property;
-       /**
-        * @rotation_property: Optional property for planes or CRTCs to specifiy
-        * rotation.
-        */
-       struct drm_property *rotation_property;
        /**
         * @prop_src_x: Default atomic plane property for the plane source
         * position in the connected &drm_framebuffer.