summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorSree Sesha Aravind Vadrevu <svadrevu@codeaurora.org>2013-05-22 17:58:38 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:17:42 -0700
commit09e444e404a4db703a93c63b10323c2c4ac4aa14 (patch)
tree481ef2e080e1e5303538fc2a393b749bb19f0ca2 /drivers/video/fbdev
parentf67a00a1b7318b1d5d415227c14291f798209c6c (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.c26
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;
}