media: sun6i-csi: Get bridge subdev directly in capture stream ops
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Thu, 3 Nov 2022 16:31:05 +0000 (16:31 +0000)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 25 Nov 2022 07:14:31 +0000 (07:14 +0000)
The remote subdev connected to the capture video device is always
our bridge, so get the bridge subdev directly instead of using a
dedicated helper (which is removed by this commit).

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c

index 239875f2b5300e0754842ce60836f1140a7aa7e5..e59a219ca480a30b68e06d86e522db16998f5aee 100644 (file)
@@ -42,22 +42,6 @@ void sun6i_csi_capture_format(struct sun6i_csi_device *csi_dev,
                *field = csi_dev->capture.format.fmt.pix.field;
 }
 
-static struct v4l2_subdev *
-sun6i_csi_capture_remote_subdev(struct sun6i_csi_capture *capture, u32 *pad)
-{
-       struct media_pad *remote;
-
-       remote = media_pad_remote_pad_first(&capture->pad);
-
-       if (!remote || !is_media_entity_v4l2_subdev(remote->entity))
-               return NULL;
-
-       if (pad)
-               *pad = remote->index;
-
-       return media_entity_to_v4l2_subdev(remote->entity);
-}
-
 /* Format */
 
 static const struct sun6i_csi_capture_format sun6i_csi_capture_formats[] = {
@@ -822,8 +806,8 @@ static int sun6i_csi_capture_start_streaming(struct vb2_queue *queue,
        struct sun6i_csi_capture *capture = &csi_dev->capture;
        struct sun6i_csi_capture_state *state = &capture->state;
        struct video_device *video_dev = &capture->video_dev;
+       struct v4l2_subdev *subdev = &csi_dev->bridge.subdev;
        struct device *dev = csi_dev->dev;
-       struct v4l2_subdev *subdev;
        int ret;
 
        state->sequence = 0;
@@ -832,12 +816,6 @@ static int sun6i_csi_capture_start_streaming(struct vb2_queue *queue,
        if (ret < 0)
                goto error_state;
 
-       subdev = sun6i_csi_capture_remote_subdev(capture, NULL);
-       if (!subdev) {
-               ret = -EINVAL;
-               goto error_media_pipeline;
-       }
-
        /* PM */
 
        ret = pm_runtime_resume_and_get(dev);
@@ -886,12 +864,10 @@ static void sun6i_csi_capture_stop_streaming(struct vb2_queue *queue)
 {
        struct sun6i_csi_device *csi_dev = vb2_get_drv_priv(queue);
        struct sun6i_csi_capture *capture = &csi_dev->capture;
+       struct v4l2_subdev *subdev = &csi_dev->bridge.subdev;
        struct device *dev = csi_dev->dev;
-       struct v4l2_subdev *subdev;
 
-       subdev = sun6i_csi_capture_remote_subdev(capture, NULL);
-       if (subdev)
-               v4l2_subdev_call(subdev, video, s_stream, 0);
+       v4l2_subdev_call(subdev, video, s_stream, 0);
 
        sun6i_csi_capture_disable(csi_dev);
        sun6i_csi_capture_irq_disable(csi_dev);