diff options
| author | Shivaraj Shetty <shivaraj@codeaurora.org> | 2014-06-10 21:28:36 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:30:54 -0700 |
| commit | 0f38e4eaebf47198d533bf35d816f8cef489f89a (patch) | |
| tree | 8e6b1e94ce0c09838c08a0db49d948f68c50ed25 | |
| parent | d46bb668a79a0e5a98341d038a408396e1d3945f (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.c | 4 |
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); |
