]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: vimc: Centralize subdev internal_ops initialization
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Wed, 24 Apr 2024 23:57:37 +0000 (02:57 +0300)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 26 Jun 2024 14:39:34 +0000 (16:39 +0200)
Initialize the subdev internal_ops field in the vimc_ent_sd_register()
function. This handles the internal ops the same way as the subdev ops,
and prepares for moving to the V4L2 subdev active state API.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/test-drivers/vimc/vimc-common.c
drivers/media/test-drivers/vimc/vimc-common.h
drivers/media/test-drivers/vimc/vimc-debayer.c
drivers/media/test-drivers/vimc/vimc-lens.c
drivers/media/test-drivers/vimc/vimc-scaler.c
drivers/media/test-drivers/vimc/vimc-sensor.c

index 2e72974e35b485582af0708493aab038f5b4695a..3da2271215c679dfb52e9a8bc896a33e03b36bed 100644 (file)
@@ -358,6 +358,7 @@ int vimc_ent_sd_register(struct vimc_ent_device *ved,
                         u32 function,
                         u16 num_pads,
                         struct media_pad *pads,
+                        const struct v4l2_subdev_internal_ops *int_ops,
                         const struct v4l2_subdev_ops *sd_ops)
 {
        int ret;
@@ -367,6 +368,7 @@ int vimc_ent_sd_register(struct vimc_ent_device *ved,
 
        /* Initialize the subdev */
        v4l2_subdev_init(sd, sd_ops);
+       sd->internal_ops = int_ops;
        sd->entity.function = function;
        sd->entity.ops = &vimc_ent_sd_mops;
        sd->owner = THIS_MODULE;
index 6a76717e038498f95eed7dfe2a61ff6d36950105..7a45a2117748ed9fa5842d3a7f096318d7fbb7ec 100644 (file)
@@ -215,6 +215,7 @@ const struct vimc_pix_map *vimc_pix_map_by_pixelformat(u32 pixelformat);
  * @num_pads:  number of pads to initialize
  * @pads:      the array of pads of the entity, the caller should set the
  *             flags of the pads
+ * @int_ops:   pointer to &struct v4l2_subdev_internal_ops.
  * @sd_ops:    pointer to &struct v4l2_subdev_ops.
  *
  * Helper function initialize and register the struct vimc_ent_device and struct
@@ -227,6 +228,7 @@ int vimc_ent_sd_register(struct vimc_ent_device *ved,
                         u32 function,
                         u16 num_pads,
                         struct media_pad *pads,
+                        const struct v4l2_subdev_internal_ops *int_ops,
                         const struct v4l2_subdev_ops *sd_ops);
 
 /**
index e2f12a7fb58fd2a4a71daac1b20c7c366959f27b..d4ca57b3672d1d11377322cc1f928c0561f37fec 100644 (file)
@@ -591,12 +591,11 @@ static struct vimc_ent_device *vimc_debayer_add(struct vimc_device *vimc,
        ret = vimc_ent_sd_register(&vdebayer->ved, &vdebayer->sd, v4l2_dev,
                                   vcfg_name,
                                   MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV, 2,
-                                  vdebayer->pads, &vimc_debayer_ops);
+                                  vdebayer->pads, &vimc_debayer_internal_ops,
+                                  &vimc_debayer_ops);
        if (ret)
                goto err_free_hdl;
 
-       vdebayer->sd.internal_ops = &vimc_debayer_internal_ops;
-
        vdebayer->ved.process_frame = vimc_debayer_process_frame;
        vdebayer->ved.dev = vimc->mdev.dev;
        vdebayer->mean_win_size = vimc_debayer_ctrl_mean_win_size.def;
index e7d78fa8ccdbc2b472343a91976675a048bc0976..42c58a3e3f1bc4ead490135d8cd670e63d21a665 100644 (file)
@@ -72,7 +72,7 @@ static struct vimc_ent_device *vimc_lens_add(struct vimc_device *vimc,
 
        ret = vimc_ent_sd_register(&vlens->ved, &vlens->sd, v4l2_dev,
                                   vcfg_name, MEDIA_ENT_F_LENS, 0,
-                                  NULL, &vimc_lens_ops);
+                                  NULL, NULL, &vimc_lens_ops);
        if (ret)
                goto err_free_hdl;
 
index 013cd84f82bead420ed06731de079ad89ba73769..4f9c44a663e1b9b4c3939630e3f5c7239c2d0020 100644 (file)
@@ -421,14 +421,13 @@ static struct vimc_ent_device *vimc_scaler_add(struct vimc_device *vimc,
        ret = vimc_ent_sd_register(&vscaler->ved, &vscaler->sd, v4l2_dev,
                                   vcfg_name,
                                   MEDIA_ENT_F_PROC_VIDEO_SCALER, 2,
-                                  vscaler->pads, &vimc_scaler_ops);
+                                  vscaler->pads, &vimc_scaler_internal_ops,
+                                  &vimc_scaler_ops);
        if (ret) {
                kfree(vscaler);
                return ERR_PTR(ret);
        }
 
-       vscaler->sd.internal_ops = &vimc_scaler_internal_ops;
-
        vscaler->ved.process_frame = vimc_scaler_process_frame;
        vscaler->ved.dev = vimc->mdev.dev;
 
index 11df18332865e5d048740ecf090f857658ab5ef9..5c31d9435cdd71edd730382f4973bb9490b3179a 100644 (file)
@@ -424,12 +424,10 @@ static struct vimc_ent_device *vimc_sensor_add(struct vimc_device *vimc,
        ret = vimc_ent_sd_register(&vsensor->ved, &vsensor->sd, v4l2_dev,
                                   vcfg_name,
                                   MEDIA_ENT_F_CAM_SENSOR, 1, &vsensor->pad,
-                                  &vimc_sensor_ops);
+                                  &vimc_sensor_internal_ops, &vimc_sensor_ops);
        if (ret)
                goto err_free_tpg;
 
-       vsensor->sd.internal_ops = &vimc_sensor_internal_ops;
-
        vsensor->ved.process_frame = vimc_sensor_process_frame;
        vsensor->ved.dev = vimc->mdev.dev;