]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: winbond: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 9 Jul 2025 06:41:42 +0000 (08:41 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 15 Jul 2025 07:54:41 +0000 (09:54 +0200)
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-5-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-winbond.c

index 4b61d975cc0ec27a3b0fc342a976b09bb14e0d28..421655b5d4c24d9ceda6d258f0a17f49c5215bc8 100644 (file)
@@ -458,17 +458,19 @@ static int winbond_gpio_direction_out(struct gpio_chip *gc,
        return 0;
 }
 
-static void winbond_gpio_set(struct gpio_chip *gc, unsigned int offset,
-                            int val)
+static int winbond_gpio_set(struct gpio_chip *gc, unsigned int offset,
+                           int val)
 {
        unsigned long *base = gpiochip_get_data(gc);
        const struct winbond_gpio_info *info;
+       int ret;
 
        if (!winbond_gpio_get_info(&offset, &info))
-               return;
+               return -EACCES;
 
-       if (winbond_sio_enter(*base) != 0)
-               return;
+       ret = winbond_sio_enter(*base);
+       if (ret)
+               return ret;
 
        winbond_sio_select_logical(*base, info->dev);
 
@@ -481,6 +483,8 @@ static void winbond_gpio_set(struct gpio_chip *gc, unsigned int offset,
                winbond_sio_reg_bclear(*base, info->datareg, offset);
 
        winbond_sio_leave(*base);
+
+       return 0;
 }
 
 static struct gpio_chip winbond_gpio_chip = {
@@ -490,7 +494,7 @@ static struct gpio_chip winbond_gpio_chip = {
        .can_sleep              = true,
        .get                    = winbond_gpio_get,
        .direction_input        = winbond_gpio_direction_in,
-       .set                    = winbond_gpio_set,
+       .set_rv                 = winbond_gpio_set,
        .direction_output       = winbond_gpio_direction_out,
 };