diff options
author | Oliver Brown <oliver.brown@freescale.com> | 2013-12-19 12:59:05 -0600 |
---|---|---|
committer | Peng Fushi <fushi.peng@freescale.com> | 2014-08-28 16:55:26 +0800 |
commit | 1c7a380fa4b451fd99552c7ffe6754a81c72cee4 (patch) | |
tree | 1bc36b080d147bba94167d8f909bfaf63d014533 /drivers | |
parent | 0a9708e1d6143d7d6df4e6c0ab8d083ee0fe0225 (diff) |
ENGR00292585 IPUv3: Fix a horizontal line at the middle playing 1080i
Added additional check to handle stripe limits differently for upscaling
and downscaling. Upscaling requires relaxed checking because input stripe
may fall slighty outside of the input window. Downscaling requires strict
limit checking.
Signed-off-by: Oliver Brown <oliver.brown@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mxc/ipu3/ipu_device.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/mxc/ipu3/ipu_device.c b/drivers/mxc/ipu3/ipu_device.c index 113d2d00a8e5..8a5fc3d56b5e 100644 --- a/drivers/mxc/ipu3/ipu_device.c +++ b/drivers/mxc/ipu3/ipu_device.c @@ -930,7 +930,14 @@ static int update_split_setting(struct ipu_task_entry *t, bool vdi_split) t->set.sp_setting.o_bottom_pos = 0; } - if ((t->set.sp_setting.ih + t->set.sp_setting.i_bottom_pos) > (ih+16)) + /* downscale case: enforce limits */ + if (((t->set.sp_setting.ih + t->set.sp_setting.i_bottom_pos) > (ih)) + && (t->set.sp_setting.ih >= t->set.sp_setting.oh)) + return IPU_CHECK_ERR_SPLIT_INPUTH_OVER; + /* upscale case: relax limits because ipu_calc_stripes_sizes() may + create input stripe that falls just outside of the input window */ + else if ((t->set.sp_setting.ih + t->set.sp_setting.i_bottom_pos) + > (ih+16)) return IPU_CHECK_ERR_SPLIT_INPUTH_OVER; if (((t->set.sp_setting.oh + t->set.sp_setting.o_bottom_pos) > oh) || (t->set.sp_setting.oh > soc_max_out_height())) |