diff options
| author | Sree Sesha Aravind Vadrevu <svadrevu@codeaurora.org> | 2013-05-22 17:58:38 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:17:42 -0700 |
| commit | 09e444e404a4db703a93c63b10323c2c4ac4aa14 (patch) | |
| tree | 481ef2e080e1e5303538fc2a393b749bb19f0ca2 /drivers/video/fbdev | |
| parent | f67a00a1b7318b1d5d415227c14291f798209c6c (diff) | |
msm: mdss: Enforce interlaced format w,h alignment
Interlaced formats need to be aligned to multiples of 4 to mainitain
evenness as hardware expects an even source rectangle. Moreover
interlace only works on half of the source rectangle.
Change-Id: I0eb920be87a9b76c6da18fd19566eb5dd090d737
Signed-off-by: Sree Sesha Aravind Vadrevu <svadrevu@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_overlay.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c index 49b579f8ace0..0c486963492d 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c +++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c @@ -197,6 +197,25 @@ static int mdss_mdp_overlay_req_check(struct msm_fb_data_type *mfd, return -EINVAL; } } + + if (req->flags & MDP_DEINTERLACE) { + if (req->flags & MDP_SOURCE_ROTATED_90) { + if ((req->src_rect.w % 4) != 0) { + pr_err("interlaced rect not h/4\n"); + return -EINVAL; + } + } else if ((req->src_rect.h % 4) != 0) { + pr_err("interlaced rect not h/4\n"); + return -EINVAL; + } + } + } else { + if (req->flags & MDP_DEINTERLACE) { + if ((req->src_rect.h % 4) != 0) { + pr_err("interlaced rect h not multiple of 4\n"); + return -EINVAL; + } + } } if (fmt->is_yuv) { @@ -207,13 +226,6 @@ static int mdss_mdp_overlay_req_check(struct msm_fb_data_type *mfd, } } - if (req->flags & MDP_DEINTERLACE) { - if ((req->src.width % 4 != 0) || (req->src.height % 4 != 0)) { - pr_err("interlaced fmt w,h need to be even post div\n"); - return -EINVAL; - } - } - return 0; } |
