gpio: lp3943: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 23 Apr 2025 07:15:14 +0000 (09:15 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 30 Apr 2025 08:27:59 +0000 (10:27 +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.

Reviewed-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250423-gpiochip-set-rv-gpio-part2-v1-12-b22245cde81a@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-lp3943.c

index 8e58242f5123f4f2f23c7ccacf60a3a016a07ce1..52ab3ac4844cd2ba248a3ffa8d2af4c1685501bb 100644 (file)
@@ -147,7 +147,8 @@ static int lp3943_gpio_get(struct gpio_chip *chip, unsigned int offset)
                return lp3943_get_gpio_out_status(lp3943_gpio, chip, offset);
 }
 
-static void lp3943_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
+static int lp3943_gpio_set(struct gpio_chip *chip, unsigned int offset,
+                          int value)
 {
        struct lp3943_gpio *lp3943_gpio = gpiochip_get_data(chip);
        u8 data;
@@ -157,15 +158,19 @@ static void lp3943_gpio_set(struct gpio_chip *chip, unsigned int offset, int val
        else
                data = LP3943_GPIO_OUT_LOW;
 
-       lp3943_gpio_set_mode(lp3943_gpio, offset, data);
+       return lp3943_gpio_set_mode(lp3943_gpio, offset, data);
 }
 
 static int lp3943_gpio_direction_output(struct gpio_chip *chip, unsigned int offset,
                                        int value)
 {
        struct lp3943_gpio *lp3943_gpio = gpiochip_get_data(chip);
+       int ret;
+
+       ret = lp3943_gpio_set(chip, offset, value);
+       if (ret)
+               return ret;
 
-       lp3943_gpio_set(chip, offset, value);
        lp3943_gpio->input_mask &= ~BIT(offset);
 
        return 0;
@@ -179,7 +184,7 @@ static const struct gpio_chip lp3943_gpio_chip = {
        .direction_input        = lp3943_gpio_direction_input,
        .get                    = lp3943_gpio_get,
        .direction_output       = lp3943_gpio_direction_output,
-       .set                    = lp3943_gpio_set,
+       .set_rv                 = lp3943_gpio_set,
        .base                   = -1,
        .ngpio                  = LP3943_MAX_GPIO,
        .can_sleep              = 1,