diff options
-rw-r--r-- | drivers/input/keyboard/pxa27x_keypad.c | 1 | ||||
-rw-r--r-- | include/asm-arm/arch-pxa/pxa27x_keypad.h | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c index ceaf1e0ab54..6224c2fb3b6 100644 --- a/drivers/input/keyboard/pxa27x_keypad.c +++ b/drivers/input/keyboard/pxa27x_keypad.c @@ -357,6 +357,7 @@ static void pxa27x_keypad_config(struct pxa27x_keypad *keypad) keypad_writel(KPC, kpc | KPC_RE_ZERO_DEB); keypad_writel(KPREC, DEFAULT_KPREC); + keypad_writel(KPKDI, pdata->debounce_interval); } static int pxa27x_keypad_open(struct input_dev *dev) diff --git a/include/asm-arm/arch-pxa/pxa27x_keypad.h b/include/asm-arm/arch-pxa/pxa27x_keypad.h index 6b832329ebc..644f7609b52 100644 --- a/include/asm-arm/arch-pxa/pxa27x_keypad.h +++ b/include/asm-arm/arch-pxa/pxa27x_keypad.h @@ -19,6 +19,9 @@ * * 3. rotary can be either interpreted as a relative input event (e.g. * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT) + * + * 4. matrix key and direct key will use the same debounce_interval by + * default, which should be sufficient in most cases */ struct pxa27x_keypad_platform_data { @@ -43,6 +46,9 @@ struct pxa27x_keypad_platform_data { int rotary1_rel_code; int rotary1_up_key; int rotary1_down_key; + + /* key debounce interval */ + unsigned int debounce_interval; }; #define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val)) |