serial: msm_serial_hs: Modify wakeup handler disablement and processing

Make sure to disable wakeup irq synchronously as in an aggressive
scheduling system if it's asynchronous then unserved interrupt can
get scheduled later. In addition remove the threaded handler and
configure as an ISR to not have scheduler impact on functionalities.

Change-Id: Id525d5295834b73c2f42d52f0e363f0bdec1d22a
Signed-off-by: Mukesh Kumar Savaliya <msavaliy@codeaurora.org>
This commit is contained in:
Mukesh Kumar Savaliya 2017-07-20 13:42:05 +05:30
parent 85baaeb2e2
commit 4807405523

View file

@ -2255,7 +2255,7 @@ void disable_wakeup_interrupt(struct msm_hs_port *msm_uport)
return; return;
if (msm_uport->wakeup.enabled) { if (msm_uport->wakeup.enabled) {
disable_irq_nosync(msm_uport->wakeup.irq); disable_irq(msm_uport->wakeup.irq);
enable_irq(uport->irq); enable_irq(uport->irq);
spin_lock_irqsave(&uport->lock, flags); spin_lock_irqsave(&uport->lock, flags);
msm_uport->wakeup.enabled = false; msm_uport->wakeup.enabled = false;
@ -2614,8 +2614,7 @@ static int msm_hs_startup(struct uart_port *uport)
msm_hs_resource_vote(msm_uport); msm_hs_resource_vote(msm_uport);
if (is_use_low_power_wakeup(msm_uport)) { if (is_use_low_power_wakeup(msm_uport)) {
ret = request_threaded_irq(msm_uport->wakeup.irq, NULL, ret = request_irq(msm_uport->wakeup.irq, msm_hs_wakeup_isr,
msm_hs_wakeup_isr,
IRQF_TRIGGER_FALLING | IRQF_ONESHOT, IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
"msm_hs_wakeup", msm_uport); "msm_hs_wakeup", msm_uport);
if (unlikely(ret)) { if (unlikely(ret)) {