Input: soc_button_array - debounce the buttons
authorHans de Goede <hdegoede@redhat.com>
Sat, 21 Jan 2017 19:14:14 +0000 (11:14 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 21 Jan 2017 19:46:52 +0000 (11:46 -0800)
The soc_button_array driver was initializing (kzalloc) the
debounce_interval value to 0, leading to no debouncing at all,
while the buttons are simple mechanical switches.

This commit sets debounce_interval to 50ms to avoid spurious button
press reports both on press and release of the button. Note 50ms may
seem like a lot but soc_button_array is typically used with cheap
tablets, with not so great buttons. I tried 10ms on my tablet and it
is not enough, where as 50ms works well.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/soc_button_array.c

index fb3219a8d3c0baf8fa8f1d01a46c23448e65088a..ddb2f22fca7aff42ff7c3ae13b7b3f3e18eefafa 100644 (file)
@@ -102,6 +102,8 @@ soc_button_device_create(struct platform_device *pdev,
                gpio_keys[n_buttons].active_low = 1;
                gpio_keys[n_buttons].desc = info->name;
                gpio_keys[n_buttons].wakeup = info->wakeup;
+               /* These devices often use cheap buttons, use 50 ms debounce */
+               gpio_keys[n_buttons].debounce_interval = 50;
                n_buttons++;
        }