All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 0/4] media: Introduce post_register() subdev operation
@ 2021-06-17 17:16 Jacopo Mondi
  2021-06-17 17:16 ` [RFC 1/4] media: v4l2-subdev: Introduce post_register() core op Jacopo Mondi
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Jacopo Mondi @ 2021-06-17 17:16 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Jacopo Mondi, linux-media, linux-renesas-soc

Hello Hans,
   this is the result of the discussion we had yesterday, sent out just to
have a taste of how it looks like.

I won't pretend I like the outcome: it feels a bit hackish and meant to support
this precise use case.

Compared to the proposal to resurect 'init()' it indeed has the advantage that
the subdevice driver works in both deffered and non-deferred mode, but the
notifier flags seems really custom.

Also, being the new flag part of the notifier it won't be available for i2c
subdevs.

What do you think ? Does the result match your understanding ?

Thanks
  j

Jacopo Mondi (4):
  media: v4l2-subdev: Introduce post_register() core op
  media: v4l2-async: Add notifier flags
  media: v4l2-async: Call post_register() subdev op
  media: i2c: gmsl: Defer camera intialization

 drivers/media/i2c/max9286.c          | 21 ++++++--
 drivers/media/i2c/rdacm20.c          | 81 ++++++++++++++++------------
 drivers/media/v4l2-core/v4l2-async.c | 11 ++++
 include/media/v4l2-async.h           | 10 ++++
 include/media/v4l2-subdev.h          |  3 ++
 5 files changed, 89 insertions(+), 37 deletions(-)

--
2.31.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RFC 1/4] media: v4l2-subdev: Introduce post_register() core op
  2021-06-17 17:16 [RFC 0/4] media: Introduce post_register() subdev operation Jacopo Mondi
@ 2021-06-17 17:16 ` Jacopo Mondi
  2021-06-17 17:16 ` [RFC 2/4] media: v4l2-async: Add notifier flags Jacopo Mondi
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Jacopo Mondi @ 2021-06-17 17:16 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Jacopo Mondi, linux-media, linux-renesas-soc

Introduce the post_register() subdevice core operation.

The operation is meant to be called after the subdevice has been
registered.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
---
 include/media/v4l2-subdev.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index d0e9a5bdb08b..6925dc2f69ac 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -184,6 +184,8 @@ struct v4l2_subdev_io_pin_config {
  *		     for it to be warned when the value of a control changes.
  *
  * @unsubscribe_event: remove event subscription from the control framework.
+ *
+ * @post_register: called after the subdevice has been registered.
  */
 struct v4l2_subdev_core_ops {
 	int (*log_status)(struct v4l2_subdev *sd);
@@ -209,6 +211,7 @@ struct v4l2_subdev_core_ops {
 			       struct v4l2_event_subscription *sub);
 	int (*unsubscribe_event)(struct v4l2_subdev *sd, struct v4l2_fh *fh,
 				 struct v4l2_event_subscription *sub);
+	int (*post_register)(struct v4l2_subdev *sd);
 };
 
 /**
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC 2/4] media: v4l2-async: Add notifier flags
  2021-06-17 17:16 [RFC 0/4] media: Introduce post_register() subdev operation Jacopo Mondi
  2021-06-17 17:16 ` [RFC 1/4] media: v4l2-subdev: Introduce post_register() core op Jacopo Mondi
@ 2021-06-17 17:16 ` Jacopo Mondi
  2021-07-06  7:47   ` Hans Verkuil
  2021-06-17 17:16 ` [RFC 3/4] media: v4l2-async: Call post_register() subdev op Jacopo Mondi
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Jacopo Mondi @ 2021-06-17 17:16 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Jacopo Mondi, linux-media, linux-renesas-soc

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)
+
 /**
  * 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;
 };
 
 /**
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC 3/4] media: v4l2-async: Call post_register() subdev op
  2021-06-17 17:16 [RFC 0/4] media: Introduce post_register() subdev operation Jacopo Mondi
  2021-06-17 17:16 ` [RFC 1/4] media: v4l2-subdev: Introduce post_register() core op Jacopo Mondi
  2021-06-17 17:16 ` [RFC 2/4] media: v4l2-async: Add notifier flags Jacopo Mondi
@ 2021-06-17 17:16 ` Jacopo Mondi
  2021-06-17 17:16 ` [RFC 4/4] media: i2c: gmsl: Defer camera intialization Jacopo Mondi
  2021-06-18 10:21 ` [RFC 0/4] media: Introduce post_register() subdev operation Hans Verkuil
  4 siblings, 0 replies; 8+ messages in thread
