Commit 6686df8c authored by Ville Syrjälä's avatar Ville Syrjälä Committed by Daniel Vetter

drm: RIP mode_config->rotation_property

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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1477077768-4274-4-git-send-email-ville.syrjala@linux.intel.com
parent 574a37b1
...@@ -705,8 +705,7 @@ int drm_atomic_plane_set_property(struct drm_plane *plane, ...@@ -705,8 +705,7 @@ int drm_atomic_plane_set_property(struct drm_plane *plane,
state->src_w = val; state->src_w = val;
} else if (property == config->prop_src_h) { } else if (property == config->prop_src_h) {
state->src_h = val; state->src_h = val;
} else if (property == config->rotation_property || } else if (property == plane->rotation_property) {
property == plane->rotation_property) {
if (!is_power_of_2(val & DRM_ROTATE_MASK)) if (!is_power_of_2(val & DRM_ROTATE_MASK))
return -EINVAL; return -EINVAL;
state->rotation = val; state->rotation = val;
...@@ -766,8 +765,7 @@ drm_atomic_plane_get_property(struct drm_plane *plane, ...@@ -766,8 +765,7 @@ drm_atomic_plane_get_property(struct drm_plane *plane,
*val = state->src_w; *val = state->src_w;
} else if (property == config->prop_src_h) { } else if (property == config->prop_src_h) {
*val = state->src_h; *val = state->src_h;
} else if (property == config->rotation_property || } else if (property == plane->rotation_property) {
property == plane->rotation_property) {
*val = state->rotation; *val = state->rotation;
} else if (property == plane->zpos_property) { } else if (property == plane->zpos_property) {
*val = state->zpos; *val = state->zpos;
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
* On top of this basic transformation additional properties can be exposed by * On top of this basic transformation additional properties can be exposed by
* the driver: * 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. * rotation and reflection step between the source and destination rectangles.
* Without this property the rectangle is only scaled, but not rotated or * Without this property the rectangle is only scaled, but not rotated or
* reflected. * reflected.
...@@ -105,18 +105,12 @@ ...@@ -105,18 +105,12 @@
*/ */
/** /**
* drm_mode_create_rotation_property - create a new rotation property * drm_plane_create_rotation_property - create a new rotation property
* @dev: DRM device * @plane: drm plane
* @rotation: initial value of the rotation property
* @supported_rotations: bitmask of supported rotations and reflections * @supported_rotations: bitmask of supported rotations and reflections
* *
* This creates a new property with the selected support for transformations. * 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 * 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 * and the y axis the rotation property is somewhat redundant. Drivers can use
...@@ -144,24 +138,6 @@ ...@@ -144,24 +138,6 @@
* rotation. After reflection, the rotation is applied to the image sampled from * rotation. After reflection, the rotation is applied to the image sampled from
* the source rectangle, before scaling it to fit the destination rectangle. * 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, int drm_plane_create_rotation_property(struct drm_plane *plane,
unsigned int rotation, unsigned int rotation,
unsigned int supported_rotations) unsigned int supported_rotations)
......
...@@ -392,15 +392,10 @@ static int restore_fbdev_mode(struct drm_fb_helper *fb_helper) ...@@ -392,15 +392,10 @@ static int restore_fbdev_mode(struct drm_fb_helper *fb_helper)
if (plane->type != DRM_PLANE_TYPE_PRIMARY) if (plane->type != DRM_PLANE_TYPE_PRIMARY)
drm_plane_force_disable(plane); drm_plane_force_disable(plane);
if (plane->rotation_property) { if (plane->rotation_property)
drm_mode_plane_set_obj_prop(plane, drm_mode_plane_set_obj_prop(plane,
plane->rotation_property, plane->rotation_property,
DRM_ROTATE_0); 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++) { for (i = 0; i < fb_helper->crtc_count; i++) {
......
...@@ -52,8 +52,6 @@ static inline bool drm_rotation_90_or_270(unsigned int rotation) ...@@ -52,8 +52,6 @@ static inline bool drm_rotation_90_or_270(unsigned int rotation)
return rotation & (DRM_ROTATE_90 | DRM_ROTATE_270); 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, int drm_plane_create_rotation_property(struct drm_plane *plane,
unsigned int rotation, unsigned int rotation,
unsigned int supported_rotations); unsigned int supported_rotations);
......
...@@ -1155,11 +1155,6 @@ struct drm_mode_config { ...@@ -1155,11 +1155,6 @@ struct drm_mode_config {
* CURSOR, PRIMARY and OVERLAY legacy uses of planes. * CURSOR, PRIMARY and OVERLAY legacy uses of planes.
*/ */
struct drm_property *plane_type_property; 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 * @prop_src_x: Default atomic plane property for the plane source
* position in the connected &drm_framebuffer. * position in the connected &drm_framebuffer.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment