summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorSteve Sakoman <steve@sakoman.com>2011-03-09 18:08:06 -0600
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-03-11 15:48:53 +0200
commitcce18a947967ed028e5301bce84cbaff395489a6 (patch)
treecb4be51559a8dab4a549b3ad237a8d37cdc1f7b0 /arch
parent7c94f68d7b490c7787c6b97c5b2d6d56d57b071c (diff)
OMAP: Add gpio-keys support for Overo
This patch adds support for the standard push buttons available on Overo expansion boards. Signed-off-by: Steve Sakoman <steve@sakoman.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap2/board-overo.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index e694ebd2636c..1e17061649e5 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -519,6 +519,47 @@ static void __init overo_init_led(void)
static inline void __init overo_init_led(void) { return; }
#endif
+#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
+#include <linux/input.h>
+#include <linux/gpio_keys.h>
+
+static struct gpio_keys_button gpio_buttons[] = {
+ {
+ .code = BTN_0,
+ .gpio = 23,
+ .desc = "button0",
+ .wakeup = 1,
+ },
+ {
+ .code = BTN_1,
+ .gpio = 14,
+ .desc = "button1",
+ .wakeup = 1,
+ },
+};
+
+static struct gpio_keys_platform_data gpio_keys_pdata = {
+ .buttons = gpio_buttons,
+ .nbuttons = ARRAY_SIZE(gpio_buttons),
+};
+
+static struct platform_device gpio_keys_device = {
+ .name = "gpio-keys",
+ .id = -1,
+ .dev = {
+ .platform_data = &gpio_keys_pdata,
+ },
+};
+
+static void __init overo_init_keys(void)
+{
+ platform_device_register(&gpio_keys_device);
+}
+
+#else
+static inline void __init overo_init_keys(void) { return; }
+#endif
+
static int overo_twl_gpio_setup(struct device *dev,
unsigned gpio, unsigned ngpio)
{
@@ -701,6 +742,7 @@ static void __init overo_init(void)
overo_init_smsc911x();
overo_display_init();
overo_init_led();
+ overo_init_keys();
/* Ensure SDRC pins are mux'd for self-refresh */
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);