Index | Thread | Search

From:
Kirill A. Korinsky <kirill@korins.ky>
Subject:
sys/qcgpio: fix GPIO wakeup masking during suspend
To:
OpenBSD tech <tech@openbsd.org>
Date:
Mon, 05 Oct 2026 02:55:26 +0200

Download raw body.

Thread
tech@,

seems that the suspend path disables pins marked for wakeup while leaving
other GPIO interrupts enabled. Here, I reverse the condition to preserve
wakeup sources and mask ordinary interrupts; restore the saved configuration
on resume.

Thoughts?


Index: sys/dev/fdt/qcgpio_fdt.c
===================================================================
RCS file: /home/cvs/src/sys/dev/fdt/qcgpio_fdt.c,v
diff -u -p -r1.9 qcgpio_fdt.c
--- sys/dev/fdt/qcgpio_fdt.c	4 Sep 2026 18:06:36 -0000	1.9
+++ sys/dev/fdt/qcgpio_fdt.c	5 Oct 2026 00:50:24 -0000
@@ -189,7 +189,7 @@ qcgpio_fdt_activate(struct device *self,
 
 			sc->sc_pin_intr_cfg[pin] =
 			    HREAD4(sc, TLMM_GPIO_INTR_CFG(pin));
-			if (sc->sc_pin_ih[pin].ih_wakeup) {
+			if (!sc->sc_pin_ih[pin].ih_wakeup) {
 				HCLR4(sc, TLMM_GPIO_INTR_CFG(pin),
 				    TLMM_GPIO_INTR_CFG_INTR_ENABLE);
 			}


-- 
wbr, Kirill