Re: [PATCH v3 08/14] media: renesas-ceu: Use v4l2_async_notifier_add_*_subdev

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

 



On Mon, Jan 25, 2021 at 01:50:25PM -0300, Helen Koike wrote:
> 
> 
> On 1/25/21 10:22 AM, Sakari Ailus wrote:
> > From: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx>
> > 
> > The use of v4l2_async_notifier_add_subdev will be discouraged.
> > Drivers are instead encouraged to use a helper such as
> > v4l2_async_notifier_add_i2c_subdev.
> > 
> > This fixes a misuse of the API, as v4l2_async_notifier_add_subdev
> > should get a kmalloc'ed struct v4l2_async_subdev,
> > removing some boilerplate code while at it.
> > 
> > Use the appropriate helper: v4l2_async_notifier_add_i2c_subdev
> > or v4l2_async_notifier_add_fwnode_remote_subdev, which handles
> > the needed setup, instead of open-coding it.
> > 
> > Using v4l2-async to allocate the driver-specific structs,
> > requires to change struct ceu_subdev so the embedded
> > struct v4l2_async_subdev is now the first element.
> > 
> > Signed-off-by: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx>
> > Reviewed-by: Jacopo Mondi <jacopo+renesas@xxxxxxxxxx>
> > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > ---
> >  drivers/media/platform/renesas-ceu.c | 60 +++++++++++++---------------
> >  1 file changed, 27 insertions(+), 33 deletions(-)
> > 
> > diff --git a/drivers/media/platform/renesas-ceu.c b/drivers/media/platform/renesas-ceu.c
> > index 4a633ad0e8fa..0298d08b39e4 100644
> > --- a/drivers/media/platform/renesas-ceu.c
> > +++ b/drivers/media/platform/renesas-ceu.c
> > @@ -152,8 +152,8 @@ static inline struct ceu_buffer *vb2_to_ceu(struct vb2_v4l2_buffer *vbuf)
> >   * ceu_subdev - Wraps v4l2 sub-device and provides async subdevice.
> >   */
> >  struct ceu_subdev {
> > -	struct v4l2_subdev *v4l2_sd;
> >  	struct v4l2_async_subdev asd;
> > +	struct v4l2_subdev *v4l2_sd;
> >  
> >  	/* per-subdevice mbus configuration options */
> >  	unsigned int mbus_flags;
> > @@ -174,7 +174,7 @@ struct ceu_device {
> >  	struct v4l2_device	v4l2_dev;
> >  
> >  	/* subdevices descriptors */
> > -	struct ceu_subdev	*subdevs;
> > +	struct ceu_subdev	**subdevs;
> >  	/* the subdevice currently in use */
> >  	struct ceu_subdev	*sd;
> >  	unsigned int		sd_index;
> > @@ -1195,7 +1195,7 @@ static int ceu_enum_input(struct file *file, void *priv,
> >  	if (inp->index >= ceudev->num_sd)
> >  		return -EINVAL;
> >  
> > -	ceusd = &ceudev->subdevs[inp->index];
> > +	ceusd = ceudev->subdevs[inp->index];
> >  
> >  	inp->type = V4L2_INPUT_TYPE_CAMERA;
> >  	inp->std = 0;
> > @@ -1230,7 +1230,7 @@ static int ceu_s_input(struct file *file, void *priv, unsigned int i)
> >  		return 0;
> >  
> >  	ceu_sd_old = ceudev->sd;
> > -	ceudev->sd = &ceudev->subdevs[i];
> > +	ceudev->sd = ceudev->subdevs[i];
> >  
> >  	/*
> >  	 * Make sure we can generate output image formats and apply
> > @@ -1423,7 +1423,7 @@ static int ceu_notify_complete(struct v4l2_async_notifier *notifier)
> >  	 * ceu formats.
> >  	 */
> >  	if (!ceudev->sd) {
> > -		ceudev->sd = &ceudev->subdevs[0];
> > +		ceudev->sd = ceudev->subdevs[0];
> >  		ceudev->sd_index = 0;
> >  	}
> >  
> > @@ -1467,8 +1467,8 @@ static const struct v4l2_async_notifier_operations ceu_notify_ops = {
> >  
> >  /*
> >   * ceu_init_async_subdevs() - Initialize CEU subdevices and async_subdevs in
> > - *			      ceu device. Both DT and platform data parsing use
> > - *			      this routine.
> > + *                           ceu device. Both DT and platform data parsing use
> > + *                           this routine.
> 
> Maybe doc alignment fix should be sent in another patch.
> 
> With or without this:
> 
> Reviewed-by: Helen Koike <helen.koike@xxxxxxxxxxxxx>

Thanks; I prefer keeping it here, not worth writing a patch just for this.

-- 
Sakari Ailus



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux