diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c | 7 |
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); |
