gpio: f7188: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 7 Apr 2025 07:13:15 +0000 (09:13 +0200)
committerBartosz Golaszewski <brgl@bgdev.pl>
Thu, 17 Apr 2025 11:58:54 +0000 (13:58 +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.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20250407-gpiochip-set-rv-gpio-part1-v1-6-78399683ca38@linaro.org
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpio-f7188x.c

index 3875fd940ccbf340b15c17a7877c152278ff327a..dfcd3634f279dbe0073c6ba1aa25f23384f52620 100644 (file)
@@ -159,7 +159,8 @@ static int f7188x_gpio_direction_in(struct gpio_chip *chip, unsigned offset);
 static int f7188x_gpio_get(struct gpio_chip *chip, unsigned offset);
 static int f7188x_gpio_direction_out(struct gpio_chip *chip,
                                     unsigned offset, int value);
-static void f7188x_gpio_set(struct gpio_chip *chip, unsigned offset, int value);
+static int f7188x_gpio_set(struct gpio_chip *chip, unsigned int offset,
+                          int value);
 static int f7188x_gpio_set_config(struct gpio_chip *chip, unsigned offset,
                                  unsigned long config);
 
@@ -172,7 +173,7 @@ static int f7188x_gpio_set_config(struct gpio_chip *chip, unsigned offset,
                        .direction_input  = f7188x_gpio_direction_in,   \
                        .get              = f7188x_gpio_get,            \
                        .direction_output = f7188x_gpio_direction_out,  \
-                       .set              = f7188x_gpio_set,            \
+                       .set_rv           = f7188x_gpio_set,            \
                        .set_config       = f7188x_gpio_set_config,     \
                        .base             = -1,                         \
                        .ngpio            = _ngpio,                     \
@@ -391,7 +392,8 @@ static int f7188x_gpio_direction_out(struct gpio_chip *chip,
        return 0;
 }
 
-static void f7188x_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int f7188x_gpio_set(struct gpio_chip *chip, unsigned int offset,
+                          int value)
 {
        int err;
        struct f7188x_gpio_bank *bank = gpiochip_get_data(chip);
@@ -400,7 +402,8 @@ static void f7188x_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 
        err = superio_enter(sio->addr);
        if (err)
-               return;
+               return err;
+
        superio_select(sio->addr, sio->device);
 
        data_out = superio_inb(sio->addr, f7188x_gpio_data_out(bank->regbase));
@@ -411,6 +414,8 @@ static void f7188x_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
        superio_outb(sio->addr, f7188x_gpio_data_out(bank->regbase), data_out);
 
        superio_exit(sio->addr);
+
+       return 0;
 }
 
 static int f7188x_gpio_set_config(struct gpio_chip *chip, unsigned offset,