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 *);