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