Input: omap-keypad - clear interrupts on open
authorIllia Smyrnov <illia.smyrnov@ti.com>
Mon, 26 Aug 2013 06:26:16 +0000 (23:26 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 26 Aug 2013 07:15:53 +0000 (00:15 -0700)
According to TRM, the recommended way for keyboard controller
initialization is clear the interrupt-status register, then set up
certain keyboard events for generating an interrupt request and
set up expected source of wake-up event that generates a wake-up
request.

Signed-off-by: Illia Smyrnov <illia.smyrnov@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/omap4-keypad.c

index b876a0d..0244262 100644 (file)
@@ -185,8 +185,9 @@ static int omap4_keypad_open(struct input_dev *input)
                        (OMAP4_VAL_PVT << OMAP4_DEF_CTRL_PTV_SHIFT));
        kbd_writel(keypad_data, OMAP4_KBD_DEBOUNCINGTIME,
                        OMAP4_VAL_DEBOUNCINGTIME);
+       /* clear pending interrupts */
        kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
-                       OMAP4_VAL_IRQDISABLE);
+                        kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS));
        kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE,
                        OMAP4_DEF_IRQENABLE_EVENTEN |
                                OMAP4_DEF_IRQENABLE_LONGKEY);