Re: [RFC PATCH V2 3/8] genirq: Add runtime power management support for IRQ chips
From: Linus Walleij <hidden>
Date: 2016-02-05 14:37:22
Also in:
linux-tegra, lkml
From: Linus Walleij <hidden>
Date: 2016-02-05 14:37:22
Also in:
linux-tegra, lkml
On Thu, Jan 21, 2016 at 8:51 PM, Thomas Gleixner [off-list ref] wrote:
So as long as an interrupt handler is installed, there is no sane way that we can decide to power down the irq chip, unless that chip has the magic ability to relay incoming interrupts while powered down :)
Actually isn't that exactly what almost every SoC that supports deepsleep does? They power off the primary interrupt controller and arm the padring of the SoC with an asynchronous edge detector to wake up as soon as something happens on a few select lines, like a keypad button or whatnot. The asynchronous edge detector is handled by the ROM or some power-management microcontroller, which wakes up the system and restores power to the CPU and primary interrupt controller. That is the magic ability right there. Of course as the wakeup signal may be deasserted at the point the system actually comes back up, so the magic ROM power management unit then needs to latch any latent IRQs from some shadow register to the primary interrupt controller, which as far as I've seen is done by out-of-tree hacks similar to the irq_[get/set]_irqchip_state() implemented by Marc Zyngier, albeit for virtualization. I've not seen it on any non-primary interrupt controller though. Yours, Linus Walleij