On Fri, Nov 29, 2013 at 11:45 AM, Lars-Peter Clausen <lars@xxxxxxxxxx> wrote: > On 11/29/2013 11:37 AM, Linus Walleij wrote: (...) >> Specifically you should be able to request an IRQ from the irq_chip >> portions of the driver without first requesting the GPIO line. >> >> Some drivers already support this. >> >> We added an internal API to the gpiolib so that the lib, *internally* >> can be made aware that a certain GPIO line is used for IRQs, >> see commit d468bf9ecaabd3bf3a6134e5a369ced82b1d1ca1 >> "gpio: add API to be strict about GPIO IRQ usage" >> >> So I guess the answer to the question is something like, fix >> the GPIO driver to stop requiring the GPIO lines to be requested >> and configured before being used as IRQs, delete that code, >> and while you're at it add a call to gpiod_lock_as_irq() >> to your GPIO driver in the right spot: examples are on the >> mailing list and my mark-irqs branch in the GPIO tree. > > As far as I understand it this already works more or less with the driver. > The problem is that the IRQ numbers are dynamically allocated, while the > GPIO numbers apparently are not. So the board code knows the the GPIO number > at compile time and can pass this to the diver which then does a gpio_to_irq > to lookup the IRQ number. This of course isn't really a problem with > devicetree, but only with platform board code. This has been solved *also* for platform board code by the new, fresh GPIO descriptor mechanism, see Documentation/gpio/* in Torvalds' git HEAD. In your board file provide something like that: http://marc.info/?l=linux-gpio&m=138546046203600&w=2 Then switch the driver to use the gpiod_* interface like: http://marc.info/?l=linux-gpio&m=138546036028076&w=2 Problem solved. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html