summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSheng Nan <b38800@freescale.com>2012-12-05 10:22:35 +0800
committerJason Liu <r64343@freescale.com>2012-12-12 19:12:15 +0800
commitbad76dac10fbbd0bfb9e387dd1435e84e8b4ad66 (patch)
tree86ef70a4eed0d7453c23f2663173114d6e1ba769
parente0f0b6b17f1384a191be4712bafe8f3a9f5c9122 (diff)
ENGR00235665: mxc_v4l2_capture: add YV12 format support in camera driver
Android CTS verifier have a must requirement for YV12 format. Since IPUv3 common driver has supported IPU_PIX_FMT_YVU420P pixel format, add the support of YV12 format in mxc_v4l2_capture. Signed-off-by: Sheng Nan <b38800@freescale.com>
-rw-r--r--drivers/media/video/mxc/capture/ipu_csi_enc.c2
-rw-r--r--drivers/media/video/mxc/capture/ipu_prp_enc.c3
-rw-r--r--drivers/media/video/mxc/capture/mxc_v4l2_capture.c2
3 files changed, 7 insertions, 0 deletions
diff --git a/drivers/media/video/mxc/capture/ipu_csi_enc.c b/drivers/media/video/mxc/capture/ipu_csi_enc.c
index 872598bd102d..2c8d8d01a971 100644
--- a/drivers/media/video/mxc/capture/ipu_csi_enc.c
+++ b/drivers/media/video/mxc/capture/ipu_csi_enc.c
@@ -104,6 +104,8 @@ static int csi_enc_setup(cam_data *cam)
if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV420)
pixel_fmt = IPU_PIX_FMT_YUV420P;
+ else if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_YVU420)
+ pixel_fmt = IPU_PIX_FMT_YVU420P;
else if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV422P)
pixel_fmt = IPU_PIX_FMT_YUV422P;
else if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_UYVY)
diff --git a/drivers/media/video/mxc/capture/ipu_prp_enc.c b/drivers/media/video/mxc/capture/ipu_prp_enc.c
index a3c90d53f2eb..e24b1b086d68 100644
--- a/drivers/media/video/mxc/capture/ipu_prp_enc.c
+++ b/drivers/media/video/mxc/capture/ipu_prp_enc.c
@@ -99,6 +99,9 @@ static int prp_enc_setup(cam_data *cam)
if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV420) {
enc.csi_prp_enc_mem.out_pixel_fmt = IPU_PIX_FMT_YUV420P;
pr_info("YUV420\n");
+ } else if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_YVU420) {
+ enc.csi_prp_enc_mem.out_pixel_fmt = IPU_PIX_FMT_YVU420P;
+ pr_info("YVU420\n");
} else if (cam->v2f.fmt.pix.pixelformat == V4L2_PIX_FMT_YUV422P) {
enc.csi_prp_enc_mem.out_pixel_fmt = IPU_PIX_FMT_YUV422P;
pr_info("YUV422P\n");
diff --git a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
index 4fd89b0335bf..3e9346d356cd 100644
--- a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
+++ b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
@@ -366,6 +366,7 @@ static inline int valid_mode(u32 palette)
(palette == V4L2_PIX_FMT_UYVY) ||
(palette == V4L2_PIX_FMT_YUYV) ||
(palette == V4L2_PIX_FMT_YUV420) ||
+ (palette == V4L2_PIX_FMT_YVU420) ||
(palette == V4L2_PIX_FMT_NV12));
}
@@ -881,6 +882,7 @@ static int mxc_v4l2_s_fmt(cam_data *cam, struct v4l2_format *f)
bytesperline = f->fmt.pix.width * 2;
break;
case V4L2_PIX_FMT_YUV420:
+ case V4L2_PIX_FMT_YVU420:
size = f->fmt.pix.width * f->fmt.pix.height * 3 / 2;
bytesperline = f->fmt.pix.width;
break;