From 5226f9f0c4bdbce89cb6f0c46489ef432a2ef928 Mon Sep 17 00:00:00 2001 From: Greg Meiste Date: Mon, 26 Jul 2010 14:02:18 -0500 Subject: [PATCH] mfd: cpcap-irq: Short power button presses don't wake up Fix for Issue 2866518: Short power button presses during suspend don't wake up. Signed-off-by: Greg Meiste --- drivers/mfd/cpcap-irq.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/mfd/cpcap-irq.c b/drivers/mfd/cpcap-irq.c index b0726ca4a8db..e010e0dda74d 100644 --- a/drivers/mfd/cpcap-irq.c +++ b/drivers/mfd/cpcap-irq.c @@ -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); } -- 2.34.1