summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
index 1663e060d569..62832f4c2c66 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
@@ -822,6 +822,7 @@ static void mdss_mdp_cmd_intf_recovery(void *data, int event)
{
struct mdss_mdp_cmd_ctx *ctx = data;
unsigned long flags;
+ bool reset_done = false;
if (!data) {
pr_err("%s: invalid ctx\n", __func__);
@@ -842,9 +843,13 @@ static void mdss_mdp_cmd_intf_recovery(void *data, int event)
return;
}
- spin_lock_irqsave(&ctx->koff_lock, flags);
if (atomic_read(&ctx->koff_cnt)) {
mdss_mdp_ctl_reset(ctx->ctl);
+ reset_done = true;
+ }
+
+ spin_lock_irqsave(&ctx->koff_lock, flags);
+ if (reset_done && atomic_read(&ctx->koff_cnt)) {
pr_debug("%s: intf_num=%d\n", __func__,
ctx->ctl->intf_num);
atomic_dec(&ctx->koff_cnt);