summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorOliver Brown <oliver.brown@freescale.com>2013-12-19 12:59:05 -0600
committerPeng Fushi <fushi.peng@freescale.com>2014-08-28 16:55:26 +0800
commit1c7a380fa4b451fd99552c7ffe6754a81c72cee4 (patch)
tree1bc36b080d147bba94167d8f909bfaf63d014533 /drivers
parent0a9708e1d6143d7d6df4e6c0ab8d083ee0fe0225 (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.c9
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()))