Index | Thread | Search

From:
Mark Kettenis <mark.kettenis@xs4all.nl>
Subject:
Re: sys/qcgpio: fix GPIO wakeup masking during suspend
To:
Kirill A. Korinsky <kirill@korins.ky>
Cc:
tech@openbsd.org
Date:
Mon, 05 Oct 2026 21:26:11 +0200

Download raw body.

Thread
> Date: Mon, 05 Oct 2026 02:55:26 +0200
> From: Kirill A. Korinsky <kirill@korins.ky>
> 
> 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?

Not sure how that went wrong...

With this fix my vivobook resumes when I open the lid.  Without it
doesn't.

ok kettenis@

> 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
> 
>