From: Greg Meiste Date: Mon, 26 Jul 2010 19:02:18 +0000 (-0500) Subject: mfd: cpcap-irq: Short power button presses don't wake up X-Git-Tag: firefly_0821_release~9834^2~761 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5226f9f0c4bdbce89cb6f0c46489ef432a2ef928;p=firefly-linux-kernel-4.4.55.git 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 --- 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); }