gpio: loongson-64bit: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 23 Apr 2025 07:15:12 +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: 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-10-b22245cde81a@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-loongson-64bit.c

index a9a93036f08ff02b14a60f370b591b7ac8a1d868..26227669f02692aeb943ec4be8b66b0dc968cac0 100644 (file)
@@ -105,7 +105,7 @@ static int loongson_gpio_get_direction(struct gpio_chip *chip, unsigned int pin)
        return GPIO_LINE_DIRECTION_OUT;
 }
 
-static void loongson_gpio_set(struct gpio_chip *chip, unsigned int pin, int value)
+static int loongson_gpio_set(struct gpio_chip *chip, unsigned int pin, int value)
 {
        unsigned long flags;
        struct loongson_gpio_chip *lgpio = to_loongson_gpio_chip(chip);
@@ -113,6 +113,8 @@ static void loongson_gpio_set(struct gpio_chip *chip, unsigned int pin, int valu
        spin_lock_irqsave(&lgpio->lock, flags);
        loongson_commit_level(lgpio, pin, value);
        spin_unlock_irqrestore(&lgpio->lock, flags);
+
+       return 0;
 }
 
 static int loongson_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
@@ -155,7 +157,7 @@ static int loongson_gpio_init(struct device *dev, struct loongson_gpio_chip *lgp
                lgpio->chip.get = loongson_gpio_get;
                lgpio->chip.get_direction = loongson_gpio_get_direction;
                lgpio->chip.direction_output = loongson_gpio_direction_output;
-               lgpio->chip.set = loongson_gpio_set;
+               lgpio->chip.set_rv = loongson_gpio_set;
                lgpio->chip.parent = dev;
                spin_lock_init(&lgpio->lock);
        }