Hi Laurent, On 18/03/2020 00:25, Laurent Pinchart wrote: > The notifier is useful to match functions to access information about > the device matching a subdev. This will be used to print messages using > the correct struct device and driver name. The number of times I've added debug prints in these match functions debugging issues already, I should have done this too! Reviewed-by: Kieran Bingham <kieran.bingham+renesas@xxxxxxxxxxxxxxxx> > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > --- > drivers/media/v4l2-core/v4l2-async.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c > index 995e5464cba7..224b39a7aeb1 100644 > --- a/drivers/media/v4l2-core/v4l2-async.c > +++ b/drivers/media/v4l2-core/v4l2-async.c > @@ -50,7 +50,8 @@ static int v4l2_async_notifier_call_complete(struct v4l2_async_notifier *n) > return n->ops->complete(n); > } > > -static bool match_i2c(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > +static bool match_i2c(struct v4l2_async_notifier *notifier, > + struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > { > #if IS_ENABLED(CONFIG_I2C) > struct i2c_client *client = i2c_verify_client(sd->dev); > @@ -63,13 +64,14 @@ static bool match_i2c(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > #endif > } > > -static bool match_devname(struct v4l2_subdev *sd, > - struct v4l2_async_subdev *asd) > +static bool match_devname(struct v4l2_async_notifier *notifier, > + struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > { > return !strcmp(asd->match.device_name, dev_name(sd->dev)); > } > > -static bool match_fwnode(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > +static bool match_fwnode(struct v4l2_async_notifier *notifier, > + struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > { > struct fwnode_handle *other_fwnode; > struct fwnode_handle *dev_fwnode; > @@ -114,7 +116,8 @@ static bool match_fwnode(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > return dev_fwnode == other_fwnode; > } > > -static bool match_custom(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > +static bool match_custom(struct v4l2_async_notifier *notifier, > + struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > { > if (!asd->match.custom.match) > /* Match always */ > @@ -131,7 +134,8 @@ static struct v4l2_async_subdev * > v4l2_async_find_match(struct v4l2_async_notifier *notifier, > struct v4l2_subdev *sd) > { > - bool (*match)(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd); > + bool (*match)(struct v4l2_async_notifier *notifier, > + struct v4l2_subdev *sd, struct v4l2_async_subdev *asd); > struct v4l2_async_subdev *asd; > > list_for_each_entry(asd, ¬ifier->waiting, list) { > @@ -156,7 +160,7 @@ v4l2_async_find_match(struct v4l2_async_notifier *notifier, > } > > /* match cannot be NULL here */ > - if (match(sd, asd)) > + if (match(notifier, sd, asd)) > return asd; > } > >