*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[] = {
        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;
        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);
 {
        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);