Commit 65d87656 authored by Linus Walleij's avatar Linus Walleij

gpio: return -ENOTSUPP if debounce cannot be set

It appears some drivers are using gpio_set_debounce()
opportunistically, i.e. without knowing whether it works or
not. (Example: input/keyboard/gpio_keys.c) to account for
this use case, return -ENOTSUPP and do not print any
warnings in this case.

Took a round over the other gpio_set_debounce() consumers
to make sure that none of them are relying on the returned
error code to be something specific.
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent be1a4b13
...@@ -1763,6 +1763,9 @@ EXPORT_SYMBOL_GPL(gpio_direction_output); ...@@ -1763,6 +1763,9 @@ EXPORT_SYMBOL_GPL(gpio_direction_output);
* gpio_set_debounce - sets @debounce time for a @gpio * gpio_set_debounce - sets @debounce time for a @gpio
* @gpio: the gpio to set debounce time * @gpio: the gpio to set debounce time
* @debounce: debounce time is microseconds * @debounce: debounce time is microseconds
*
* returns -ENOTSUPP if the controller does not support setting
* debounce.
*/ */
static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce) static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)
{ {
...@@ -1778,9 +1781,9 @@ static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce) ...@@ -1778,9 +1781,9 @@ static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)
chip = desc->chip; chip = desc->chip;
if (!chip->set || !chip->set_debounce) { if (!chip->set || !chip->set_debounce) {
pr_warn("%s: missing set() or set_debounce() operations\n", pr_debug("%s: missing set() or set_debounce() operations\n",
__func__); __func__);
return -EIO; return -ENOTSUPP;
} }
spin_lock_irqsave(&gpio_lock, flags); spin_lock_irqsave(&gpio_lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment