Input: gpio-keys - use hrtimer for software debounce, if possible
authorPaul Cercueil <paul@crapouillou.net>
Sun, 21 Mar 2021 23:09:29 +0000 (16:09 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 25 Mar 2021 18:14:08 +0000 (11:14 -0700)
commitc9efb0ba281e88e2faec6ad919be509b6ab8ead6
tree37ff7e7790bccaff1b9d2dee7fdf45c5a3aec4c3
parent019002f20cb5b9f78d39360aff244265d035e08a
Input: gpio-keys - use hrtimer for software debounce, if possible

We want to be able to report the input event as soon as the debounce
delay elapsed. However, the current code does not really ensure that,
as it uses the jiffies-based schedule_delayed_work() API. With a small
enough HZ value (HZ <= 100), this results in some input events being
lost, when a key is quickly pressed then released (on a human's time
scale).

Switching to hrtimers fixes this issue, and will work even on extremely
low HZ values (tested at HZ=24). This is however only possible if
reading the GPIO is possible without sleeping. If this condition is not
met, the previous approach of using a jiffies-based timer is taken.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Link: https://lore.kernel.org/r/20210307222240.380583-3-paul@crapouillou.net
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/gpio_keys.c