This flag is already set by Motorola, as it is included in
GPIOKPF_REMOVE_PHANTOM_KEYS. I assume that nobody at Motorola
looked at this flag, as they would have seen that it also enable
the debouncing code which needs to have a debounce_delay set.
When the delay is 0 and the code is active, the bouncing even gets
worse, as the keypad is scanned more rapidly
printk(KERN_INFO "settle_time: %u\n", gpio_evmi->settle_time.tv.nsec);
printk(KERN_INFO "poll_time: %u\n", gpio_evmi->poll_time.tv.nsec);
printk(KERN_INFO "debounce_delay: %u\n", gpio_evmi->debounce_delay.tv.nsec);
printk(KERN_INFO "settle_time: %u\n", gpio_evmi->settle_time.tv.nsec);
printk(KERN_INFO "poll_time: %u\n", gpio_evmi->poll_time.tv.nsec);
printk(KERN_INFO "debounce_delay: %u\n", gpio_evmi->debounce_delay.tv.nsec);
+ printk(KERN_INFO "flags: %x\n", gpio_evmi->flags);
if (!gpio_evmi->debounce_delay.tv.nsec) {
printk(KERN_INFO "Activating debounce!\n");
gpio_evmi->debounce_delay.tv.nsec = 5 * NSEC_PER_MSEC;
if (!gpio_evmi->debounce_delay.tv.nsec) {
printk(KERN_INFO "Activating debounce!\n");
gpio_evmi->debounce_delay.tv.nsec = 5 * NSEC_PER_MSEC;
+
+ /* GPIOKPF_DEBOUNCE should already be set by GPIOKPF_REMOVE_PHANTOM_KEYS */
+ gpio_evmi->flags |= GPIOKPF_DEBOUNCE;
printk(KERN_INFO "debounce_delay: %u\n", gpio_evmi->debounce_delay.tv.nsec);
printk(KERN_INFO "debounce_delay: %u\n", gpio_evmi->debounce_delay.tv.nsec);
+ printk(KERN_INFO "flags: %x\n", gpio_evmi->flags);