Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47ba7dba authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[media] marvell-ccic: fix the bytesperline and sizeimage calculations



These were calculated incorrectly for the planar formats.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Acked-by: default avatarJonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 75eb9847
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -127,21 +127,21 @@ static struct mcam_format_struct {
		.desc		= "YUV 4:2:2 PLANAR",
		.pixelformat	= V4L2_PIX_FMT_YUV422P,
		.mbus_code	= MEDIA_BUS_FMT_YUYV8_2X8,
		.bpp		= 2,
		.bpp		= 1,
		.planar		= true,
	},
	{
		.desc		= "YUV 4:2:0 PLANAR",
		.pixelformat	= V4L2_PIX_FMT_YUV420,
		.mbus_code	= MEDIA_BUS_FMT_YUYV8_2X8,
		.bpp		= 2,
		.bpp		= 1,
		.planar		= true,
	},
	{
		.desc		= "YVU 4:2:0 PLANAR",
		.pixelformat	= V4L2_PIX_FMT_YVU420,
		.mbus_code	= MEDIA_BUS_FMT_YUYV8_2X8,
		.bpp		= 2,
		.bpp		= 1,
		.planar		= true,
	},
	{
@@ -764,6 +764,7 @@ static void mcam_ctlr_image(struct mcam_camera *cam)
	default:
		widthy = fmt->bytesperline;
		widthuv = 0;
		break;
	}

	mcam_reg_write_mask(cam, REG_IMGPITCH, widthuv << 16 | widthy,
@@ -1370,16 +1371,19 @@ static int mcam_vidioc_try_fmt_vid_cap(struct file *filp, void *priv,
	v4l2_fill_mbus_format(&mbus_fmt, pix, f->mbus_code);
	ret = sensor_call(cam, video, try_mbus_fmt, &mbus_fmt);
	v4l2_fill_pix_format(pix, &mbus_fmt);
	pix->bytesperline = pix->width * f->bpp;
	switch (f->pixelformat) {
	case V4L2_PIX_FMT_YUV422P:
		pix->sizeimage = pix->height * pix->bytesperline * 2;
		break;
	case V4L2_PIX_FMT_YUV420:
	case V4L2_PIX_FMT_YVU420:
		pix->bytesperline = pix->width * 3 / 2;
		pix->sizeimage = pix->height * pix->bytesperline * 3 / 2;
		break;
	default:
		pix->bytesperline = pix->width * f->bpp;
		pix->sizeimage = pix->height * pix->bytesperline;
		break;
	}
	pix->sizeimage = pix->height * pix->bytesperline;
	pix->colorspace = V4L2_COLORSPACE_SRGB;
	return ret;
}