This series arranges for the IPA driver to wake up a suspended system if the IPA hardware has a packet to deliver to the AP.
Version 2 replaced the first patch from version 1 with three patches, in response to David Miller's feedback. And based on Bjorn Andersson's feedback on version 2, this version reworks the tracking of IPA clock references. As a result, we no longer need a flag to determine whether a "don't' suspend" clock reference is held (though an bit in a bitmask is still used for a different purpose). In summary: - A refcount_t is used to track IPA clock references where an atomic_t was previously used. (This may go away soon as well, with upcoming work to implement runtime PM.) - We no longer track whether a special reference has been taken to avoid suspending IPA. - A bit in a bitmask is used to ensure we only trigger a system resume once per system suspend. And from the original series: - Suspending endpoints only occurs when suspending the driver, not when dropping the last clock reference. Resuming endpoints is also disconnected from starting the clock. - The IPA SUSPEND interrupt is now a wakeup interrupt. If it fires, it schedules a system resume operation. - The GSI interrupt is no longer a wakeup interrupt. -Alex Alex Elder (7): net: ipa: use refcount_t for IPA clock reference count net: ipa: replace ipa->suspend_ref with a flag bit net: ipa: manage endpoints separate from clock net: ipa: use device_init_wakeup() net: ipa: repurpose CLOCK_HELD flag net: ipa: enable wakeup on IPA interrupt net: ipa: do not enable GSI interrupt for wakeup drivers/net/ipa/gsi.c | 17 +++------ drivers/net/ipa/gsi.h | 1 - drivers/net/ipa/ipa.h | 16 ++++++--- drivers/net/ipa/ipa_clock.c | 28 ++++++--------- drivers/net/ipa/ipa_interrupt.c | 14 ++++++++ drivers/net/ipa/ipa_main.c | 64 +++++++++++++++++---------------- 6 files changed, 74 insertions(+), 66 deletions(-) -- 2.20.1