On Wed, Nov 08, 2017 at 06:35:46PM +0200, Andy Shevchenko wrote: > +Cc: Mika > > On Sat, 2017-11-04 at 03:20 +0000, Jonathan Cameron wrote: > > On Fri, 3 Nov 2017 15:03:38 +0200 > > Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > > > > With the new more strict ACPI gpio code the DSDT's IoRestriction > > > flags > > > are honored on gpiod_get(), but in some DSDT's it is wrong, so > > > explicitly call gpiod_direction_input() on the IRQ GPIO if > > > necessary. > > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > > > Again, I really really don't like filling driver code with fixes > > for broken firmware. I appreciate we have to cope with this, but > > it does rather seem like this should be moved into the core code > > for say gpiod_get_irq. > > I would love to fix in general, though it looks not so trivial: > > - gpiod_get() doesn't know if GPIO is going to be used as IRQ > - gpiod_to_irq() doesn't know if descriptor in question comes from > GpioIo() ACPI resource One idea is to allow this strict mode to be relaxed by drivers perhaps by passing quirks through struct acpi_gpio_mapping: static const struct acpi_gpio_mapping acpi_foo_gpios[] = { /* * This platform has a bug in ACPI GPIO description making IRQ * GPIO to be output only. Ask the GPIO core to ignore this * limit. */ { "foobar-gpios", &foobar_gpios, 1, ACPI_QUIRK_IGNORE_IO_RESTRICTION }, {}, }; or something like that. Not sure if I missed something obvious, though. -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html