mirror of https://gitee.com/openkylin/linux.git
wlcore: clean-up clearing of WL1271_FLAG_IRQ_RUNNING
We set WL1271_FLAG_IRQ_RUNNING in the beginning of wlcore_irq(), but clear it before interrupt handling is done in wlcore_irq_locked(). Let's move the clearing to the end of wlcore_irq() where it gets set, and remove the old comments about hardirq. That's no longer the case as we're using request_threaded_irq(). Note that the WL1271_FLAG_IRQ_RUNNING should never race between the interrupt handler and wlcore_runtime_resume() as because of autosuspend timeout we cannot enter idle between wlcore_irq_locked() and the end of wlcore_irq(). Cc: Anders Roxell <anders.roxell@linaro.org> Cc: Eyal Reizer <eyalr@ti.com> Cc: Guy Mishol <guym@ti.com> Cc: John Stultz <john.stultz@linaro.org> Cc: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
59f4567d22
commit
4633d30b61
|
@ -544,11 +544,6 @@ static int wlcore_irq_locked(struct wl1271 *wl)
|
|||
}
|
||||
|
||||
while (!done && loopcount--) {
|
||||
/*
|
||||
* In order to avoid a race with the hardirq, clear the flag
|
||||
* before acknowledging the chip.
|
||||
*/
|
||||
clear_bit(WL1271_FLAG_IRQ_RUNNING, &wl->flags);
|
||||
smp_mb__after_atomic();
|
||||
|
||||
ret = wlcore_fw_status(wl, wl->fw_status);
|
||||
|
@ -668,7 +663,7 @@ static irqreturn_t wlcore_irq(int irq, void *cookie)
|
|||
disable_irq_nosync(wl->irq);
|
||||
pm_wakeup_event(wl->dev, 0);
|
||||
spin_unlock_irqrestore(&wl->wl_lock, flags);
|
||||
return IRQ_HANDLED;
|
||||
goto out_handled;
|
||||
}
|
||||
spin_unlock_irqrestore(&wl->wl_lock, flags);
|
||||
|
||||
|
@ -692,6 +687,11 @@ static irqreturn_t wlcore_irq(int irq, void *cookie)
|
|||
|
||||
mutex_unlock(&wl->mutex);
|
||||
|
||||
out_handled:
|
||||
spin_lock_irqsave(&wl->wl_lock, flags);
|
||||
clear_bit(WL1271_FLAG_IRQ_RUNNING, &wl->flags);
|
||||
spin_unlock_irqrestore(&wl->wl_lock, flags);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue