summaryrefslogtreecommitdiff
path: root/drivers/video/mxc/mxc_ipuv3_fb.c
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2011-11-07 16:46:36 +0800
committerJason Liu <r64343@freescale.com>2012-07-20 13:17:28 +0800
commit66540f67e794fa58f7d32e8850e43676b471a312 (patch)
tree06f7e877a33efda546ffb34eac2958a242a71e31 /drivers/video/mxc/mxc_ipuv3_fb.c
parenta33c09fbc7327c05407d83d62df9ebd8daf6629f (diff)
ENGR00161526 mxc v4l2 output: 720p ic bypass output may failed in block
Repeat play with below cmdline: /unit_tests/mxc_v4l2_output.out -iw 1280 -ih 720 -ow 1280 -oh 720 -fr 10 -l 1 /unit_tests/720p.yuv Found the ipu update offset function cause this issue, it can be work-around by setting it only when value changed. Signed-off-by: Jason Chen <b02280@freescale.com>
Diffstat (limited to 'drivers/video/mxc/mxc_ipuv3_fb.c')
-rw-r--r--drivers/video/mxc/mxc_ipuv3_fb.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c
index 11e67449fea9..74e4077600b7 100644
--- a/drivers/video/mxc/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc/mxc_ipuv3_fb.c
@@ -1234,15 +1234,16 @@ mxcfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
}
/* update u/v offset */
- ipu_update_channel_offset(mxc_fbi->ipu, mxc_fbi->ipu_ch,
- IPU_INPUT_BUFFER,
- bpp_to_pixfmt(info),
- info->var.xres_virtual,
- info->var.yres_virtual,
- info->var.xres_virtual,
- 0, 0,
- var->yoffset,
- var->xoffset);
+ if (info->var.xres_virtual > info->var.xres)
+ ipu_update_channel_offset(mxc_fbi->ipu, mxc_fbi->ipu_ch,
+ IPU_INPUT_BUFFER,
+ bpp_to_pixfmt(info),
+ info->var.xres_virtual,
+ info->var.yres_virtual,
+ info->var.xres_virtual,
+ 0, 0,
+ var->yoffset,
+ var->xoffset);
ipu_select_buffer(mxc_fbi->ipu, mxc_fbi->ipu_ch, IPU_INPUT_BUFFER,
mxc_fbi->cur_ipu_buf);