From: Jacopo Mondi @ 2021-06-17 17:16 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Jacopo Mondi, linux-media, linux-renesas-soc

Call the "post_register()" subdev operation on a just registered
subdevice, immediately after having called the 'bound' notifier
operation on the parent.

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

diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c
index 0836e01e59ca..8656b50ee799 100644
--- a/drivers/media/v4l2-core/v4l2-async.c
+++ b/drivers/media/v4l2-core/v4l2-async.c
@@ -293,6 +293,16 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier,
 		return ret;
 	}
 
+	if (!(notifier->flags & V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER) &&
+	    sd->ops->core && sd->ops->core->post_register) {
+		ret = sd->ops->core->post_register(sd);
+		if (ret) {
+			v4l2_async_notifier_call_unbind(notifier, sd, sd->asd);
+			v4l2_device_unregister_subdev(sd);
+			return ret;
+		}
+	}
+
 	/* Remove from the waiting list */
 	list_del(&asd->list);
 	sd->asd = asd;
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC 4/4] media: i2c: gmsl: Defer camera intialization
  2021-06-17 17:16 [RFC 0/4] media: Introduce post_register() subdev operation Jacopo Mondi
                   ` (2 preceding siblings ...)
  2021-06-17 17:16 ` [RFC 3/4] media: v4l2-async: Call post_register() subdev op Jacopo Mondi
@ 2021-06-17 17:16 ` Jacopo Mondi
  2021-06-18 10:21 ` [RFC 0/4] media: Introduce post_register() subdev operation Hans Verkuil
  4 siblings, 0 replies; 8+ messages in thread
From: Jacopo Mondi @ 2021-06-17 17:16 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Jacopo Mondi, linux-media, linux-renesas-soc

Use the post_register() callback to defer the bulk of the camera
modules initialization. The deserializer driver waits for all the
registered camera to probe, increases its channel amplitude and the
calls the subdevice post_register() operation that completes the
initialization procedure.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
---
 drivers/media/i2c/max9286.c | 21 ++++++++--
 drivers/media/i2c/rdacm20.c | 81 +++++++++++++++++++++----------------
 2 files changed, 65 insertions(+), 37 deletions(-)

diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
index 34582199452b..2c9cbb3079ac 100644
--- a/drivers/media/i2c/max9286.c
+++ b/drivers/media/i2c/max9286.c
@@ -567,17 +567,31 @@ static int max9286_notify_bound(struct v4l2_async_notifier *notifier,
 	if (priv->bound_sources != priv->source_mask)
 		return 0;
 
+	/*
+	 * Once all cameras have probed, increase the channel amplitude
+	 * to compensate for the remote noise immunity threshold and call
+	 * the camera post_register operation to complete initialization with
+	 * noise immunity enabled.
+	 */
+	max9286_reverse_channel_setup(priv, MAX9286_REV_AMP_HIGH);
+	for_each_source(priv, source) {
+		ret = v4l2_subdev_call(source->sd, core, post_register);
+		if (ret) {
+			dev_err(&priv->client->dev,
+					"Failed to initialize camera device %u\n",
+					index);
+			return ret;
+		}
+	}
+
 	/*
 	 * All enabled sources have probed and enabled their reverse control
 	 * channels:
 	 *
-	 * - Increase the reverse channel amplitude to compensate for the
-	 *   remote ends high threshold
 	 * - Verify all configuration links are properly detected
 	 * - Disable auto-ack as communication on the control channel are now
 	 *   stable.
 	 */
-	max9286_reverse_channel_setup(priv, MAX9286_REV_AMP_HIGH);
 	max9286_check_config_link(priv, priv->source_mask);
 	max9286_configure_i2c(priv, false);
 
@@ -630,6 +644,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv)
 	}
 
 	priv->notifier.ops = &max9286_notify_ops;
