From: Thierry Reding <treding@xxxxxxxxxx> Hi, The following is a set of patches that allow certain interrupts to be used as wakeup sources on Tegra186 and later. To implement this, each of the GPIO controllers' IRQ domain needs to become hierarchical, and parented to the PMC domain. The PMC domain in turn implements a new IRQ domain that is a child to the GIC IRQ domain. The above ensures that the interrupt chip implementation of the PMC is called at the correct time. The ->irq_set_type() and ->irq_set_wake() implementations program the PMC wake registers in a way to enable the given interrupts as wakeup sources. This is based on a suggestion from Thomas Gleixner that resulted from the following thread: https://lkml.org/lkml/2018/9/13/1042 Linus, I'm sending this as one series, but both the GPIO and PMC patches should be applicable separately. There are no build-time dependencies in the series. So once this has been duly reviewed, I think patches 1-5 can go through the Tegra tree, while patches 6-9 should go through the GPIO tree. Thierry Thierry Reding (9): dt-bindings: tegra186-pmc: Add interrupt controller properties soc/tegra: pmc: Add Tegra194 support soc/tegra: pmc: Add wake event support soc/tegra: pmc: Add initial Tegra186 wake events soc/tegra: pmc: Add initial Tegra194 wake events gpio: Add support for hierarchical IRQ domains dt-bindings: tegra186-gpio: Add wakeup parent support gpio: tegra186: Rename flow variable to type gpio: tegra186: Implement wake event support .../arm/tegra/nvidia,tegra186-pmc.txt | 3 + .../bindings/gpio/nvidia,tegra186-gpio.txt | 7 + drivers/gpio/gpio-tegra186.c | 109 +++++- drivers/gpio/gpiolib.c | 15 +- drivers/soc/tegra/pmc.c | 312 +++++++++++++++++- include/linux/gpio/driver.h | 6 + include/soc/tegra/pmc.h | 21 ++ 7 files changed, 451 insertions(+), 22 deletions(-) -- 2.19.0