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

These were calculated incorrectly for the planar formats.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Hans Verkuil 2015-03-09 17:14:36 -03:00 committed by Mauro Carvalho Chehab
parent 75eb984714
commit 47ba7dbab6

View File

@ -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;
}