Messages in this thread |  | | From | Chen-Yu Tsai <> | Date | Sun, 5 Jan 2020 18:47:47 +0800 | Subject | Re: [linux-sunxi] [PATCH v2 8/9] power: supply: axp20x_usb_power: Add wakeup control |
| |
On Sun, Jan 5, 2020 at 9:24 AM Samuel Holland <samuel@sholland.org> wrote: > > The USB power supply input can be used as a wakeup source. Hook up the > VBUS_PLUGIN IRQ to trigger wakeup based on userspace configuration. > > To do this, we must remember the list of IRQs for the life of the > device. To know how much space to allocate for the flexible array > member, we switch from using a NULL sentinel to using an array length. > > Because we now depend on the specific order of the IRQs (we assume > VBUS_PLUGIN is first and always present), failing to acquire an IRQ > during probe must be a fatal error. > > To avoid spuriously waking up the system when the USB power supply is > not configured as a wakeup source, we must explicitly disable all non- > wake IRQs during system suspend. This is because the SoC's NMI input is > shared among all IRQs on the AXP PMIC. Due to the use of regmap-irq, the > individual IRQs within the PMIC are nested threaded interrupts, and are > therefore not automatically disabled during system suspend. > > The upshot is that if any other device within the MFD (such as the power > key) is an enabled wakeup source, all enabled IRQs within the PMIC will > cause wakeup. We still need to call enable_irq_wake() when we *do* want > wakeup, in case those other wakeup sources on the PMIC are all disabled. > > Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
|  |