Commit e77c8f6f authored by Paul Kocialkowski's avatar Paul Kocialkowski Committed by Mauro Carvalho Chehab
Browse files

media: sun6i-csi: Get bridge subdev directly in capture stream ops



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: default avatarPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Acked-by: default avatarJernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 1fd07a80
Loading
Loading
Loading
Loading
+3 −27
Original line number Diff line number Diff line
@@ -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,11 +864,9 @@ 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);

	sun6i_csi_capture_disable(csi_dev);