]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (pmbus/ucd9000) Use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 7 Apr 2025 07:16:17 +0000 (09:16 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 23 Apr 2025 14:18:27 +0000 (07:18 -0700)
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20250407-gpiochip-set-rv-hwmon-v1-2-1fa38f34dc07@linaro.org
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/ucd9000.c

index 9b0eadc81a2eeae94de9449a227ee9fe92f9d549..2bc8cccb01fd00c32bc0d21da5da1d67b0b50117 100644 (file)
@@ -212,8 +212,8 @@ static int ucd9000_gpio_get(struct gpio_chip *gc, unsigned int offset)
        return !!(ret & UCD9000_GPIO_CONFIG_STATUS);
 }
 
-static void ucd9000_gpio_set(struct gpio_chip *gc, unsigned int offset,
-                            int value)
+static int ucd9000_gpio_set(struct gpio_chip *gc, unsigned int offset,
+                           int value)
 {
        struct i2c_client *client = gpiochip_get_data(gc);
        int ret;
@@ -222,17 +222,17 @@ static void ucd9000_gpio_set(struct gpio_chip *gc, unsigned int offset,
        if (ret < 0) {
                dev_dbg(&client->dev, "failed to read GPIO %d config: %d\n",
                        offset, ret);
-               return;
+               return ret;
        }
 
        if (value) {
                if (ret & UCD9000_GPIO_CONFIG_STATUS)
-                       return;
+                       return 0;
 
                ret |= UCD9000_GPIO_CONFIG_STATUS;
        } else {
                if (!(ret & UCD9000_GPIO_CONFIG_STATUS))
-                       return;
+                       return 0;
 
                ret &= ~UCD9000_GPIO_CONFIG_STATUS;
        }
@@ -244,7 +244,7 @@ static void ucd9000_gpio_set(struct gpio_chip *gc, unsigned int offset,
        if (ret < 0) {
                dev_dbg(&client->dev, "Failed to write GPIO %d config: %d\n",
                        offset, ret);
-               return;
+               return ret;
        }
 
        ret &= ~UCD9000_GPIO_CONFIG_ENABLE;
@@ -253,6 +253,8 @@ static void ucd9000_gpio_set(struct gpio_chip *gc, unsigned int offset,
        if (ret < 0)
                dev_dbg(&client->dev, "Failed to write GPIO %d config: %d\n",
                        offset, ret);
+
+       return ret;
 }
 
 static int ucd9000_gpio_get_direction(struct gpio_chip *gc,
@@ -362,7 +364,7 @@ static void ucd9000_probe_gpio(struct i2c_client *client,
        data->gpio.direction_input = ucd9000_gpio_direction_input;
        data->gpio.direction_output = ucd9000_gpio_direction_output;
        data->gpio.get = ucd9000_gpio_get;
-       data->gpio.set = ucd9000_gpio_set;
+       data->gpio.set_rv = ucd9000_gpio_set;
        data->gpio.can_sleep = true;
        data->gpio.base = -1;
        data->gpio.parent = &client->dev;