On Wed, Mar 25, 2015 at 11:12 PM, Octavian Purdila <octavian.purdila@xxxxxxxxx> wrote: > On Wed, Mar 25, 2015 at 3:21 PM, Mika Westerberg > <mika.westerberg@xxxxxxxxxxxxxxx> wrote: >> On Wed, Mar 25, 2015 at 02:25:05PM +0200, Mika Westerberg wrote: >>> I think we can do the same for ACPI GpioInts so that we introduce >>> acpi_gpio_irq_get() that translates from GpioInt to Linux IRQ >>> numberspace. Then we can do something like below in I2C core: >>> >>> if (client->irq <= 0) { >>> int irq = -ENOENT; >>> >>> if (dev->of_node) >>> irq = of_irq_get(dev->of_node, 0); >>> else if (ACPI_COMPANION(dev)) >>> irq = acpi_gpio_irq_get(ACPI_COMPANION(dev), 0); >>> >>> if (irq == -EPROBE_DEFER) >>> return irq; >>> if (irq < 0) >>> irq = 0; >>> >>> client->irq = irq; >>> } >>> >>> Now it has the drawback that the first GpioInt will not be available to >>> the driver anymore (as a GPIO since it is locked) but if DT already does >>> the same we should be fine. >> >> Below patch should take care of this. >> > > One issue we noticed is that now the gpio request and set input > directions operations are not called anymore. Some gpio controller > drivers (dln2, adnp, lynx_point from quickly browsing the code) do not > explicitly enable the GPIO pin nor set direction to input when the > interrupt is enabled. Depending on hardware this may be an issue - it > is on dln2 for example. > > Should the gpio controllers enable and set to input in irq_enable, > irq_bus_sync_unlock, etc.? Or should this be done in gpiolib? I've tested the patch and it works if the GPIO pin is enabled in the controller (which isn't as Octavian said). I believe that the patch should enable the pin and set the direction before it is used as IRQ. Robert -- 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