aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
diff options
context:
space:
mode:
authorLiu Ying <Ying.Liu@freescale.com>2011-05-24 10:06:03 +0800
committerEric Miao <eric.miao@linaro.org>2011-08-16 12:37:04 +0800
commit6ea775b85aae7d00436bccb315425026d72d5305 (patch)
treea7290155d4399bbb25f83bf9cd3595044962594b /drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
parent747dbf24704a6fb6f6f83d73c55aebdaedd49af8 (diff)
ENGR00142551-3 mxc_v4l2: change IPU interface for triple buffer
This patch changes IPU interface for MXC V4L2 to align with IPUv3 triple buffer support. When V4L2 is used, we'll change to use double buffer for display channel via internal framebuffer interface. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit db97e4d616f105bec1cfadf33e842fc624ecf0d5) Signed-off-by: Richard Zhao <richard.zhao@freescale.com> Signed-off-by: Eric Miao <eric.miao@linaro.org>
Diffstat (limited to 'drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c')
-rw-r--r--drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c b/drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
index 95b6ee6a8fb6..6f6b7d46fc0c 100644
--- a/drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
+++ b/drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
@@ -94,6 +94,7 @@ static int prpvf_start(void *private)
fbvar.yres = cam->win.w.height;
fbvar.yres_virtual = cam->win.w.height * 2;
fbvar.yoffset = 0;
+ fbvar.accel_flags = FB_ACCEL_DOUBLE_FLAG;
fbvar.activate |= FB_ACTIVATE_FORCE;
fb_set_var(fbi, &fbvar);
@@ -179,8 +180,9 @@ static int prpvf_start(void *private)
vf.csi_prp_vf_mem.out_width,
vf.csi_prp_vf_mem.out_height,
vf.csi_prp_vf_mem.out_width,
- IPU_ROTATE_NONE, cam->vf_bufs[0],
- cam->vf_bufs[1], 0, 0);
+ IPU_ROTATE_NONE,
+ cam->vf_bufs[0], cam->vf_bufs[1],
+ 0, 0, 0);
if (err != 0) {
goto out_3;
}
@@ -196,8 +198,10 @@ static int prpvf_start(void *private)
vf.csi_prp_vf_mem.out_width,
vf.csi_prp_vf_mem.out_height,
vf.csi_prp_vf_mem.out_width,
- cam->vf_rotation, cam->vf_bufs[0],
- cam->vf_bufs[1], 0, 0);
+ cam->vf_rotation,
+ cam->vf_bufs[0],
+ cam->vf_bufs[1],
+ 0, 0, 0);
if (err != 0) {
printk(KERN_ERR "Error MEM_ROT_VF_MEM input buffer\n");
goto out_2;
@@ -219,7 +223,7 @@ static int prpvf_start(void *private)
fbi->fix.smem_start +
(fbi->fix.line_length *
fbi->var.yres),
- fbi->fix.smem_start, 0, 0);
+ fbi->fix.smem_start, 0, 0, 0);
if (err != 0) {
printk(KERN_ERR "Error MEM_ROT_VF_MEM output buffer\n");
@@ -256,7 +260,7 @@ static int prpvf_start(void *private)
fbi->fix.smem_start +
(fbi->fix.line_length *
fbi->var.yres),
- fbi->fix.smem_start, 0, 0);
+ fbi->fix.smem_start, 0, 0, 0);
if (err != 0) {
printk(KERN_ERR "Error initializing CSI_PRP_VF_MEM\n");
goto out_4;
@@ -354,6 +358,7 @@ static int prpvf_stop(void *private)
/* Set the overlay frame buffer std to what it is used to be */
fbvar = fbi->var;
+ fbvar.accel_flags = FB_ACCEL_TRIPLE_FLAG;
fbvar.nonstd = cam->fb_origin_std;
fbvar.activate |= FB_ACTIVATE_FORCE;
fb_set_var(fbi, &fbvar);