Commit 024b2f9c authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

media: imx: capture: Move default format init to a separate function



To prepare for more complex default format initialization and keep
imx_media_capture_device_register() simple, extract the format
initialization code to a separate function.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarRui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 0d966feb
Loading
Loading
Loading
Loading
+28 −14
Original line number Diff line number Diff line
@@ -709,13 +709,37 @@ void imx_media_capture_device_error(struct imx_media_video_dev *vdev)
}
EXPORT_SYMBOL_GPL(imx_media_capture_device_error);

static int capture_init_format(struct capture_priv *priv)
{
	struct v4l2_subdev_format fmt_src = {
		.pad = priv->src_sd_pad,
		.which = V4L2_SUBDEV_FORMAT_ACTIVE,
	};
	struct imx_media_video_dev *vdev = &priv->vdev;
	int ret;

	ret = v4l2_subdev_call(priv->src_sd, pad, get_fmt, NULL, &fmt_src);
	if (ret) {
		dev_err(priv->dev, "failed to get source format\n");
		return ret;
	}

	imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL);
	vdev->compose.width = fmt_src.format.width;
	vdev->compose.height = fmt_src.format.height;

	vdev->cc = imx_media_find_pixel_format(vdev->fmt.pixelformat,
					       PIXFMT_SEL_ANY);

	return 0;
}

int imx_media_capture_device_register(struct imx_media_video_dev *vdev)
{
	struct capture_priv *priv = to_capture_priv(vdev);
	struct v4l2_subdev *sd = priv->src_sd;
	struct v4l2_device *v4l2_dev = sd->v4l2_dev;
	struct video_device *vfd = vdev->vfd;
	struct v4l2_subdev_format fmt_src;
	int ret;

	/* get media device */
@@ -723,20 +747,10 @@ int imx_media_capture_device_register(struct imx_media_video_dev *vdev)

	vfd->v4l2_dev = v4l2_dev;

	/* setup default format */
	fmt_src.pad = priv->src_sd_pad;
	fmt_src.which = V4L2_SUBDEV_FORMAT_ACTIVE;
	ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, &fmt_src);
	if (ret) {
		dev_err(priv->dev, "failed to get src_sd format\n");
	/* Initialize the default format and compose rectangle. */
	ret = capture_init_format(priv);
	if (ret < 0)
		return ret;
	}

	imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL);
	vdev->compose.width = fmt_src.format.width;
	vdev->compose.height = fmt_src.format.height;
	vdev->cc = imx_media_find_pixel_format(vdev->fmt.pixelformat,
					       PIXFMT_SEL_ANY);

	/* Register the video device. */
	ret = video_register_device(vfd, VFL_TYPE_VIDEO, -1);