The sub-device's sub-notifier is hidded in the sub-device and not meant to be accessed directly by drivers. Still the driver may wish to set callbacks to the notifier. Add a function to do that: v4l2_subdev_notifier_set_callbacks(). Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> --- Well, this appears to be quite straightforward. The code is entirely untested but trivial at the same time. drivers/media/v4l2-core/v4l2-subdev.c | 20 ++++++++++++++++++++ include/media/v4l2-subdev.h | 6 ++++++ 2 files changed, 26 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c index a6976d4a52ac..8629224bfdba 100644 --- a/drivers/media/v4l2-core/v4l2-subdev.c +++ b/drivers/media/v4l2-core/v4l2-subdev.c @@ -666,3 +666,23 @@ int v4l2_subdev_fwnode_reference_parse_sensor_common(struct v4l2_subdev *sd) return v4l2_fwnode_reference_parse_sensor_common(sd->dev, subnotifier); } EXPORT_SYMBOL_GPL(v4l2_subdev_fwnode_reference_parse_sensor_common); + +int v4l2_subdev_notifier_set_callbacks( + struct v4l2_subdev *sd, + int (*bound)(struct v4l2_async_notifier *notifier, + struct v4l2_subdev *subdev, + struct v4l2_async_subdev *asd), + int (*complete)(struct v4l2_async_notifier *notifier)) +{ + struct v4l2_async_notifier *subnotifier = + v4l2_subdev_get_subnotifier(sd); + + if (!subnotifier) + return -ENOMEM; + + subnotifier->bound = bound; + subnotifier->complete = complete; + + return 0; +} +EXPORT_SYMBOL_GPL(v4l2_subdev_notifier_set_callbacks); diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index e309a2e2030b..ee85b64ad4f4 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h @@ -1012,4 +1012,10 @@ int v4l2_subdev_fwnode_endpoints_parse( int v4l2_subdev_fwnode_reference_parse_sensor_common(struct v4l2_subdev *sd); +int v4l2_subdev_notifier_set_callbacks( + struct v4l2_subdev *sd, + int (*bound)(struct v4l2_async_notifier *notifier, + struct v4l2_subdev *subdev, + struct v4l2_async_subdev *asd), + int (*complete)(struct v4l2_async_notifier *notifier)); #endif -- 2.11.0