On Mon, Mar 7, 2022 at 12:56 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > It appears that GPIO ACPI library uses ACPI debounce values directly. > However, the GPIO library APIs expect the debounce timeout to be in > microseconds. > > Convert ACPI value of debounce to microseconds. > > While at it, document this detail where it is appropriate. > > BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215664 > Reported-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> > Fixes: 8dcb7a15a585 ("gpiolib: acpi: Take into account debounce settings") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/gpio/gpiolib-acpi.c | 6 ++++-- > drivers/gpio/gpiolib.c | 10 ++++++++++ > 2 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c > index c0f6a25c3279..a5495ad31c9c 100644 > --- a/drivers/gpio/gpiolib-acpi.c > +++ b/drivers/gpio/gpiolib-acpi.c > @@ -307,7 +307,8 @@ static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip, > if (IS_ERR(desc)) > return desc; > > - ret = gpio_set_debounce_timeout(desc, agpio->debounce_timeout); > + /* 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", > @@ -1035,7 +1036,8 @@ int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int ind > if (ret < 0) > return ret; > > - ret = gpio_set_debounce_timeout(desc, info.debounce); > + /* ACPI uses hundredths of milliseconds units */ > + ret = gpio_set_debounce_timeout(desc, info.debounce * 10); > if (ret) > return ret; > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index f5e7443208d4..f956c533f218 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -2223,6 +2223,16 @@ static int gpio_set_bias(struct gpio_desc *desc) > return gpio_set_config_with_argument_optional(desc, bias, arg); > } > > +/** > + * gpio_set_debounce_timeout() - Set debounce timeout > + * @desc: GPIO descriptor to set the debounce timeout > + * @debounce: Debounce timeout in microseconds > + * > + * The function calls the certain GPIO driver to set debounce timeout > + * in the hardware. > + * > + * Returns 0 on success, or negative error code otherwise. > + */ > int gpio_set_debounce_timeout(struct gpio_desc *desc, unsigned int debounce) > { > return gpio_set_config_with_argument_optional(desc, > -- > 2.34.1 > Do you have some more stuff coming up for fixes or do you want me to queue it directly? Bart