RE: [PATCH] input:gpio-key: set IRQF_NO_SUSPEND for wake capable key
flat view
From: Li, Aubrey <hidden>
Date: 2015-10-09 02:47:45
On Friday, October 09, 2015 10:14 AM, Zheng, Qi wrote:
Hi, "enable_irq_wake" is to enable/disable power-management wake-on of an IRQ. It is wake-on control not interrupt enable control. In my opinion, to make sure the keys press working when system suspend, both wake-on and interrupt should be enabled. Besides, for many platforms, the gpio irq chip don't implement the method "enable_irq_wake" by setting "IRQCHIP_SKIP_SET_WAKE". So, I think "IRQF_NO_SUSPEND" is necessary for this case.
We had a discussion on this before. Here is the thread: https://lkml.org/lkml/2014/7/8/970 device_init_wakeup() is a general interface and supposed to be used to enable wakeup for the wakeup sources. How gpio keys probe and call device_init_wakeup() is a good reference for your case. Thanks, -Aubrey
BRs Zheng Qi PEG->IPG->EIG SH IO/LPSS team -----Original Message----- From: Dmitry Torokhov [mailto:dmitry.torokhov@gmail.com] Sent: Saturday, October 3, 2015 1:42 AM To: Linus Walleij <redacted> Cc: Zha, Qipeng <qipeng.zha@intel.com>; Linux Input [off-list ref]; Zheng, Qi [off-list ref]; Li, Aubrey [off-list ref] Subject: Re: [PATCH] input:gpio-key: set IRQF_NO_SUSPEND for wake capable key On Fri, Oct 02, 2015 at 03:26:27AM -0700, Linus Walleij wrote:quoted
On Thu, Sep 17, 2015 at 9:06 AM, Qipeng Zha [off-list ref]wrote:quoted
quoted
When wakeup attribute is set, GPIO key is supposed to wake up the system from system sleep state, So set IRQF_NO_SUSPEND flag to keep IRQ enabled during suspend. Signed-off-by: Qi Zheng <redacted> Signed-off-by: Aubrey Li <redacted> Signed-off-by: Qipeng Zha <qipeng.zha@intel.com>Reviewed-by: Linus Walleij <redacted> Should this not be tagged for stable?I do not believe we need this at all. Otherwise every single driver for devices that might be wakeup sources needs this flag set. Which would basically means it is a noop and we should not suspend IRQ threads by default. The dirver correctly calls enable_irq_wake() and platform should do whatever it needs to make sure wakeup interrupt will be serviced. Thanks. -- Dmitry