Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1763,6 +1763,9 @@ EXPORT_SYMBOL_GPL(gpio_direction_output);
 * gpio_set_debounce - sets @debounce time for a @gpio
 * @gpio: the gpio to set debounce time
 * @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)
{
@@ -1778,9 +1781,9 @@ static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)

	chip = desc->chip;
	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__);
		return -EIO;
		return -ENOTSUPP;
	}

	spin_lock_irqsave(&gpio_lock, flags);