Re: [PATCH] GPIO button wth wakeup attribute is supposed to wake the system up
From: Rafael J. Wysocki <hidden>
Date: 2014-07-09 12:27:14
Also in:
linux-pm, lkml
From: Rafael J. Wysocki <hidden>
Date: 2014-07-09 12:27:14
Also in:
linux-pm, lkml
On Tuesday, July 08, 2014 05:54:35 PM Dmitry Torokhov wrote:
On Wed, Jul 09, 2014 at 02:59:33AM +0200, Rafael J. Wysocki wrote:quoted
On Tuesday, July 08, 2014 05:15:06 PM Dmitry Torokhov wrote:quoted
On Wed, Jul 09, 2014 at 01:06:07AM +0200, Rafael J. Wysocki wrote:
[cut]
quoted
quoted
When device driver marks IRQ as a wakeup source I believe it is prepared to handle it (or it would shut it off explicitly).I can agree with that. Are you suggesting that __disable_irq() should check irq_data for IRQD_WAKEUP_STATE and skip the IRQ (in the 'suspend' case) if that is set?Yes, something like that.
OK Aubrey, can you please check if the appended patch helps on the T100? Rafael --- kernel/irq/manage.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: linux-pm/kernel/irq/manage.c ===================================================================
--- linux-pm.orig/kernel/irq/manage.c
+++ linux-pm/kernel/irq/manage.c@@ -385,7 +385,8 @@ setup_affinity(unsigned int irq, struct void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend) { if (suspend) { - if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND)) + if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND) + || irqd_has_set(&desc->irq_data, IRQD_WAKEUP_STATE)) return; desc->istate |= IRQS_SUSPENDED; }