On 04/28/2015 08:05 AM, Mika Westerberg wrote:
Hi, Currently drivers for ACPI enumerated devices that have their interrupt line connected to a GPIO controller instead of IO-APIC are required to do complete gpiod_get()/gpiod_to_irq() etc. dance themselves. This adds unnecessary lines of code to these drivers. It turned out that DT solved the problem already with introduction of of_irq_get() which is able to handle GPIO based interrupts as well through irqchip API [1]. Following two patches does the same for ACPI by introducing new function acpi_dev_gpio_irq_get() that is then used in I2C core to automatically translate ACPI GpioInt resource to Linux IRQ number. This requires that the boot firmware (BIOS/coreboot) configures these pins correctly (input, etc) before handing over to OS. I've tested this on Intel Baytrail, Braswell and Skylake based machines where this is true.
Why not configure the GPIO pin as input in the API itself ?
[1] https://lkml.org/lkml/2015/3/25/103 Mika Westerberg (2): gpio / ACPI: Add support for retrieving GpioInt resources from a device i2c / ACPI: Assign IRQ for devices that have GpioInt automatically drivers/gpio/gpiolib-acpi.c | 29 +++++++++++++++++++++++++++++ drivers/i2c/i2c-core.c | 9 +++++++-- include/linux/acpi.h | 7 +++++++ 3 files changed, 43 insertions(+), 2 deletions(-)
-- Sathyanarayanan Kuppuswamy Android kernel developer -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html