On Wed, Sep 16, 2009 at 8:28 PM, Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> wrote: > On Wed, Sep 16, 2009 at 07:03:18PM +0400, Dmitry Eremin-Solenikov wrote: >> There is nothing that disallows gpio-keys to share it's IRQ line >> w/ other drivers. Make it use IRQF_SHARED in request_irq(). >> >> An example of other driver with which I'd like to share IRQ line >> for GPIO buttons is ledtrig-gpio. >> >> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@xxxxxxxxx> >> --- >> drivers/input/keyboard/gpio_keys.c | 1 + >> 1 files changed, 1 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c >> index efed0c9..9fc2fab 100644 >> --- a/drivers/input/keyboard/gpio_keys.c >> +++ b/drivers/input/keyboard/gpio_keys.c >> @@ -147,6 +147,7 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev) >> } >> >> error = request_irq(irq, gpio_keys_isr, >> + IRQF_SHARED | >> IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, >> button->desc ? button->desc : "gpio_keys", >> bdata); > > How will you determine which device generated the interrupt? Because you > can't return IRQ_HANDLED unconditionally and expect both devices work > reliably. It's a single device (gpio pin). However I'd like to be able to attach several handlers to it. E.g. one isr is gpio-keys (for reporting event to userspace), another isr will be from ledtrig-gpio (controlling the LED). Another can be some kind of battery driver, etc. All these drivers will provide different kinds of response for single GPIO pin. -- With best wishes Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html