Hi, On 25-Jun-25 8:13 PM, Mario Limonciello wrote: > 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(). > > Cc: Hans de Goede <hansg@xxxxxxxxxx> > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> Thanks, patch looks good to me: Reviewed-by: Hans de Goede <hansg@xxxxxxxxxx> Regards, Hans > --- > 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);