]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: cp2112: use new line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 23 Apr 2025 08:55:42 +0000 (10:55 +0200)
committerJiri Kosina <jkosina@suse.com>
Thu, 24 Apr 2025 10:07:55 +0000 (12:07 +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>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-cp2112.c

index 92dd891b7b597d4fb1a53af884972be284d99c0e..234fa82eab0795be4de9f5ba1a4ab6c16c6bff4c 100644 (file)
@@ -215,8 +215,8 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
        return 0;
 }
 
-static void cp2112_gpio_set_unlocked(struct cp2112_device *dev,
-                                    unsigned int offset, int value)
+static int cp2112_gpio_set_unlocked(struct cp2112_device *dev,
+                                   unsigned int offset, int value)
 {
        struct hid_device *hdev = dev->hdev;
        u8 *buf = dev->in_out_buffer;
@@ -231,16 +231,18 @@ static void cp2112_gpio_set_unlocked(struct cp2112_device *dev,
                                 HID_REQ_SET_REPORT);
        if (ret < 0)
                hid_err(hdev, "error setting GPIO values: %d\n", ret);
+
+       return ret;
 }
 
-static void cp2112_gpio_set(struct gpio_chip *chip, unsigned int offset,
-                           int value)
+static int cp2112_gpio_set(struct gpio_chip *chip, unsigned int offset,
+                          int value)
 {
        struct cp2112_device *dev = gpiochip_get_data(chip);
 
        guard(mutex)(&dev->lock);
 
-       cp2112_gpio_set_unlocked(dev, offset, value);
+       return cp2112_gpio_set_unlocked(dev, offset, value);
 }
 
 static int cp2112_gpio_get_all(struct gpio_chip *chip)
@@ -1286,7 +1288,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
        dev->gc.label                   = "cp2112_gpio";
        dev->gc.direction_input         = cp2112_gpio_direction_input;
        dev->gc.direction_output        = cp2112_gpio_direction_output;
-       dev->gc.set                     = cp2112_gpio_set;
+       dev->gc.set_rv                  = cp2112_gpio_set;
        dev->gc.get                     = cp2112_gpio_get;
        dev->gc.base                    = -1;
        dev->gc.ngpio                   = CP2112_GPIO_MAX_GPIO;