diff options
author | Yuxi Sun <b36102@freescale.com> | 2011-05-16 14:25:41 +0800 |
---|---|---|
committer | YangYonggang <b31664@freescale.com> | 2012-03-14 16:02:57 +0800 |
commit | f50650c670e9eccafd40c518f00daa22d017a33e (patch) | |
tree | e54a225ec9225f8edc08974ebe825f7ffdc137ad | |
parent | 5f5f4440c0bcdf4ef74553f12166db41727df1b6 (diff) |
ENGR00143324-1 v4l2_capture: add camera rotate function
add four kinds of camera rotate function: rotate_none, rotate_vert
rotate_horiz, rotate_180
Signed-off-by: Yuxi Sun <b36102@freescale.com>
-rw-r--r-- | drivers/media/video/mxc/capture/ipu_csi_enc.c | 2 | ||||
-rw-r--r-- | drivers/media/video/mxc/capture/mxc_v4l2_capture.c | 20 | ||||
-rw-r--r-- | include/linux/mxc_v4l2.h | 5 |
3 files changed, 26 insertions, 1 deletions
diff --git a/drivers/media/video/mxc/capture/ipu_csi_enc.c b/drivers/media/video/mxc/capture/ipu_csi_enc.c index f7c3799400ae..7b43616a8514 100644 --- a/drivers/media/video/mxc/capture/ipu_csi_enc.c +++ b/drivers/media/video/mxc/capture/ipu_csi_enc.c @@ -171,7 +171,7 @@ static int csi_enc_setup(cam_data *cam) err = ipu_init_channel_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER, pixel_fmt, cam->v2f.fmt.pix.width, cam->v2f.fmt.pix.height, - cam->v2f.fmt.pix.width, IPU_ROTATE_NONE, + cam->v2f.fmt.pix.width, cam->rotation, dummy, dummy, 0, cam->offset.u_offset, cam->offset.v_offset); diff --git a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c index 75d35b116fe2..59a718957d1c 100644 --- a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c +++ b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c @@ -1100,6 +1100,26 @@ static int mxc_v4l2_s_ctrl(cam_data *cam, struct v4l2_control *c) case V4L2_MXC_ROTATE_90_LEFT: tmp_rotation = IPU_ROTATE_90_LEFT; break; + case V4L2_MXC_CAM_ROTATE_NONE: + if (vidioc_int_s_ctrl(cam->sensor, c)) { + ret = -EINVAL; + } + break; + case V4L2_MXC_CAM_ROTATE_VERT_FLIP: + if (vidioc_int_s_ctrl(cam->sensor, c)) { + ret = -EINVAL; + } + break; + case V4L2_MXC_CAM_ROTATE_HORIZ_FLIP: + if (vidioc_int_s_ctrl(cam->sensor, c)) { + ret = -EINVAL; + } + break; + case V4L2_MXC_CAM_ROTATE_180: + if (vidioc_int_s_ctrl(cam->sensor, c)) { + ret = -EINVAL; + } + break; default: ret = -EINVAL; } diff --git a/include/linux/mxc_v4l2.h b/include/linux/mxc_v4l2.h index dd106ff31265..ba2a8d9c96f2 100644 --- a/include/linux/mxc_v4l2.h +++ b/include/linux/mxc_v4l2.h @@ -41,6 +41,11 @@ #define V4L2_MXC_ROTATE_90_RIGHT_HFLIP 6 #define V4L2_MXC_ROTATE_90_LEFT 7 +#define V4L2_MXC_CAM_ROTATE_NONE 8 +#define V4L2_MXC_CAM_ROTATE_VERT_FLIP 9 +#define V4L2_MXC_CAM_ROTATE_HORIZ_FLIP 10 +#define V4L2_MXC_CAM_ROTATE_180 11 + struct v4l2_mxc_offset { uint32_t u_offset; uint32_t v_offset; |