+	priv->notifier.flags |= V4L2_ASYNC_NOTIFIER_SKIP_POST_REGISTER;
 
 	ret = v4l2_async_subdev_notifier_register(&priv->sd, &priv->notifier);
 	if (ret) {
diff --git a/drivers/media/i2c/rdacm20.c b/drivers/media/i2c/rdacm20.c
index cb725c2778c0..9f6ccfc9a78a 100644
--- a/drivers/media/i2c/rdacm20.c
+++ b/drivers/media/i2c/rdacm20.c
@@ -435,44 +435,12 @@ static int rdacm20_get_fmt(struct v4l2_subdev *sd,
 	return 0;
 }
 
-static const struct v4l2_subdev_video_ops rdacm20_video_ops = {
-	.s_stream	= rdacm20_s_stream,
-};
-
-static const struct v4l2_subdev_pad_ops rdacm20_subdev_pad_ops = {
-	.enum_mbus_code = rdacm20_enum_mbus_code,
-	.get_fmt	= rdacm20_get_fmt,
-	.set_fmt	= rdacm20_get_fmt,
-};
-
-static const struct v4l2_subdev_ops rdacm20_subdev_ops = {
-	.video		= &rdacm20_video_ops,
-	.pad		= &rdacm20_subdev_pad_ops,
-};
-
-static int rdacm20_initialize(struct rdacm20_device *dev)
+static int rdacm20_post_register(struct v4l2_subdev *sd)
 {
+	struct rdacm20_device *dev = sd_to_rdacm20(sd);
 	unsigned int retry = 3;
 	int ret;
 
-	max9271_wake_up(&dev->serializer);
-
-	/* Serial link disabled during config as it needs a valid pixel clock. */
-	ret = max9271_set_serial_link(&dev->serializer, false);
-	if (ret)
-		return ret;
-
-	/*
-	 *  Ensure that we have a good link configuration before attempting to
-	 *  identify the device.
-	 */
-	ret = max9271_configure_i2c(&dev->serializer,
-				    MAX9271_I2CSLVSH_469NS_234NS |
-				    MAX9271_I2CSLVTO_1024US |
-				    MAX9271_I2CMSTBT_105KBPS);
-	if (ret)
-		return ret;
-
 	/*
 	 * Hold OV10635 in reset during max9271 configuration. The reset signal
 	 * has to be asserted for at least 200 microseconds.
@@ -549,6 +517,51 @@ static int rdacm20_initialize(struct rdacm20_device *dev)
 
 	dev_info(dev->dev, "Identified RDACM20 camera module\n");
 
+	return 0;
+}
+
+static const struct v4l2_subdev_video_ops rdacm20_video_ops = {
+	.s_stream	= rdacm20_s_stream,
+};
+
+static const struct v4l2_subdev_pad_ops rdacm20_subdev_pad_ops = {
+	.enum_mbus_code = rdacm20_enum_mbus_code,
+	.get_fmt	= rdacm20_get_fmt,
+	.set_fmt	= rdacm20_get_fmt,
+};
+
+static const struct v4l2_subdev_core_ops rdacm20_core_ops = {
+	.post_register	= rdacm20_post_register,
+};
+
+static const struct v4l2_subdev_ops rdacm20_subdev_ops = {
+	.core		= &rdacm20_core_ops,
+	.video		= &rdacm20_video_ops,
+	.pad		= &rdacm20_subdev_pad_ops,
+};
+
+static int rdacm20_initialize(struct rdacm20_device *dev)
+{
+	int ret;
+
+	max9271_wake_up(&dev->serializer);
+
+	/* Serial link disabled during config as it needs a valid pixel clock. */
+	ret = max9271_set_serial_link(&dev->serializer, false);
+	if (ret)
+		return ret;
+
+	/*
+	 *  Ensure that we have a good link configuration before attempting to
+	 *  identify the device.
+	 */
+	ret = max9271_configure_i2c(&dev->serializer,
+				    MAX9271_I2CSLVSH_469NS_234NS |
+				    MAX9271_I2CSLVTO_1024US |
+				    MAX9271_I2CMSTBT_105KBPS);
+	if (ret)
+		return ret;
+
 	/*
 	 * Set reverse channel high threshold to increase noise immunity.
 	 *
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [RFC 0/4] media: Introduce post_register() subdev operation
  2021-06-17 17:16 [RFC 0/4] media: Introduce post_register() subdev operation Jacopo Mondi
                   ` (3 preceding siblings ...)
  2021-06-17 17:16 ` [RFC 4/4] media: i2c: gmsl: Defer camera intialization Jacopo Mondi
@ 2021-06-18 10:21 ` Hans Verkuil
  2021-07-05 14:58   ` Jacopo Mondi
  4 siblings, 1 reply; 8+ messages in thread
From: Hans Verkuil @ 2021-06-18 10:21 UTC (permalink / raw)
  To: Jacopo Mondi; +Cc: linux-media, linux-renesas-soc

On 17/06/2021 19:16, Jacopo Mondi wrote:
> Hello Hans,
>    this is the result of the discussion we had yesterday, sent out just to
> have a taste of how it looks like.
> 
> I won't pretend I like the outcome: it feels a bit hackish and meant to support
> this precise use case.
> 
> Compared to the proposal to resurect 'init()' it indeed has the advantage that
> the subdevice driver works in both deffered and non-deferred mode, but the
> notifier flags seems really custom.
> 
> Also, being the new flag part of the notifier it won't be available for i2c
> subdevs.
> 
> What do you think ? Does the result match your understanding ?

That's what I came up with, yes. I think some of the names can be improved,
but otherwise the mechanism is what I had in mind.

Regards,

	Hans

> 
> Thanks
>   j
> 
> Jacopo Mondi (4):
>   media: v4l2-subdev: Introduce post_register() core op
>   media: v4l2-async: Add notifier flags
>   media: v4l2-async: Call post_register() subdev op
>   media: i2c: gmsl: Defer camera intialization
> 
>  drivers/media/i2c/max9286.c          | 21 ++++++--
>  drivers/media/i2c/rdacm20.c          | 81 ++++++++++++++++------------
>  drivers/media/v4l2-core/v4l2-async.c | 11 ++++
>  include/media/v4l2-async.h           | 10 ++++
>  include/media/v4l2-subdev.h          |  3 ++
>  5 files changed, 89 insertions(+), 37 deletions(-)
> 
> --
> 2.31.1
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC 0/4] media: Introduce post_register() subdev operation
  2021-06-18 10:21 ` [RFC 0/4] media: Introduce post_register() subdev operation Hans Verkuil
@ 2021-07-05 14:58   ` Jacopo Mondi
  0 siblings, 0 replies; 8+ messages in thread
From: Jacopo Mondi @ 2021-07-05 14:58 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Jacopo Mondi, linux-media, linux-renesas-soc

Hi Hans,

On Fri, Jun 18, 2021 at 12:21:43PM +0200, Hans Verkuil wrote:
> On 17/06/2021 19:16, Jacopo Mondi wrote:
> > Hello Hans,
> >    this is the result of the discussion we had yesterday, sent out just to
> > have a taste of how it looks like.
> >
> > I won't pretend I like the outcome: it feels a bit hackish and meant to support
> > this precise use case.
> >
> > Compared to the proposal to resurect 'init()' it indeed has the advantage that
> > the subdevice driver works in both deffered and non-deferred mode, but the
> > notifier flags seems really custom.
> >
> > Also, being the new flag part of the notifier it won't be available for i2c
> > subdevs.
> >
> > What do you think ? Does the result match your understanding ?
>
> That's what I came up with, yes. I think some of the names can be improved,
> but otherwise the mechanism is what I had in mind.

Great then! Do you have any suggestions on names that can help moving
forward ?

Thanks
  j

>
> Regards,
>
> 	Hans
>
> >
> > Thanks
> >   j
> >
> > Jacopo Mondi (4):
> >   media: v4l2-subdev: Introduce post_register() core op
> >   media: v4l2-async: Add notifier flags
> >   media: v4l2-async: Call post_register() subdev op
> >   media: i2c: gmsl: Defer camera intialization
> >
> >  drivers/media/i2c/max9286.c          | 21 ++++++--
> >  drivers/media/i2c/rdacm20.c          | 81 ++++++++++++++++------------
> >  drivers/media/v4l2-core/v4l2-async.c | 11 ++++
> >  include/media/v4l2-async.h           | 10 ++++
> >  include/media/v4l2-subdev.h          |  3 ++
> >  5 files changed, 89 insertions(+), 37 deletions(-)
> >
> > --
> > 2.31.1
> >
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC 2/4] media: v4l2-async: Add notifier flags
  2021-06-17 17:16 ` [RFC 2/4] media: v4l2-async: Add notifier flags Jacopo Mondi
@ 2021-07-06  7:47   ` Hans Verkuil
  0 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2021-07-06  7:47 UTC (permalink / raw)
  To: Jacopo Mondi; +Cc: linux-media, linux-renesas-soc

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;
>  };
>  
>  /**
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-07-06  7:47 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 17:16 [RFC 0/4] media: Introduce post_register() subdev operation Jacopo Mondi
2021-06-17 17:16 ` [RFC 1/4] media: v4l2-subdev: Introduce post_register() core op Jacopo Mondi
2021-06-17 17:16 ` [RFC 2/4] media: v4l2-async: Add notifier flags Jacopo Mondi
2021-07-06  7:47   ` Hans Verkuil
2021-06-17 17:16 ` [RFC 3/4] media: v4l2-async: Call post_register() subdev op Jacopo Mondi
2021-06-17 17:16 ` [RFC 4/4] media: i2c: gmsl: Defer camera intialization Jacopo Mondi
2021-06-18 10:21 ` [RFC 0/4] media: Introduce post_register() subdev operation Hans Verkuil
2021-07-05 14:58   ` Jacopo Mondi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.