]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpio: palmas: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 10 Jun 2025 12:33:22 +0000 (14:33 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 17 Jun 2025 09:09:31 +0000 (11:09 +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/20250610-gpiochip-set-rv-gpio-v1-12-3a9a3c1472ff@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-palmas.c

index 28dba7048509a3ef9c7972c1be53ea30adddabb0..a076daee00658a9e423a0d78f14ad48d61956d7a 100644 (file)
@@ -54,12 +54,11 @@ static int palmas_gpio_get(struct gpio_chip *gc, unsigned offset)
        return !!(val & BIT(offset));
 }
 
-static void palmas_gpio_set(struct gpio_chip *gc, unsigned offset,
-                       int value)
+static int palmas_gpio_set(struct gpio_chip *gc, unsigned int offset,
+                          int value)
 {
        struct palmas_gpio *pg = gpiochip_get_data(gc);
        struct palmas *palmas = pg->palmas;
-       int ret;
        unsigned int reg;
        int gpio16 = (offset/8);
 
@@ -71,9 +70,7 @@ static void palmas_gpio_set(struct gpio_chip *gc, unsigned offset,
                reg = (value) ?
                        PALMAS_GPIO_SET_DATA_OUT : PALMAS_GPIO_CLEAR_DATA_OUT;
 
-       ret = palmas_write(palmas, PALMAS_GPIO_BASE, reg, BIT(offset));
-       if (ret < 0)
-               dev_err(gc->parent, "Reg 0x%02x write failed, %d\n", reg, ret);
+       return palmas_write(palmas, PALMAS_GPIO_BASE, reg, BIT(offset));
 }
 
 static int palmas_gpio_output(struct gpio_chip *gc, unsigned offset,
@@ -89,7 +86,9 @@ static int palmas_gpio_output(struct gpio_chip *gc, unsigned offset,
        reg = (gpio16) ? PALMAS_GPIO_DATA_DIR2 : PALMAS_GPIO_DATA_DIR;
 
        /* Set the initial value */
-       palmas_gpio_set(gc, offset, value);
+       ret = palmas_gpio_set(gc, offset, value);
+       if (ret)
+               return ret;
 
        ret = palmas_update_bits(palmas, PALMAS_GPIO_BASE, reg,
                                BIT(offset), BIT(offset));
@@ -166,7 +165,7 @@ static int palmas_gpio_probe(struct platform_device *pdev)
        palmas_gpio->gpio_chip.direction_input = palmas_gpio_input;
        palmas_gpio->gpio_chip.direction_output = palmas_gpio_output;
        palmas_gpio->gpio_chip.to_irq = palmas_gpio_to_irq;
-       palmas_gpio->gpio_chip.set      = palmas_gpio_set;
+       palmas_gpio->gpio_chip.set_rv   = palmas_gpio_set;
        palmas_gpio->gpio_chip.get      = palmas_gpio_get;
        palmas_gpio->gpio_chip.parent = &pdev->dev;