Message ID | 20200315102724.26850-2-prabhakar.mahadev-lad.rj@bp.renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | rcar-csi2: make use V4L2_ASYNC_MATCH_CUSTOM to do fwnode matching | expand |
Hi Prabhakar, Thank you for the patch. On Sun, Mar 15, 2020 at 10:27:23AM +0000, Lad Prabhakar wrote: > Passing a pointer to struct device for the match_custom callback is of no > use as in the bridge driver to match the fwnode, so instead pass the > struct v4l2_subdev pointer so that the bridge driver has enough > information to match against the subdevices. I'm not sure I like this. Conceptually speaking, the driver that registers the notifier wants to get v4l2_subdev instances corresponding to devices. A struct device is thus all it should need. Giving the match function access to the subdev opens the door to all kind of nasty hacks. In any case, I don't think is is required, see my reply to patch 2/2. > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > --- > drivers/media/v4l2-core/v4l2-async.c | 2 +- > include/media/v4l2-async.h | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c > index 8bde33c21ce4..f897d4025f97 100644 > --- a/drivers/media/v4l2-core/v4l2-async.c > +++ b/drivers/media/v4l2-core/v4l2-async.c > @@ -80,7 +80,7 @@ static bool match_custom(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) > /* Match always */ > return true; > > - return asd->match.custom.match(sd->dev, asd); > + return asd->match.custom.match(sd, asd); > } > > static LIST_HEAD(subdev_list); > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h > index 8319284c93cb..8c014e3bbd6c 100644 > --- a/include/media/v4l2-async.h > +++ b/include/media/v4l2-async.h > @@ -86,8 +86,8 @@ struct v4l2_async_subdev { > unsigned short address; > } i2c; > struct { > - bool (*match)(struct device *dev, > - struct v4l2_async_subdev *sd); > + bool (*match)(struct v4l2_subdev *sd, > + struct v4l2_async_subdev *asd); > void *priv; > } custom; > } match;
diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index 8bde33c21ce4..f897d4025f97 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -80,7 +80,7 @@ static bool match_custom(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd) /* Match always */ return true; - return asd->match.custom.match(sd->dev, asd); + return asd->match.custom.match(sd, asd); } static LIST_HEAD(subdev_list); diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h index 8319284c93cb..8c014e3bbd6c 100644 --- a/include/media/v4l2-async.h +++ b/include/media/v4l2-async.h @@ -86,8 +86,8 @@ struct v4l2_async_subdev { unsigned short address; } i2c; struct { - bool (*match)(struct device *dev, - struct v4l2_async_subdev *sd); + bool (*match)(struct v4l2_subdev *sd, + struct v4l2_async_subdev *asd); void *priv; } custom; } match;
Passing a pointer to struct device for the match_custom callback is of no use as in the bridge driver to match the fwnode, so instead pass the struct v4l2_subdev pointer so that the bridge driver has enough information to match against the subdevices. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- drivers/media/v4l2-core/v4l2-async.c | 2 +- include/media/v4l2-async.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)