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

Ville Syrjälä
2014-06-18T12:01:46Z

On Wed, Jun 18, 2014 at 12:12:52PM +0100, 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?

drm_property_change_is_valid() should already check that no unsupported
bits can escape into the driver.

--
Ville Syrjälä
Intel OTC