mfd: cpcap-irq: Short power button presses don't wake up
authorGreg Meiste <w30289@motorola.com>
Mon, 26 Jul 2010 19:02:18 +0000 (14:02 -0500)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:33:23 +0000 (16:33 -0700)
Fix for Issue 2866518: Short power button presses during suspend don't
wake up.

Signed-off-by: Greg Meiste <w30289@motorola.com>
drivers/mfd/cpcap-irq.c

index b0726ca4a8dbe1b0b7f0a0f452d0aa268646931b..e010e0dda74d1ae4df2a05d2a330e3dd9050eddc 100644 (file)
@@ -166,6 +166,13 @@ static void pwrkey_handler(enum cpcap_irqs irq, void *data)
                wake_lock_timeout(&pwrkey_data->wake_lock, 20);
                cpcap_broadcast_key_event(cpcap, KEY_END, new_state);
                pwrkey_data->state = new_state;
+       } else if ((last_state == PWRKEY_RELEASE) &&
+                  (new_state == PWRKEY_RELEASE)) {
+               /* Key must have been released before press was handled. Send
+                * both the press and the release. */
+               wake_lock_timeout(&pwrkey_data->wake_lock, 20);
+               cpcap_broadcast_key_event(cpcap, KEY_END, PWRKEY_PRESS);
+               cpcap_broadcast_key_event(cpcap, KEY_END, PWRKEY_RELEASE);
        }
        cpcap_irq_unmask(cpcap, CPCAP_IRQ_ON);
 }