diff options
| author | Adrian Salido-Moreno <adrianm@codeaurora.org> | 2012-11-08 13:51:00 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:13:14 -0700 |
| commit | e9eaae72eed915b6b4fc501df3fbaaa2b37cca71 (patch) | |
| tree | d9fbb87504ef51d8b69ee0c911a07a2d45cfa5c0 | |
| parent | b0f78702aabf4b265ff323145db753983d2c8421 (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.c | 15 |
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 { |
