]> www.infradead.org Git - linux.git/commitdiff
gpio: max732x: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 6 May 2025 09:01:51 +0000 (11:01 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 13 May 2025 13:15:35 +0000 (15:15 +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/20250506-gpiochip-set-rv-gpio-part3-v1-8-0fbdea5a9667@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-max732x.c

index 49d362907bc7d1fc3385eea24f70db14cb719ff1..d5ffedb086af4bda13d10c49dc29bcc08c1abb70 100644 (file)
@@ -225,16 +225,19 @@ out:
        mutex_unlock(&chip->lock);
 }
 
-static void max732x_gpio_set_value(struct gpio_chip *gc, unsigned off, int val)
+static int max732x_gpio_set_value(struct gpio_chip *gc, unsigned int off,
+                                 int val)
 {
        unsigned base = off & ~0x7;
        uint8_t mask = 1u << (off & 0x7);
 
        max732x_gpio_set_mask(gc, base, mask, val << (off & 0x7));
+
+       return 0;
 }
 
-static void max732x_gpio_set_multiple(struct gpio_chip *gc,
-                                     unsigned long *mask, unsigned long *bits)
+static int max732x_gpio_set_multiple(struct gpio_chip *gc,
+                                    unsigned long *mask, unsigned long *bits)
 {
        unsigned mask_lo = mask[0] & 0xff;
        unsigned mask_hi = (mask[0] >> 8) & 0xff;
@@ -243,6 +246,8 @@ static void max732x_gpio_set_multiple(struct gpio_chip *gc,
                max732x_gpio_set_mask(gc, 0, mask_lo, bits[0] & 0xff);
        if (mask_hi)
                max732x_gpio_set_mask(gc, 8, mask_hi, (bits[0] >> 8) & 0xff);
+
+       return 0;
 }
 
 static int max732x_gpio_direction_input(struct gpio_chip *gc, unsigned off)
@@ -580,8 +585,8 @@ static int max732x_setup_gpio(struct max732x_chip *chip,
                gc->direction_input = max732x_gpio_direction_input;
        if (chip->dir_output) {
                gc->direction_output = max732x_gpio_direction_output;
-               gc->set = max732x_gpio_set_value;
-               gc->set_multiple = max732x_gpio_set_multiple;
+               gc->set_rv = max732x_gpio_set_value;
+               gc->set_multiple_rv = max732x_gpio_set_multiple;
        }
        gc->get = max732x_gpio_get_value;
        gc->can_sleep = true;