Module Name: src Committed By: jmcneill Date: Sun Dec 8 20:40:38 UTC 2024
Modified Files: src/sys/dev/gpio: gpio.c gpiovar.h Log Message: gpio(4): Add gpio_intr_{mask,unmask} functions. For devices that use level triggered GPIO interrupts, provide an API that allows them to mask/unmask interrupts on that pin. To generate a diff of this commit: cvs rdiff -u -r1.73 -r1.74 src/sys/dev/gpio/gpio.c cvs rdiff -u -r1.19 -r1.20 src/sys/dev/gpio/gpiovar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/gpio/gpio.c diff -u src/sys/dev/gpio/gpio.c:1.73 src/sys/dev/gpio/gpio.c:1.74 --- src/sys/dev/gpio/gpio.c:1.73 Mon Nov 6 00:35:05 2023 +++ src/sys/dev/gpio/gpio.c Sun Dec 8 20:40:38 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: gpio.c,v 1.73 2023/11/06 00:35:05 brad Exp $ */ +/* $NetBSD: gpio.c,v 1.74 2024/12/08 20:40:38 jmcneill Exp $ */ /* $OpenBSD: gpio.c,v 1.6 2006/01/14 12:33:49 grange Exp $ */ /* @@ -23,7 +23,7 @@ #endif #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gpio.c,v 1.73 2023/11/06 00:35:05 brad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gpio.c,v 1.74 2024/12/08 20:40:38 jmcneill Exp $"); /* * General Purpose Input/Output framework. @@ -618,6 +618,28 @@ gpio_intr_str(void *gpio, struct gpio_pi return (true); } +void +gpio_intr_mask(void *gpio, void *ih) +{ + struct gpio_softc *sc = gpio; + + if (sc->sc_gc->gp_intr_mask == NULL) + return; + + sc->sc_gc->gp_intr_mask(sc->sc_gc->gp_cookie, ih); +} + +void +gpio_intr_unmask(void *gpio, void *ih) +{ + struct gpio_softc *sc = gpio; + + if (sc->sc_gc->gp_intr_unmask == NULL) + return; + + sc->sc_gc->gp_intr_unmask(sc->sc_gc->gp_cookie, ih); +} + int gpio_pin_to_pin_num(void *gpio, struct gpio_pinmap *map, int pin) { Index: src/sys/dev/gpio/gpiovar.h diff -u src/sys/dev/gpio/gpiovar.h:1.19 src/sys/dev/gpio/gpiovar.h:1.20 --- src/sys/dev/gpio/gpiovar.h:1.19 Mon Nov 6 00:35:05 2023 +++ src/sys/dev/gpio/gpiovar.h Sun Dec 8 20:40:38 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: gpiovar.h,v 1.19 2023/11/06 00:35:05 brad Exp $ */ +/* $NetBSD: gpiovar.h,v 1.20 2024/12/08 20:40:38 jmcneill Exp $ */ /* $OpenBSD: gpiovar.h,v 1.3 2006/01/14 12:33:49 grange Exp $ */ /* @@ -36,6 +36,8 @@ typedef struct gpio_chipset_tag { int (*)(void *), void *); void (*gp_intr_disestablish)(void *, void *); bool (*gp_intr_str)(void *, int, int, char *, size_t); + void (*gp_intr_mask)(void *, void *); + void (*gp_intr_unmask)(void *, void *); } *gpio_chipset_tag_t; /* GPIO pin description */ @@ -118,6 +120,8 @@ void * gpio_intr_establish(void *, struc void gpio_intr_disestablish(void *, void *); bool gpio_intr_str(void *, struct gpio_pinmap *, int, int, char *, size_t); +void gpio_intr_mask(void *, void *); +void gpio_intr_unmask(void *, void *); int gpio_pin_to_pin_num(void *, struct gpio_pinmap *, int); int gpio_lock(void *);