diff options
| author | Igor Velkov <iav@iav.lv> | 2026-10-10 18:20:30 +0000 |
|---|---|---|
| committer | Thomas Gleixner <tglx@kernel.org> | 2026-10-15 12:07:02 +0200 |
| commit | 5b6e2a46b80ddbc93e72eb4f01519b0c8c3e0ef0 (patch) | |
| tree | 07523aee1f33759288bf4be9d856cae6c656afdb /scripts/Makefile.thinlto | |
| parent | 254772534e40060abe5321093400947e03b13d54 (diff) | |
| download | linux-5b6e2a46b80ddbc93e72eb4f01519b0c8c3e0ef0.tar.gz linux-5b6e2a46b80ddbc93e72eb4f01519b0c8c3e0ef0.zip | |
irqchip/meson-gpio: Allow the GPIO interrupts to wake the system
meson_gpio_irq_chip has neither .irq_set_wake nor IRQCHIP_SKIP_SET_WAKE,
so enable_irq_wake() fails with -ENXIO for every interrupt routed through
it, and such an interrupt never gets IRQD_WAKEUP_STATE.
That matters for suspend-to-idle. suspend_device_irqs() keeps only the
wakeup interrupts enabled; the rest are suspended and masked by the flow
handler when they first fire. A GPIO interrupt that fires during s2idle
therefore brings a CPU out of idle once, gets masked, and the system
sleeps on. For mem the firmware chooses the wakeup sources, and this
flag changes nothing there.
Set IRQCHIP_SKIP_SET_WAKE, like the other hierarchical irqchips with a
GIC parent. The GIC sets the same flag, so irq_chip_set_wake_parent()
would end there anyway.
Tested on ODROID-HC4 with the PCF8563 alarm interrupt routed through this
controller: with the flag the alarm wakes the board from s2idle 4/4, and
/sys/power/pm_wakeup_irq names it; without the flag the board stayed in
s2idle past the alarm until a power cycle (0/5).
Signed-off-by: Igor Velkov <iav@iav.lv>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Assisted-by: LLM
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patch.msgid.link/20261010-meson-gpio-wake-v2-1-790ecc6df792@iav.lv
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
