diff mbox series

[RFC,2/4] media: v4l2-async: Add notifier flags

Message ID 20210617171611.80542-3-jacopo+renesas@jmondi.org
State Superseded
Headers show
Series media: Introduce post_register() subdev operation | expand

Commit Message

Jacopo Mondi June 17, 2021, 5:16 p.m. UTC
Add a 'flags' field to the async notifier structure and define the
V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER flag.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
---
 drivers/media/v4l2-core/v4l2-async.c |  1 +
 include/media/v4l2-async.h           | 10 ++++++++++
 2 files changed, 11 insertions(+)

Comments

Hans Verkuil July 6, 2021, 7:47 a.m. UTC | #1
On 17/06/2021 19:16, Jacopo Mondi wrote:
> Add a 'flags' field to the async notifier structure and define the

> V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER flag.

> 

> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>

> ---

>  drivers/media/v4l2-core/v4l2-async.c |  1 +

>  include/media/v4l2-async.h           | 10 ++++++++++

>  2 files changed, 11 insertions(+)

> 

> diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c

> index cd9e78c63791..0836e01e59ca 100644

> --- a/drivers/media/v4l2-core/v4l2-async.c

> +++ b/drivers/media/v4l2-core/v4l2-async.c

> @@ -472,6 +472,7 @@ static int v4l2_async_notifier_asd_valid(struct v4l2_async_notifier *notifier,

>  void v4l2_async_notifier_init(struct v4l2_async_notifier *notifier)

>  {

>  	INIT_LIST_HEAD(&notifier->asd_list);

> +	notifier->flags = 0;

>  }

>  EXPORT_SYMBOL(v4l2_async_notifier_init);

>  

> diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h

> index 5b275a845c20..3f0627bf8894 100644

> --- a/include/media/v4l2-async.h

> +++ b/include/media/v4l2-async.h

> @@ -92,6 +92,13 @@ struct v4l2_async_notifier_operations {

>  		       struct v4l2_async_subdev *asd);

>  };

>  

> +/*

> + * Set this flag to instruct the core framework not to call the post_register()

> + * core operation. The driver that registered the notifier will take care to

> + * do so eventually.

> + */

> +#define V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER		(1U << 0)


How about: V4L2_ASYNC_NOTIFIER_DEFER_POST_REGISTER

I think that's a better name: it is not skipped, it is just called later.

Regards,

	Hans

> +

>  /**

>   * struct v4l2_async_notifier - v4l2_device notifier data

>   *

> @@ -103,6 +110,8 @@ struct v4l2_async_notifier_operations {

>   * @waiting:	list of struct v4l2_async_subdev, waiting for their drivers

>   * @done:	list of struct v4l2_subdev, already probed

>   * @list:	member in a global list of notifiers

> + * @flags:	notifier's flags. Can be:

> + * 	%V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER

>   */

>  struct v4l2_async_notifier {

>  	const struct v4l2_async_notifier_operations *ops;

> @@ -113,6 +122,7 @@ struct v4l2_async_notifier {

>  	struct list_head waiting;

>  	struct list_head done;

>  	struct list_head list;

> +	u32 flags;

>  };

>  

>  /**

>
diff mbox series

Patch

diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c
index cd9e78c63791..0836e01e59ca 100644
--- a/drivers/media/v4l2-core/v4l2-async.c
+++ b/drivers/media/v4l2-core/v4l2-async.c
@@ -472,6 +472,7 @@  static int v4l2_async_notifier_asd_valid(struct v4l2_async_notifier *notifier,
 void v4l2_async_notifier_init(struct v4l2_async_notifier *notifier)
 {
 	INIT_LIST_HEAD(&notifier->asd_list);
+	notifier->flags = 0;
 }
 EXPORT_SYMBOL(v4l2_async_notifier_init);
 
diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
index 5b275a845c20..3f0627bf8894 100644
--- a/include/media/v4l2-async.h
+++ b/include/media/v4l2-async.h
@@ -92,6 +92,13 @@  struct v4l2_async_notifier_operations {
 		       struct v4l2_async_subdev *asd);
 };
 
+/*
+ * Set this flag to instruct the core framework not to call the post_register()
+ * core operation. The driver that registered the notifier will take care to
+ * do so eventually.
+ */
+#define V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER		(1U << 0)
+
 /**
  * struct v4l2_async_notifier - v4l2_device notifier data
  *
@@ -103,6 +110,8 @@  struct v4l2_async_notifier_operations {
  * @waiting:	list of struct v4l2_async_subdev, waiting for their drivers
  * @done:	list of struct v4l2_subdev, already probed
  * @list:	member in a global list of notifiers
+ * @flags:	notifier's flags. Can be:
+ * 	%V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER
  */
 struct v4l2_async_notifier {
 	const struct v4l2_async_notifier_operations *ops;
@@ -113,6 +122,7 @@  struct v4l2_async_notifier {
 	struct list_head waiting;
 	struct list_head done;
 	struct list_head list;
+	u32 flags;
 };
 
 /**