]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
USB: serial: cp210x: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 19 Jun 2025 09:02:41 +0000 (11:02 +0200)
committerJohan Hovold <johan@kernel.org>
Tue, 24 Jun 2025 08:40:51 +0000 (10:40 +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.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/cp210x.c

index 9960ac2b10b719192dfbab0a6e81b2cf80f40d36..cfa1d68c7919b998b645143096696bdea9ee4423 100644 (file)
@@ -1504,7 +1504,7 @@ static int cp210x_gpio_get(struct gpio_chip *gc, unsigned int gpio)
        return !!(mask & BIT(gpio));
 }
 
-static void cp210x_gpio_set(struct gpio_chip *gc, unsigned int gpio, int value)
+static int cp210x_gpio_set(struct gpio_chip *gc, unsigned int gpio, int value)
 {
        struct usb_serial *serial = gpiochip_get_data(gc);
        struct cp210x_serial_private *priv = usb_get_serial_data(serial);
@@ -1559,7 +1559,10 @@ out:
        if (result < 0) {
                dev_err(&serial->interface->dev, "failed to set GPIO value: %d\n",
                                result);
+               return result;
        }
+
+       return 0;
 }
 
 static int cp210x_gpio_direction_get(struct gpio_chip *gc, unsigned int gpio)
@@ -1599,9 +1602,8 @@ static int cp210x_gpio_direction_output(struct gpio_chip *gc, unsigned int gpio,
        struct cp210x_serial_private *priv = usb_get_serial_data(serial);
 
        priv->gpio_input &= ~BIT(gpio);
-       cp210x_gpio_set(gc, gpio, value);
 
-       return 0;
+       return cp210x_gpio_set(gc, gpio, value);
 }
 
 static int cp210x_gpio_set_config(struct gpio_chip *gc, unsigned int gpio,
@@ -1960,7 +1962,7 @@ static int cp210x_gpio_init(struct usb_serial *serial)
        priv->gc.direction_input = cp210x_gpio_direction_input;
        priv->gc.direction_output = cp210x_gpio_direction_output;
        priv->gc.get = cp210x_gpio_get;
-       priv->gc.set = cp210x_gpio_set;
+       priv->gc.set_rv = cp210x_gpio_set;
        priv->gc.set_config = cp210x_gpio_set_config;
        priv->gc.init_valid_mask = cp210x_gpio_init_valid_mask;
        priv->gc.owner = THIS_MODULE;