Message ID | 1307373155-29470-4-git-send-email-david@protonic.nl (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Jun 6, 2011 at 9:12 AM, David Jander <david@protonic.nl> wrote: > Use a threaded interrupt handler in order to permit the handler to use > a GPIO driver that causes things like I2C transactions being done inside > the handler context. > Also, gpio_keys_init needs to be declared as a late_initcall, to make sure > all needed GPIO drivers have been loaded if the drivers are built into the > kernel. > > Signed-off-by: David Jander <david@protonic.nl> Looks okay to me. Acked-by: Grant Likely <grant.likely@secretlab.ca> > --- > drivers/input/keyboard/gpio_keys.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c > index 4efd067..bfbdfe8 100644 > --- a/drivers/input/keyboard/gpio_keys.c > +++ b/drivers/input/keyboard/gpio_keys.c > @@ -3,7 +3,7 @@ > * > * Copyright 2005 Phil Blundell > * > - * Added OF support: > + * Added OF support and enabled use with I2C GPIO expanders: > * Copyright 2010 David Jander <david@protonic.nl> > * > * This program is free software; you can redistribute it and/or modify > @@ -418,7 +418,7 @@ static int __devinit gpio_keys_setup_key(struct device *dev, > if (!button->can_disable) > irqflags |= IRQF_SHARED; > > - error = request_any_context_irq(irq, gpio_keys_isr, irqflags, desc, bdata); > + error = request_threaded_irq(irq, NULL, gpio_keys_isr, irqflags, desc, bdata); > if (error < 0) { > dev_err(dev, "Unable to claim irq %d; error %d\n", > irq, error); > @@ -771,10 +771,10 @@ static void __exit gpio_keys_exit(void) > platform_driver_unregister(&gpio_keys_device_driver); > } > > -module_init(gpio_keys_init); > +late_initcall(gpio_keys_init); > module_exit(gpio_keys_exit); > > MODULE_LICENSE("GPL"); > MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>"); > -MODULE_DESCRIPTION("Keyboard driver for CPU GPIOs"); > +MODULE_DESCRIPTION("Keyboard driver for GPIOs"); > MODULE_ALIAS("platform:gpio-keys"); > -- > 1.7.4.1 > >
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 4efd067..bfbdfe8 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -3,7 +3,7 @@ * * Copyright 2005 Phil Blundell * - * Added OF support: + * Added OF support and enabled use with I2C GPIO expanders: * Copyright 2010 David Jander <david@protonic.nl> * * This program is free software; you can redistribute it and/or modify @@ -418,7 +418,7 @@ static int __devinit gpio_keys_setup_key(struct device *dev, if (!button->can_disable) irqflags |= IRQF_SHARED; - error = request_any_context_irq(irq, gpio_keys_isr, irqflags, desc, bdata); + error = request_threaded_irq(irq, NULL, gpio_keys_isr, irqflags, desc, bdata); if (error < 0) { dev_err(dev, "Unable to claim irq %d; error %d\n", irq, error); @@ -771,10 +771,10 @@ static void __exit gpio_keys_exit(void) platform_driver_unregister(&gpio_keys_device_driver); } -module_init(gpio_keys_init); +late_initcall(gpio_keys_init); module_exit(gpio_keys_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>"); -MODULE_DESCRIPTION("Keyboard driver for CPU GPIOs"); +MODULE_DESCRIPTION("Keyboard driver for GPIOs"); MODULE_ALIAS("platform:gpio-keys");
Use a threaded interrupt handler in order to permit the handler to use a GPIO driver that causes things like I2C transactions being done inside the handler context. Also, gpio_keys_init needs to be declared as a late_initcall, to make sure all needed GPIO drivers have been loaded if the drivers are built into the kernel. Signed-off-by: David Jander <david@protonic.nl> --- drivers/input/keyboard/gpio_keys.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)