]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: 74x164: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 3 Mar 2025 13:18:26 +0000 (14:18 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 10 Mar 2025 10:52:12 +0000 (11:52 +0100)
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/20250303-gpiochip-set-conversion-v1-1-1d5cceeebf8b@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-74x164.c

index 640ac24b72a2cee22be8c645d84583f12f6c73fc..4dd5c2c330bb88cf91e590f51f0175bbf79b4af5 100644 (file)
@@ -50,8 +50,8 @@ static int gen_74x164_get_value(struct gpio_chip *gc, unsigned offset)
        return !!(chip->buffer[bank] & BIT(pin));
 }
 
-static void gen_74x164_set_value(struct gpio_chip *gc,
-               unsigned offset, int val)
+static int gen_74x164_set_value(struct gpio_chip *gc,
+                               unsigned int offset, int val)
 {
        struct gen_74x164_chip *chip = gpiochip_get_data(gc);
        u8 bank = chip->registers - 1 - offset / 8;
@@ -64,11 +64,11 @@ static void gen_74x164_set_value(struct gpio_chip *gc,
        else
                chip->buffer[bank] &= ~BIT(pin);
 
-       __gen_74x164_write_config(chip);
+       return __gen_74x164_write_config(chip);
 }
 
-static void gen_74x164_set_multiple(struct gpio_chip *gc, unsigned long *mask,
-                                   unsigned long *bits)
+static int gen_74x164_set_multiple(struct gpio_chip *gc, unsigned long *mask,
+                                  unsigned long *bits)
 {
        struct gen_74x164_chip *chip = gpiochip_get_data(gc);
        unsigned long offset;
@@ -85,7 +85,7 @@ static void gen_74x164_set_multiple(struct gpio_chip *gc, unsigned long *mask,
                chip->buffer[bank] &= ~bankmask;
                chip->buffer[bank] |= bitmask;
        }
-       __gen_74x164_write_config(chip);
+       return __gen_74x164_write_config(chip);
 }
 
 static int gen_74x164_direction_output(struct gpio_chip *gc,
@@ -141,8 +141,8 @@ static int gen_74x164_probe(struct spi_device *spi)
        chip->gpio_chip.label = spi->modalias;
        chip->gpio_chip.direction_output = gen_74x164_direction_output;
        chip->gpio_chip.get = gen_74x164_get_value;
-       chip->gpio_chip.set = gen_74x164_set_value;
-       chip->gpio_chip.set_multiple = gen_74x164_set_multiple;
+       chip->gpio_chip.set_rv = gen_74x164_set_value;
+       chip->gpio_chip.set_multiple_rv = gen_74x164_set_multiple;
        chip->gpio_chip.base = -1;
        chip->gpio_chip.ngpio = GEN_74X164_NUMBER_GPIOS * chip->registers;
        chip->gpio_chip.can_sleep = true;