From patchwork Tue Jun 7 09:04:29 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Jander X-Patchwork-Id: 855492 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p5799Pji009885 for ; Tue, 7 Jun 2011 09:09:53 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752551Ab1FGJFZ (ORCPT ); Tue, 7 Jun 2011 05:05:25 -0400 Received: from protonic.xs4all.nl ([213.84.116.84]:16135 "EHLO protonic.xs4all.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752329Ab1FGJFX (ORCPT ); Tue, 7 Jun 2011 05:05:23 -0400 Received: from archvile.prtnl (archvile.prtnl [192.168.1.153]) by protonic.xs4all.nl (Postfix) with ESMTP id 10C2029EBA; Tue, 7 Jun 2011 11:03:12 +0200 (CEST) From: David Jander To: Dmitry Torokhov Cc: Grant Likely , linux-input@vger.kernel.org, David Jander Subject: [PATCH 3/3] Input: gpio_keys.c: Enable use with non-local GPIO chips. Date: Tue, 7 Jun 2011 11:04:29 +0200 Message-Id: <1307437469-3791-4-git-send-email-david@protonic.nl> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1307437469-3791-1-git-send-email-david@protonic.nl> References: <1307437469-3791-1-git-send-email-david@protonic.nl> Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Tue, 07 Jun 2011 09:09:53 +0000 (UTC) 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 --- 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 4539b0b..bbb4e4d 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 * * 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); @@ -770,10 +770,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 "); -MODULE_DESCRIPTION("Keyboard driver for CPU GPIOs"); +MODULE_DESCRIPTION("Keyboard driver for GPIOs"); MODULE_ALIAS("platform:gpio-keys");