Re: [PATCH v3 3/5] iio: proximity: sx9500: Set IRQ pin to direction-input if necessary

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux