Re: [PATCH 09/11] drm/i915: Add rotation property for sprites

Jindal, Sonika
2014-06-18T11:54:59Z

On 6/18/2014 4:42 PM, Damien Lespiau wrote:
> On Wed, Jun 18, 2014 at 02:27:25PM +0530, sonika.jindal@intel.com wrote:
>> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>>
>> Sprite planes support 180 degree rotation. The lower layers are now in
>> place, so hook in the standard rotation property to expose the feature
>> to the users.
>>
>> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>> Cc: Jani Nikula <jani.nikula at linux.intel.com>
>> Cc: David Airlie <airlied at linux.ie>
>> Cc: dri-devel at lists.freedesktop.org
>> Cc: linux-kernel at vger.kernel.org
>> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>> ---
>> drivers/gpu/drm/i915/i915_drv.h | 1 +
>> drivers/gpu/drm/i915/intel_sprite.c | 42 ++++++++++++++++++++++++++++++++++-
>> 2 files changed, 42 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> index 0640071..b56a1a5 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.h
>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>> @@ -1514,6 +1514,7 @@ struct drm_i915_private {
>>
>> struct drm_property *broadcast_rgb_property;
>> struct drm_property *force_audio_property;
>> + struct drm_property *rotation_property;
>>
>> uint32_t hw_context_size;
>> struct list_head context_list;
>> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
>> index cbad738..b9af256 100644
>> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> @@ -1202,6 +1202,30 @@ out_unlock:
>> return ret;
>> }
>>
>> +static int intel_plane_set_property(struct drm_plane *plane,
>> + struct drm_property *prop,
>> + uint64_t val)
>> +{
>> + struct drm_i915_private *dev_priv = plane->dev->dev_private;
>> + struct intel_plane *intel_plane = to_intel_plane(plane);
>> + uint64_t old_val;
>> + int ret = -ENOENT;
>> +
>> + if (prop == dev_priv->rotation_property) {
>
> Shouldn't we add a:
>
> if (val & (BIT(DRM_ROTATE_0) | BIT(DRM_ROTATE_180)))
> return -EINVAL;
>
> To ensure userspace doesn't send garbage in the upper bits so we can
> reuse them down the road?
>
But we are checking if more than one bit is set, we return EINVAL.
So we only care for one rotation angle being sent from user.
Shouldn't that suffice?