diff options
author | 2015-03-09 17:14:36 -0300 | |
---|---|---|
committer | 2015-05-01 07:49:37 -0300 | |
commit | 47ba7dbab6338a9f3f4df23ec6e26cc2e0937144 (patch) | |
tree | c73a287eed1478f8071f1d5930a881a80bfbded8 /drivers/media/platform | |
parent | [media] ov7670: use colorspace SRGB instead of JPEG (diff) | |
download | linux-47ba7dbab6338a9f3f4df23ec6e26cc2e0937144.tar.gz linux-47ba7dbab6338a9f3f4df23ec6e26cc2e0937144.tar.bz2 linux-47ba7dbab6338a9f3f4df23ec6e26cc2e0937144.zip |
[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>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r-- | drivers/media/platform/marvell-ccic/mcam-core.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c index 1a326102791f..9343051c984f 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core.c +++ b/drivers/media/platform/marvell-ccic/mcam-core.c @@ -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; } |