linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Stein <alexander.stein@systec-electronic.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	"Li, Aubrey" <aubrey.li@linux.intel.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>,
	Linux PM list <linux-pm@vger.kernel.org>
Subject: Re: [PATCH] PM / sleep / irq: Do not suspend wakeup interrupts
Date: Tue, 15 Jul 2014 14:22:25 +0200	[thread overview]
Message-ID: <2067046.JFGH9LUctP@ws-stein> (raw)
In-Reply-To: <4679574.kGUnqAuNl9@vostro.rjw.lan>

On Thursday 10 July 2014 23:37:54, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> If an IRQ has been configured for wakeup via enable_irq_wake(), the
> driver who has done that must be prepared for receiving interrupts
> after suspend_device_irqs() has returned, so there is no need to
> "suspend" such IRQs.  Moreover, if drivers using enable_irq_wake()
> actually want to receive interrupts after suspend_device_irqs() has
> returned, they need to add IRQF_NO_SUSPEND to the IRQ flags while
> requesting the IRQs, which shouldn't be necessary (it also goes a bit
> too far, as IRQF_NO_SUSPEND causes the IRQ to be ignored by
> suspend_device_irqs() all the time regardless of whether or not it
> has been configured for signaling wakeup).
> 
> For the above reasons, make __disable_irq() ignore IRQ descriptors
> with IRQD_WAKEUP_STATE set when its suspend argument is true which
> effectively causes them to behave like IRQs with IRQF_NO_SUSPEND
> set.
> 
> This also allows IRQs configured for wakeup via enable_irq_wake()
> to work as wakeup interrupts for the "freeze" (suspend-to-idle)
> sleep mode automatically just like for any other sleep states.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>  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;
>  	}

Nice, this fixes my wakeup problem from freeze using gpio-keys. Unfortunately my SPI-attached touchscreen controller cannot be used for wakeup from freeze. Using it to wakeup from mem does work instead. Any ideas what might be wrong in this case?

Best regards,
Alexander


  reply	other threads:[~2014-07-15 12:25 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-19  0:51 [PATCH] GPIO button wth wakeup attribute is supposed to wake the system up Li, Aubrey
2014-06-19 10:40 ` One Thousand Gnomes
2014-06-23 23:35   ` Li, Aubrey
2014-07-08 20:52 ` Rafael J. Wysocki
2014-07-08 20:45   ` Dmitry Torokhov
2014-07-08 21:06     ` Rafael J. Wysocki
2014-07-08 21:12       ` Dmitry Torokhov
2014-07-08 21:47         ` Rafael J. Wysocki
2014-07-08 22:11           ` Dmitry Torokhov
2014-07-08 23:06             ` Rafael J. Wysocki
2014-07-09  0:15               ` Dmitry Torokhov
2014-07-09  0:59                 ` Rafael J. Wysocki
2014-07-09  0:54                   ` Dmitry Torokhov
2014-07-09 12:45                     ` Rafael J. Wysocki
2014-07-10  2:27                       ` Li, Aubrey
2014-07-10 11:27                         ` Rafael J. Wysocki
2014-07-10 21:37                           ` [PATCH] PM / sleep / irq: Do not suspend wakeup interrupts Rafael J. Wysocki
2014-07-15 12:22                             ` Alexander Stein [this message]
2014-07-15 12:50                               ` Rafael J. Wysocki
2014-07-15 12:36                                 ` Alexander Stein
2014-07-16  0:45                                   ` Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2067046.JFGH9LUctP@ws-stein \
    --to=alexander.stein@systec-electronic.com \
    --cc=aubrey.li@linux.intel.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gnomes@lxorguk.ukuu.org.uk \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).