The branch main has been updated by vexeduxr:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=a2bfb7cff243bdafebde5ea8629810fe507a2aea

commit a2bfb7cff243bdafebde5ea8629810fe507a2aea
Author:     Ahmad Khalifa <vexed...@freebsd.org>
AuthorDate: 2025-07-04 20:01:29 +0000
Commit:     Ahmad Khalifa <vexed...@freebsd.org>
CommitDate: 2025-07-04 20:24:31 +0000

    gpiobus: gpiobus_release_pin: convert errors to panic
    
    These are programming errors.
    
    Suggested by:   mmel
    Reviewed by:    imp
    Approved by:    imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D50939
---
 sys/dev/gpio/gpiobus.c    | 21 ++++++++-------------
 sys/dev/gpio/gpiobusvar.h |  2 +-
 2 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/sys/dev/gpio/gpiobus.c b/sys/dev/gpio/gpiobus.c
index ab849ca3db98..e919561340a8 100644
--- a/sys/dev/gpio/gpiobus.c
+++ b/sys/dev/gpio/gpiobus.c
@@ -415,7 +415,7 @@ gpiobus_acquire_pin(device_t bus, uint32_t pin)
 }
 
 /* Release mapped pin */
-int
+void
 gpiobus_release_pin(device_t bus, uint32_t pin)
 {
        struct gpiobus_softc *sc;
@@ -423,19 +423,15 @@ gpiobus_release_pin(device_t bus, uint32_t pin)
        sc = device_get_softc(bus);
        /* Consistency check. */
        if (pin >= sc->sc_npins) {
-               device_printf(bus,
-                   "invalid pin %d, max=%d\n",
-                   pin, sc->sc_npins - 1);
-               return (-1);
+               panic("%s: invalid pin %d, max: %d",
+                   device_get_nameunit(bus), pin, sc->sc_npins - 1);
        }
 
-       if (!sc->sc_pins[pin].mapped) {
-               device_printf(bus, "pin %d is not mapped\n", pin);
-               return (-1);
-       }
-       sc->sc_pins[pin].mapped = 0;
+       if (!sc->sc_pins[pin].mapped)
+               panic("%s: pin %d is not mapped", device_get_nameunit(bus),
+                   pin);
 
-       return (0);
+       sc->sc_pins[pin].mapped = 0;
 }
 
 static int
@@ -450,8 +446,7 @@ gpiobus_acquire_child_pins(device_t dev, device_t child)
                        device_printf(child, "cannot acquire pin %d\n",
                            devi->pins[i]);
                        while (--i >= 0) {
-                               (void)gpiobus_release_pin(dev,
-                                   devi->pins[i]);
+                               gpiobus_release_pin(dev, devi->pins[i]);
                        }
                        gpiobus_free_ivars(devi);
                        return (EBUSY);
diff --git a/sys/dev/gpio/gpiobusvar.h b/sys/dev/gpio/gpiobusvar.h
index 3ae0767466c9..975788e84a83 100644
--- a/sys/dev/gpio/gpiobusvar.h
+++ b/sys/dev/gpio/gpiobusvar.h
@@ -182,7 +182,7 @@ int gpiobus_alloc_ivars(struct gpiobus_ivar *);
 void gpiobus_free_ivars(struct gpiobus_ivar *);
 int gpiobus_read_ivar(device_t, device_t, int, uintptr_t *);
 int gpiobus_acquire_pin(device_t, uint32_t);
-int gpiobus_release_pin(device_t, uint32_t);
+void gpiobus_release_pin(device_t, uint32_t);
 
 extern driver_t gpiobus_driver;
 

Reply via email to