]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpiolib: legacy: Make sure we kill gpio_request_one() first
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 12 Nov 2025 09:32:01 +0000 (10:32 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 17 Nov 2025 09:57:28 +0000 (10:57 +0100)
Make sure we kill gpio_request_one() first by converting it to
use legacy APIs that will be alive a bit longer. In particular,
this also shows the code we will use in another function to make
it die independently.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20251112093608.1481030-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-legacy.c

index 3bc93ccadb5b5228606f60e00dbbf5099f4f4651..35cb7fca634ea1100b0f2ca89b79b3f363f3dabe 100644 (file)
@@ -34,30 +34,20 @@ EXPORT_SYMBOL_GPL(gpio_free);
  */
 int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
 {
-       struct gpio_desc *desc;
        int err;
 
-       /* Compatibility: assume unavailable "valid" GPIOs will appear later */
-       desc = gpio_to_desc(gpio);
-       if (!desc)
-               return -EPROBE_DEFER;
-
-       err = gpiod_request(desc, label);
+       err = gpio_request(gpio, label);
        if (err)
                return err;
 
        if (flags & GPIOF_IN)
-               err = gpiod_direction_input(desc);
+               err = gpio_direction_input(gpio);
        else
-               err = gpiod_direction_output_raw(desc, !!(flags & GPIOF_OUT_INIT_HIGH));
+               err = gpio_direction_output(gpio, !!(flags & GPIOF_OUT_INIT_HIGH));
 
        if (err)
-               goto free_gpio;
-
-       return 0;
+               gpio_free(gpio);
 
- free_gpio:
-       gpiod_free(desc);
        return err;
 }
 EXPORT_SYMBOL_GPL(gpio_request_one);