qcacmn: Use suspend_noirq callback instead of disabling irqs

Disabling the interrupts and setting them as wakeup sources does
not work as expected.  The pending interrupt gets trapped in sw
and kernel does not check for it before finishing the suspend.

Instead, use the suspend_noirq callback to guarantee that
wakeup messages don't get processed without rejecting the suspend.

Change-Id: I5ec5ce2a7e1b14c3d8477fe7aa0372c9ffd4dc0d
CRs-Fixed: 1060880
This commit is contained in:
Houston Hoffman
2016-08-29 12:31:58 -07:00
committed by qcabuildsw
parent e28261fdb1
commit 7fdff0c52f
8 changed files with 72 additions and 91 deletions

View File

@@ -83,6 +83,34 @@ int hif_dummy_bus_resume(struct hif_softc *hif_ctx)
return 0;
}
/**
* hif_dummy_suspend_noirq() - suspend the bus
* @hif_ctx: hif context
*
* dummy for busses that don't need to syncronize
* with interrupt disable.
*
* Return: 0 for success and non-zero for failure
*/
int hif_dummy_bus_suspend_noirq(struct hif_softc *hif_ctx)
{
return 0;
}
/**
* hif_dummy_resume_noirq() - resume the bus
* @hif_ctx: hif context
*
* dummy for busses that don't need to syncronize
* with interrupt disable.
*
* Return: 0 for success and non-zero for failure
*/
int hif_dummy_bus_resume_noirq(struct hif_softc *hif_ctx)
{
return 0;
}
/**
* hif_dummy_target_sleep_state_adjust() - api to adjust state of target
* @scn: hif context