summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShivaraj Shetty <shivaraj@codeaurora.org>2014-06-10 21:28:36 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:30:54 -0700
commit0f38e4eaebf47198d533bf35d816f8cef489f89a (patch)
tree8e6b1e94ce0c09838c08a0db49d948f68c50ed25
parentd46bb668a79a0e5a98341d038a408396e1d3945f (diff)
msm: mdss: Avoid mutex lockup in dynamic switching
Calling blank/unblank after locking the backlight mutex will result in mutex lockup as blank/unblank would again try to aquire the same lock. Avoid this situation in Dynamic Switching. Change-Id: I7ddb2afec605f236071976420e0d6bd0c707e4d0 Signed-off-by: Shivaraj Shetty <shivaraj@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_fb.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c
index 2dbed4e0639f..998304b2eba6 100644
--- a/drivers/video/fbdev/msm/mdss_fb.c
+++ b/drivers/video/fbdev/msm/mdss_fb.c
@@ -482,6 +482,7 @@ static int mdss_fb_lpm_enable(struct msm_fb_data_type *mfd, int mode)
mutex_lock(&mfd->bl_lock);
bl_lvl = mfd->bl_level;
mdss_fb_set_backlight(mfd, 0);
+ mutex_unlock(&mfd->bl_lock);
lock_fb_info(mfd->fbi);
ret = mdss_fb_blank_sub(FB_BLANK_POWERDOWN, mfd->fbi,
@@ -489,7 +490,6 @@ static int mdss_fb_lpm_enable(struct msm_fb_data_type *mfd, int mode)
if (ret) {
pr_err("can't turn off display!\n");
unlock_fb_info(mfd->fbi);
- mutex_unlock(&mfd->bl_lock);
return ret;
}
@@ -505,11 +505,11 @@ static int mdss_fb_lpm_enable(struct msm_fb_data_type *mfd, int mode)
if (ret) {
pr_err("can't turn on display!\n");
unlock_fb_info(mfd->fbi);
- mutex_unlock(&mfd->bl_lock);
return ret;
}
unlock_fb_info(mfd->fbi);
+ mutex_lock(&mfd->bl_lock);
mfd->bl_updated = true;
mdss_fb_set_backlight(mfd, bl_lvl);
mutex_unlock(&mfd->bl_lock);