Re: [PATCH v2 05/15] drm/atmel-hlcdc: Use per-plane rotation property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 10 Aug 2016 12:09:41 +0300
Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote:

> On Wed, Aug 10, 2016 at 10:35:22AM +0200, Boris Brezillon wrote:
> > Hi Ville,
> > 
> > On Fri, 22 Jul 2016 18:47:01 +0300
> > ville.syrjala@xxxxxxxxxxxxxxx wrote:
> >   
> > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> > > 
> > > The global mode_config.rotation_property is going away, switch over to
> > > per-plane rotation_property.
> > > 
> > > v2: Propagate error upwards (Boris)
> > > 
> > > Cc: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx>
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> > > ---
> > >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 37 +++++++++++++------------
> > >  1 file changed, 20 insertions(+), 17 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
> > > index f3350c80704d..ee9bd7a938c3 100644
> > > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
> > > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
> > > @@ -883,9 +883,9 @@ static int atmel_hlcdc_plane_atomic_get_property(struct drm_plane *p,
> > >  	return 0;
> > >  }
> > >  
> > > -static void atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane,
> > > -				const struct atmel_hlcdc_layer_desc *desc,
> > > -				struct atmel_hlcdc_plane_properties *props)
> > > +static int atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane,
> > > +					     const struct atmel_hlcdc_layer_desc *desc,
> > > +					     struct atmel_hlcdc_plane_properties *props)
> > >  {
> > >  	struct regmap *regmap = plane->layer.hlcdc->regmap;
> > >  
> > > @@ -902,10 +902,18 @@ static void atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane,
> > >  				ATMEL_HLCDC_LAYER_GA_MASK);
> > >  	}
> > >  
> > > -	if (desc->layout.xstride && desc->layout.pstride)
> > > -		drm_object_attach_property(&plane->base.base,
> > > -				plane->base.dev->mode_config.rotation_property,
> > > -				BIT(DRM_ROTATE_0));
> > > +	if (desc->layout.xstride && desc->layout.pstride) {
> > > +		int ret;
> > > +
> > > +		ret = drm_plane_create_rotation_property(&plane->base,
> > > +							 BIT(DRM_ROTATE_0),
> > > +							 BIT(DRM_ROTATE_0) |
> > > +							 BIT(DRM_ROTATE_90) |
> > > +							 BIT(DRM_ROTATE_180) |
> > > +							 BIT(DRM_ROTATE_270));
> > > +		if (ret)
> > > +			return ret;
> > > +	}
> > >  
> > >  	if (desc->layout.csc) {
> > >  		/*
> > > @@ -925,6 +933,8 @@ static void atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane,
> > >  			     ATMEL_HLCDC_LAYER_CSC_CFG(&plane->layer, 2),
> > >  			     0x40040890);
> > >  	}
> > > +
> > > +	return 0;
> > >  }
> > >  
> > >  static struct drm_plane_helper_funcs atmel_hlcdc_layer_plane_helper_funcs = {
> > > @@ -1036,7 +1046,9 @@ atmel_hlcdc_plane_create(struct drm_device *dev,
> > >  			     &atmel_hlcdc_layer_plane_helper_funcs);
> > >  
> > >  	/* Set default property values*/
> > > -	atmel_hlcdc_plane_init_properties(plane, desc, props);
> > > +	ret = atmel_hlcdc_plane_init_properties(plane, desc, props);
> > > +	if (ret)
> > > +		return ERR_PTR(ret);  
> > 
> > Shouldn't we call drm_plane_cleanup() here?  
> 
> The other error path doesn't call it either, so I figured no really
> cares anyway.

Because the other error path is before plane initialization.
Now, it's true that atmel_hlcdc_create_planes() does not take care of
releasing previously registered planes in case we fail to register one
of them, but that's something we should fix instead of introducing new
potential sources of memory leaks ;).

> 
> >   
> > >  
> > >  	return plane;
> > >  }
> > > @@ -1054,15 +1066,6 @@ atmel_hlcdc_plane_create_properties(struct drm_device *dev)
> > >  	if (!props->alpha)
> > >  		return ERR_PTR(-ENOMEM);
> > >  
> > > -	dev->mode_config.rotation_property =
> > > -			drm_mode_create_rotation_property(dev,
> > > -							  BIT(DRM_ROTATE_0) |
> > > -							  BIT(DRM_ROTATE_90) |
> > > -							  BIT(DRM_ROTATE_180) |
> > > -							  BIT(DRM_ROTATE_270));
> > > -	if (!dev->mode_config.rotation_property)
> > > -		return ERR_PTR(-ENOMEM);
> > > -
> > >  	return props;
> > >  }
> > >    
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux