From: Mario Limonciello <mario.limonciello@xxxxxxx> Debounce is programmed in two places and considered non-fatal in one of them. Introduce a helper for programming debounce and show a warning when failing to program. This is a difference in behavior for the call in acpi_dev_gpio_irq_wake_get_by(). Reviewed-by: Hans de Goede <hansg@xxxxxxxxxx> Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> --- drivers/gpio/gpiolib-acpi-core.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/gpio/gpiolib-acpi-core.c b/drivers/gpio/gpiolib-acpi-core.c index 12b24a717e43f..1895e45bd9f16 100644 --- a/drivers/gpio/gpiolib-acpi-core.c +++ b/drivers/gpio/gpiolib-acpi-core.c @@ -291,6 +291,17 @@ acpi_gpio_to_gpiod_flags(const struct acpi_resource_gpio *agpio, int polarity) return GPIOD_ASIS; } +static void acpi_set_debounce_timeout(struct gpio_desc *desc, unsigned int timeout) +{ + int ret; + + /* ACPI uses hundredths of milliseconds units */ + ret = gpio_set_debounce_timeout(desc, timeout * 10); + if (ret) + dev_warn(&desc->gdev->dev, + "Failed to set debounce-timeout: %d\n", ret); +} + static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip, struct acpi_resource_gpio *agpio, unsigned int index, @@ -300,18 +311,12 @@ static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip, enum gpiod_flags flags = acpi_gpio_to_gpiod_flags(agpio, polarity); unsigned int pin = agpio->pin_table[index]; struct gpio_desc *desc; - int ret; desc = gpiochip_request_own_desc(chip, pin, label, polarity, flags); if (IS_ERR(desc)) return desc; - /* ACPI uses hundredths of milliseconds units */ - ret = gpio_set_debounce_timeout(desc, agpio->debounce_timeout * 10); - if (ret) - dev_warn(chip->parent, - "Failed to set debounce-timeout for pin 0x%04X, err %d\n", - pin, ret); + acpi_set_debounce_timeout(desc, agpio->debounce_timeout); return desc; } @@ -1025,10 +1030,7 @@ int acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *con_id, if (ret < 0) return ret; - /* ACPI uses hundredths of milliseconds units */ - ret = gpio_set_debounce_timeout(desc, info.debounce * 10); - if (ret) - return ret; + acpi_set_debounce_timeout(desc, info.debounce); irq_flags = acpi_dev_get_irq_type(info.triggering, info.polarity); -- 2.43.0