]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: ccs: Fix setting initial sub-device state
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 30 Dec 2025 17:22:02 +0000 (19:22 +0200)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Wed, 14 Jan 2026 22:33:04 +0000 (23:33 +0100)
Fix setting sub-device state for non-source sub-devices.

Fixes: 5755be5f15d9 ("media: v4l2-subdev: Rename .init_cfg() operation to .init_state()")
Cc: stable@vger.kernel.org # for v6.8 and later
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/i2c/ccs/ccs-core.c

index c7b46d0fba49f71a9ed31dc0ac233ac9caa92693..3fd9ceaead215a7df9a9f42c462dddf97f733ac2 100644 (file)
@@ -2940,6 +2940,8 @@ static void ccs_cleanup(struct ccs_sensor *sensor)
        ccs_free_controls(sensor);
 }
 
+static const struct v4l2_subdev_internal_ops ccs_internal_ops;
+
 static int ccs_init_subdev(struct ccs_sensor *sensor,
                           struct ccs_subdev *ssd, const char *name,
                           unsigned short num_pads, u32 function,
@@ -2952,8 +2954,10 @@ static int ccs_init_subdev(struct ccs_sensor *sensor,
        if (!ssd)
                return 0;
 
-       if (ssd != sensor->src)
+       if (ssd != sensor->src) {
                v4l2_subdev_init(&ssd->sd, &ccs_ops);
+               ssd->sd.internal_ops = &ccs_internal_ops;
+       }
 
        ssd->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
        ssd->sd.entity.function = function;
@@ -3062,6 +3066,10 @@ static const struct media_entity_operations ccs_entity_ops = {
        .link_validate = v4l2_subdev_link_validate,
 };
 
+static const struct v4l2_subdev_internal_ops ccs_internal_ops = {
+       .init_state = ccs_init_state,
+};
+
 static const struct v4l2_subdev_internal_ops ccs_internal_src_ops = {
        .init_state = ccs_init_state,
        .registered = ccs_registered,