[PATCH] fix omap keypad
Brian Swetland
swetland at google.com
Sat Dec 3 04:27:34 CST 2005
- register an "omap-keypad" device so that the keypad
driver actually gets probed
- initialize kp_tasklet.data so that we don't crash the
first time the keypad tasklet runs
-------------- next part --------------
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index 1bb1058..4aeb032 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -99,6 +99,11 @@ static inline void omap_init_i2c(void) {
/*-------------------------------------------------------------------------*/
#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
+static struct platform_device omap_kp_device = {
+ .name = "omap-keypad",
+ .id = -1,
+};
+
static void omap_init_kp(void)
{
if (machine_is_omap_h2() || machine_is_omap_h3()) {
@@ -127,6 +132,8 @@ static void omap_init_kp(void)
omap_cfg_reg(F4_730_KBC3);
omap_cfg_reg(E3_730_KBC4);
}
+
+ (void) platform_device_register(&omap_kp_device);
}
#else
static inline void omap_init_kp(void) {}
diff --git a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c
index 15351bb..7e851e2 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -331,6 +331,7 @@ static int __init omap_kp_probe(struct p
/* get the irq and init timer*/
tasklet_enable(&kp_tasklet);
+ kp_tasklet.data = (unsigned long) omap_kp;
if (request_irq(keypad_irq, omap_kp_interrupt, 0,
"omap-keypad", 0) < 0)
return -EINVAL;
More information about the Linux-omap-open-source
mailing list