media: v4l2-async: Pass notifier pointer to match functions
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Wed, 1 Jul 2020 06:21:39 +0000 (08:21 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sun, 19 Jul 2020 12:16:58 +0000 (14:16 +0200)
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.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Tested-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/v4l2-core/v4l2-async.c

index e9c3d41..6083382 100644 (file)
@@ -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;
@@ -115,7 +117,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 */
@@ -132,7 +135,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, &notifier->waiting, list) {
@@ -157,7 +161,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;
        }