aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>2025-04-23 10:55:42 +0200
committerJiri Kosina <jkosina@suse.com>2025-04-24 12:07:55 +0200
commit6485543488a6d35e9f24c6f50cb63710446d8aab (patch)
tree077a4bc64f91a0bc0232caf1112647ea024fa184 /drivers/hid
parentHID: cp2112: use lock guards (diff)
downloadlinux-rng-6485543488a6d35e9f24c6f50cb63710446d8aab.tar.xz
linux-rng-6485543488a6d35e9f24c6f50cb63710446d8aab.zip
HID: cp2112: use new line value setter callbacks
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>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-cp2112.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c
index 92dd891b7b59..234fa82eab07 100644
--- a/drivers/hid/hid-cp2112.c
+++ b/drivers/hid/hid-cp2112.c
@@ -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;