]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpio: pcf857x: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 19 Jun 2025 08:33:15 +0000 (10:33 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 23 Jun 2025 07:25:46 +0000 (09:25 +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/20250619-gpiochip-set-rv-gpio-v2-2-74abf689fbd8@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-pcf857x.c

index 2e5f5d7f886598318b753304e7e0efca54ff8b69..a042036803336439d8e164fcfbd0263b0e84f3a4 100644 (file)
@@ -171,21 +171,24 @@ static int pcf857x_output(struct gpio_chip *chip, unsigned int offset, int value
        return status;
 }
 
-static void pcf857x_set(struct gpio_chip *chip, unsigned int offset, int value)
+static int pcf857x_set(struct gpio_chip *chip, unsigned int offset, int value)
 {
-       pcf857x_output(chip, offset, value);
+       return pcf857x_output(chip, offset, value);
 }
 
-static void pcf857x_set_multiple(struct gpio_chip *chip, unsigned long *mask,
-                                unsigned long *bits)
+static int pcf857x_set_multiple(struct gpio_chip *chip, unsigned long *mask,
+                               unsigned long *bits)
 {
        struct pcf857x *gpio = gpiochip_get_data(chip);
+       int status;
 
        mutex_lock(&gpio->lock);
        gpio->out &= ~*mask;
        gpio->out |= *bits & *mask;
-       gpio->write(gpio->client, gpio->out);
+       status = gpio->write(gpio->client, gpio->out);
        mutex_unlock(&gpio->lock);
+
+       return status;
 }
 
 /*-------------------------------------------------------------------------*/
@@ -292,8 +295,8 @@ static int pcf857x_probe(struct i2c_client *client)
        gpio->chip.owner                = THIS_MODULE;
        gpio->chip.get                  = pcf857x_get;
        gpio->chip.get_multiple         = pcf857x_get_multiple;
-       gpio->chip.set                  = pcf857x_set;
-       gpio->chip.set_multiple         = pcf857x_set_multiple;
+       gpio->chip.set_rv               = pcf857x_set;
+       gpio->chip.set_multiple_rv      = pcf857x_set_multiple;
        gpio->chip.direction_input      = pcf857x_input;
        gpio->chip.direction_output     = pcf857x_output;
        gpio->chip.ngpio                = (uintptr_t)i2c_get_match_data(client);