On Thu, Oct 22, 2020 at 07:58:45PM +0300, Andy Shevchenko wrote: > In some cases the GpioInt() resource is coming with bias settings > which may affect system functioning. Respect bias settings for > GpioInt() resource by calling acpi_gpio_update_gpiod_*flags() API > in acpi_dev_gpio_irq_get(). > > Reported-by: Jamie McClymont <jamie@xxxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Reviewed-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> > --- > v2: preserved ordering of IRQ map (Hans, Mika), added Rb tag (Mika) Missed comment as per v1: This one highly depends on Intel pin control driver changes (for now [1], but might be more), so it's probably not supposed to be backported (at least right now). [1]: https://lore.kernel.org/linux-gpio/20201014104638.84043-1-andriy.shevchenko@xxxxxxxxxxxxxxx/T/ > drivers/gpio/gpiolib-acpi.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c > index 834a12f3219e..3a39e8a93226 100644 > --- a/drivers/gpio/gpiolib-acpi.c > +++ b/drivers/gpio/gpiolib-acpi.c > @@ -942,6 +942,7 @@ int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index) > > if (info.gpioint && idx++ == index) { > unsigned long lflags = GPIO_LOOKUP_FLAGS_DEFAULT; > + enum gpiod_flags dflags = GPIOD_ASIS; > char label[32]; > int irq; > > @@ -952,8 +953,11 @@ int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index) > if (irq < 0) > return irq; > > + acpi_gpio_update_gpiod_flags(&dflags, &info); > + acpi_gpio_update_gpiod_lookup_flags(&lflags, &info); > + > snprintf(label, sizeof(label), "GpioInt() %d", index); > - ret = gpiod_configure_flags(desc, label, lflags, info.flags); > + ret = gpiod_configure_flags(desc, label, lflags, dflags); > if (ret < 0) > return ret; > > -- > 2.28.0 > -- With Best Regards, Andy Shevchenko