summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Salido-Moreno <adrianm@codeaurora.org>2012-11-08 13:51:00 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:13:14 -0700
commite9eaae72eed915b6b4fc501df3fbaaa2b37cca71 (patch)
treed9fbb87504ef51d8b69ee0c911a07a2d45cfa5c0
parentb0f78702aabf4b265ff323145db753983d2c8421 (diff)
msm: mdss: disable overlay operations while suspended
When display is suspended all overlay operations coming from userspace should be ignored to avoid programming MDP when it's completely powered down. Change-Id: If43436915de33f89016ee2c85eb70bd57fdd2118 Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_overlay.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
index 5ede39eeecc6..299f3f3d22f7 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
@@ -355,6 +355,9 @@ static int mdss_mdp_overlay_set(struct msm_fb_data_type *mfd,
{
int ret;
+ if (!mfd->panel_power_on)
+ return -EPERM;
+
if (req->flags & MDSS_MDP_ROT_ONLY) {
ret = mdss_mdp_overlay_rotator_setup(mfd, req);
} else {
@@ -482,6 +485,9 @@ static int mdss_mdp_overlay_unset(struct msm_fb_data_type *mfd, int ndx)
return ret;
}
+ if (!mfd->ctl->power_on)
+ return 0;
+
for (i = 0; unset_ndx != ndx && i < MDSS_MDP_MAX_SSPP; i++) {
pipe_ndx = BIT(i);
if (pipe_ndx & ndx) {
@@ -631,6 +637,9 @@ static int mdss_mdp_overlay_play(struct msm_fb_data_type *mfd,
pr_debug("play req id=%x\n", req->id);
+ if (!mfd->panel_power_on)
+ return -EPERM;
+
if (req->id & MDSS_MDP_ROT_SESSION_MASK)
ret = mdss_mdp_overlay_rotate(mfd, req);
else
@@ -974,7 +983,7 @@ static int mdss_mdp_overlay_ioctl_handler(struct msm_fb_data_type *mfd,
}
if (ret) {
- pr_err("OVERLAY_GET failed (%d)\n", ret);
+ pr_debug("OVERLAY_GET failed (%d)\n", ret);
ret = -EFAULT;
}
break;
@@ -988,7 +997,7 @@ static int mdss_mdp_overlay_ioctl_handler(struct msm_fb_data_type *mfd,
ret = copy_to_user(argp, &req, sizeof(req));
}
if (ret) {
- pr_err("OVERLAY_SET failed (%d)\n", ret);
+ pr_debug("OVERLAY_SET failed (%d)\n", ret);
ret = -EFAULT;
}
break;
@@ -1020,7 +1029,7 @@ static int mdss_mdp_overlay_ioctl_handler(struct msm_fb_data_type *mfd,
}
if (ret) {
- pr_err("OVERLAY_PLAY failed (%d)\n", ret);
+ pr_debug("OVERLAY_PLAY failed (%d)\n", ret);
ret = -EFAULT;
}
} else {