gpio: ljca: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 23 Apr 2025 07:15:10 +0000 (09:15 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 30 Apr 2025 08:27:58 +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: Sakari Ailus <sakari.ailus@linux.intel.com>
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-8-b22245cde81a@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-ljca.c

index 817ecb12d5509a124364620fc96accf1d4dc0e21..61524a9ba7650d5475315975b4bb4095ee1f8f7f 100644 (file)
@@ -144,8 +144,8 @@ static int ljca_gpio_get_value(struct gpio_chip *chip, unsigned int offset)
        return ljca_gpio_read(ljca_gpio, offset);
 }
 
-static void ljca_gpio_set_value(struct gpio_chip *chip, unsigned int offset,
-                               int val)
+static int ljca_gpio_set_value(struct gpio_chip *chip, unsigned int offset,
+                              int val)
 {
        struct ljca_gpio_dev *ljca_gpio = gpiochip_get_data(chip);
        int ret;
@@ -155,6 +155,8 @@ static void ljca_gpio_set_value(struct gpio_chip *chip, unsigned int offset,
                dev_err(chip->parent,
                        "set value failed offset: %u val: %d ret: %d\n",
                        offset, val, ret);
+
+       return ret;
 }
 
 static int ljca_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
@@ -183,7 +185,10 @@ static int ljca_gpio_direction_output(struct gpio_chip *chip,
        if (ret)
                return ret;
 
-       ljca_gpio_set_value(chip, offset, val);
+       ret = ljca_gpio_set_value(chip, offset, val);
+       if (ret)
+               return ret;
+
        set_bit(offset, ljca_gpio->output_enabled);
 
        return 0;
@@ -432,7 +437,7 @@ static int ljca_gpio_probe(struct auxiliary_device *auxdev,
        ljca_gpio->gc.direction_output = ljca_gpio_direction_output;
        ljca_gpio->gc.get_direction = ljca_gpio_get_direction;
        ljca_gpio->gc.get = ljca_gpio_get_value;
-       ljca_gpio->gc.set = ljca_gpio_set_value;
+       ljca_gpio->gc.set_rv = ljca_gpio_set_value;
        ljca_gpio->gc.set_config = ljca_gpio_set_config;
        ljca_gpio->gc.init_valid_mask = ljca_gpio_init_valid_mask;
        ljca_gpio->gc.can_sleep = true;