[PATCH net-next v3 0/7] net: ipa: wake up system on RX available

From: Alex Elder
Date: Thu Sep 17 2020 - 14:02:58 EST


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