On Thu Sep 3 13:07:53 2026 +0300, Antti Laakso wrote:
> Sensor device nodes are created in the complete callback, which is only
> called when all devices are successfully registered. If any device fails
> to register, e.g. due to a missing driver, the complete callback is
> never invoked and sensor nodes are not created.
> 
> Create sensor device nodes in the bound callback instead, ensuring they
> are available as soon as sensor is bound regardless of other devices
> registration status.
> 
> Fixes: 8e2b43d2c10b ("media: i2c: cvs: Add driver of Intel Computer Vision 
> Sensing Controller(CVS)")
> Cc: [email protected]
> Signed-off-by: Antti Laakso <[email protected]>
> Signed-off-by: Sakari Ailus <[email protected]>

Patch committed.

Thanks,
Sakari Ailus

 drivers/media/i2c/cvs/v4l2.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

---

diff --git a/drivers/media/i2c/cvs/v4l2.c b/drivers/media/i2c/cvs/v4l2.c
index 9fadca7a3bee..863112cde266 100644
--- a/drivers/media/i2c/cvs/v4l2.c
+++ b/drivers/media/i2c/cvs/v4l2.c
@@ -13,6 +13,7 @@
 #include <media/v4l2-async.h>
 #include <media/v4l2-common.h>
 #include <media/v4l2-ctrls.h>
+#include <media/v4l2-device.h>
 #include <media/v4l2-event.h>
 #include <media/v4l2-fwnode.h>
 #include <media/v4l2-mc.h>
@@ -400,7 +401,7 @@ static int cvs_csi_notify_bound(struct v4l2_async_notifier 
*notifier,
                                struct v4l2_async_connection *asc)
 {
        struct icvs *ctx = notifier_to_csi(notifier);
-       int pad;
+       int pad, ret;
 
        pad = media_entity_get_fwnode_pad(&sd->entity, asc->match.fwnode,
                                          MEDIA_PAD_FL_SOURCE);
@@ -409,9 +410,13 @@ static int cvs_csi_notify_bound(struct v4l2_async_notifier 
*notifier,
 
        ctx->remote = &sd->entity.pads[pad];
 
-       return media_create_pad_link(&sd->entity, pad, &ctx->subdev.entity,
-                                    ICVS_CSI_PAD_SINK, MEDIA_LNK_FL_ENABLED |
-                                    MEDIA_LNK_FL_IMMUTABLE);
+       ret = media_create_pad_link(&sd->entity, pad, &ctx->subdev.entity,
+                                   ICVS_CSI_PAD_SINK, MEDIA_LNK_FL_ENABLED |
+                                   MEDIA_LNK_FL_IMMUTABLE);
+       if (ret)
+               return ret;
+
+       return v4l2_device_register_subdev_nodes(sd->v4l2_dev);
 }
 
 /**
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to