HID: cp2112: fix broken gpio_direction_input callback

When everything goes smoothly, ret is set to 0 which makes the function
to return EIO error.

Fixes: 8e9faa1546 ("HID: cp2112: fix gpio-callback error handling")
Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
Sébastien Szymanski 2017-11-10 10:01:43 +01:00 committed by Jiri Kosina
parent ce4dd820d7
commit 7da85fbf1c

View File

@ -196,6 +196,8 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
HID_REQ_GET_REPORT); HID_REQ_GET_REPORT);
if (ret != CP2112_GPIO_CONFIG_LENGTH) { if (ret != CP2112_GPIO_CONFIG_LENGTH) {
hid_err(hdev, "error requesting GPIO config: %d\n", ret); hid_err(hdev, "error requesting GPIO config: %d\n", ret);
if (ret >= 0)
ret = -EIO;
goto exit; goto exit;
} }
@ -205,8 +207,10 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
ret = hid_hw_raw_request(hdev, CP2112_GPIO_CONFIG, buf, ret = hid_hw_raw_request(hdev, CP2112_GPIO_CONFIG, buf,
CP2112_GPIO_CONFIG_LENGTH, HID_FEATURE_REPORT, CP2112_GPIO_CONFIG_LENGTH, HID_FEATURE_REPORT,
HID_REQ_SET_REPORT); HID_REQ_SET_REPORT);
if (ret < 0) { if (ret != CP2112_GPIO_CONFIG_LENGTH) {
hid_err(hdev, "error setting GPIO config: %d\n", ret); hid_err(hdev, "error setting GPIO config: %d\n", ret);
if (ret >= 0)
ret = -EIO;
goto exit; goto exit;
} }
@ -214,7 +218,7 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
exit: exit:
mutex_unlock(&dev->lock); mutex_unlock(&dev->lock);
return ret < 0 ? ret : -EIO; return ret;
} }
static void cp2112_gpio_set(struct gpio_chip *chip, unsigned offset, int value) static void cp2112_gpio_set(struct gpio_chip *chip, unsigned offset, int value)