From: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
To: Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
Cc: Nishanth Menon <nm-l0cyMroinI0@public.gmane.org>,
lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Keerthy <j-keerthy-l0cyMroinI0@public.gmane.org>,
Mark Brown <broonie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
LAK
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
Kevin Hilman <khilman-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Subject: Re: [PATCH V3 3/3] mfd: palmas: Add support for optional wakeup
Date: Thu, 13 Nov 2014 15:45:52 -0800 [thread overview]
Message-ID: <20141113234551.GR26481@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.11.1411132251170.3935@nanos>
* Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> [141113 14:27]:
> On Thu, 13 Nov 2014, Tony Lindgren wrote:
> > Oops thanks for catching that. As the devres stuff is separate, I've
> > updated the patch to keep it that way by adding a minimal manage.h.
> > This avoids including internals.h in devres.c. Does that seem usable
> > for you?
>
> What's wrong with internals.h? devres.c is core code, so it is not
> affected of the ban to include internals.h :)
No problem, just that we need to bring in few other includes and
devres.c is currently free of any core irq stuff :) I can switch to
internals.h no problem if you prefer that.
> > + * So if replaying the lost device interrupts is absolutely needed from the
> > + * hardware point of view, it's probably best to set up a completely
> > + * separate wake-up interrupt handler for the wake-up interrupt in the
> > + * device driver because of the reasons above.
>
> Can we please kill this last paragraph? I'm already seeing the
> gazillion of "I think it is required to do so for my soooo special
> chip" implementations in random drivers which all get it wrong again.
OK :)
> So I'd rather provide a mechanism upfront which lets the driver know
> that the wakeup interrupt originated from that device, i.e. let the
> wake up handler call
>
> pm_wakeup_irq(dev);
>
> which calls:
>
> pm_runtime_mark_last_busy(dev);
> pm_request_resume(dev);
>
> and aside of that tells the device via a flag or preferrably a
> sequence counter that the wakeup irq has been triggered. So affected
> devices can handle it based on that information w/o implementing the
> next broken variant of wakeup irq handlers.
OK I'll take a look if we can just set some pm_runtime flag and use
the pm_runtime counters for that.
> That also allows to remove the wakeflags check for level/edge.
>
> > + */
> > +int init_disabled_wakeirq(struct device *dev, unsigned int wakeirq,
> > + unsigned long wakeflags)
> > +{
> > + if (!(dev && wakeirq)) {
>
> This is the second time I stumbled over this. While it is correct it
> would be simpler to parse
>
> if (!dev || !wakeirq) {
>
> At least for my review damaged brain :)
Heh !!true.
> > + pr_err("Missing device or wakeirq for %s irq %d\n",
> > + dev_name(dev), wakeirq);
> > + return -EINVAL;
> > + }
> > +
> > + if (!(wakeflags & IRQF_ONESHOT)) {
> > + pr_err("Invalid wakeirq for %s irq %d, must be oneshot\n",
> > + dev_name(dev), wakeirq);
> > + return -EINVAL;
> > + }
>
> Is there a reason why we force the wakeirq into a threaded handler?
Yes the drivers may need to restore hardware state in the pm_runtime
calls and who knows what else drivers will be doing. So that too might
be a good reason to just set a flag in pm_runtime land.
Anyways, thanks for your comments. I'll post a complete series after
looking into the wake-up counters a bit.
Regards,
Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3 3/3] mfd: palmas: Add support for optional wakeup
Date: Thu, 13 Nov 2014 15:45:52 -0800 [thread overview]
Message-ID: <20141113234551.GR26481@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.11.1411132251170.3935@nanos>
* Thomas Gleixner <tglx@linutronix.de> [141113 14:27]:
> On Thu, 13 Nov 2014, Tony Lindgren wrote:
> > Oops thanks for catching that. As the devres stuff is separate, I've
> > updated the patch to keep it that way by adding a minimal manage.h.
> > This avoids including internals.h in devres.c. Does that seem usable
> > for you?
>
> What's wrong with internals.h? devres.c is core code, so it is not
> affected of the ban to include internals.h :)
No problem, just that we need to bring in few other includes and
devres.c is currently free of any core irq stuff :) I can switch to
internals.h no problem if you prefer that.
> > + * So if replaying the lost device interrupts is absolutely needed from the
> > + * hardware point of view, it's probably best to set up a completely
> > + * separate wake-up interrupt handler for the wake-up interrupt in the
> > + * device driver because of the reasons above.
>
> Can we please kill this last paragraph? I'm already seeing the
> gazillion of "I think it is required to do so for my soooo special
> chip" implementations in random drivers which all get it wrong again.
OK :)
> So I'd rather provide a mechanism upfront which lets the driver know
> that the wakeup interrupt originated from that device, i.e. let the
> wake up handler call
>
> pm_wakeup_irq(dev);
>
> which calls:
>
> pm_runtime_mark_last_busy(dev);
> pm_request_resume(dev);
>
> and aside of that tells the device via a flag or preferrably a
> sequence counter that the wakeup irq has been triggered. So affected
> devices can handle it based on that information w/o implementing the
> next broken variant of wakeup irq handlers.
OK I'll take a look if we can just set some pm_runtime flag and use
the pm_runtime counters for that.
> That also allows to remove the wakeflags check for level/edge.
>
> > + */
> > +int init_disabled_wakeirq(struct device *dev, unsigned int wakeirq,
> > + unsigned long wakeflags)
> > +{
> > + if (!(dev && wakeirq)) {
>
> This is the second time I stumbled over this. While it is correct it
> would be simpler to parse
>
> if (!dev || !wakeirq) {
>
> At least for my review damaged brain :)
Heh !!true.
> > + pr_err("Missing device or wakeirq for %s irq %d\n",
> > + dev_name(dev), wakeirq);
> > + return -EINVAL;
> > + }
> > +
> > + if (!(wakeflags & IRQF_ONESHOT)) {
> > + pr_err("Invalid wakeirq for %s irq %d, must be oneshot\n",
> > + dev_name(dev), wakeirq);
> > + return -EINVAL;
> > + }
>
> Is there a reason why we force the wakeirq into a threaded handler?
Yes the drivers may need to restore hardware state in the pm_runtime
calls and who knows what else drivers will be doing. So that too might
be a good reason to just set a flag in pm_runtime land.
Anyways, thanks for your comments. I'll post a complete series after
looking into the wake-up counters a bit.
Regards,
Tony
WARNING: multiple messages have this Message-ID (diff)
From: Tony Lindgren <tony@atomide.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Nishanth Menon <nm@ti.com>,
lee.jones@linaro.org, LKML <linux-kernel@vger.kernel.org>,
devicetree@vger.kernel.org, Keerthy <j-keerthy@ti.com>,
Mark Brown <broonie@linaro.org>,
Samuel Ortiz <sameo@linux.intel.com>,
linux-omap@vger.kernel.org,
LAK <linux-arm-kernel@lists.infradead.org>,
Kevin Hilman <khilman@linaro.org>
Subject: Re: [PATCH V3 3/3] mfd: palmas: Add support for optional wakeup
Date: Thu, 13 Nov 2014 15:45:52 -0800 [thread overview]
Message-ID: <20141113234551.GR26481@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.11.1411132251170.3935@nanos>
* Thomas Gleixner <tglx@linutronix.de> [141113 14:27]:
> On Thu, 13 Nov 2014, Tony Lindgren wrote:
> > Oops thanks for catching that. As the devres stuff is separate, I've
> > updated the patch to keep it that way by adding a minimal manage.h.
> > This avoids including internals.h in devres.c. Does that seem usable
> > for you?
>
> What's wrong with internals.h? devres.c is core code, so it is not
> affected of the ban to include internals.h :)
No problem, just that we need to bring in few other includes and
devres.c is currently free of any core irq stuff :) I can switch to
internals.h no problem if you prefer that.
> > + * So if replaying the lost device interrupts is absolutely needed from the
> > + * hardware point of view, it's probably best to set up a completely
> > + * separate wake-up interrupt handler for the wake-up interrupt in the
> > + * device driver because of the reasons above.
>
> Can we please kill this last paragraph? I'm already seeing the
> gazillion of "I think it is required to do so for my soooo special
> chip" implementations in random drivers which all get it wrong again.
OK :)
> So I'd rather provide a mechanism upfront which lets the driver know
> that the wakeup interrupt originated from that device, i.e. let the
> wake up handler call
>
> pm_wakeup_irq(dev);
>
> which calls:
>
> pm_runtime_mark_last_busy(dev);
> pm_request_resume(dev);
>
> and aside of that tells the device via a flag or preferrably a
> sequence counter that the wakeup irq has been triggered. So affected
> devices can handle it based on that information w/o implementing the
> next broken variant of wakeup irq handlers.
OK I'll take a look if we can just set some pm_runtime flag and use
the pm_runtime counters for that.
> That also allows to remove the wakeflags check for level/edge.
>
> > + */
> > +int init_disabled_wakeirq(struct device *dev, unsigned int wakeirq,
> > + unsigned long wakeflags)
> > +{
> > + if (!(dev && wakeirq)) {
>
> This is the second time I stumbled over this. While it is correct it
> would be simpler to parse
>
> if (!dev || !wakeirq) {
>
> At least for my review damaged brain :)
Heh !!true.
> > + pr_err("Missing device or wakeirq for %s irq %d\n",
> > + dev_name(dev), wakeirq);
> > + return -EINVAL;
> > + }
> > +
> > + if (!(wakeflags & IRQF_ONESHOT)) {
> > + pr_err("Invalid wakeirq for %s irq %d, must be oneshot\n",
> > + dev_name(dev), wakeirq);
> > + return -EINVAL;
> > + }
>
> Is there a reason why we force the wakeirq into a threaded handler?
Yes the drivers may need to restore hardware state in the pm_runtime
calls and who knows what else drivers will be doing. So that too might
be a good reason to just set a flag in pm_runtime land.
Anyways, thanks for your comments. I'll post a complete series after
looking into the wake-up counters a bit.
Regards,
Tony
next prev parent reply other threads:[~2014-11-13 23:45 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-18 19:04 [PATCH V3 0/3] mfd: palmas: add optional wakeup irq Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-18 19:04 ` [PATCH V3 1/3] Documentation: dt-bindings: mfd: palmas: Fix example style of i2c peripheral Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-18 19:04 ` [PATCH V3 2/3] Documentation: dt-bindings: mfd: palmas: document optional wakeup IRQ Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
[not found] ` <1411067086-16613-1-git-send-email-nm-l0cyMroinI0@public.gmane.org>
2014-09-18 19:04 ` [PATCH V3 3/3] mfd: palmas: Add support for optional wakeup Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-18 19:04 ` Nishanth Menon
2014-09-19 0:57 ` Thomas Gleixner
2014-09-19 0:57 ` Thomas Gleixner
2014-09-19 3:03 ` Nishanth Menon
2014-09-19 3:03 ` Nishanth Menon
2014-09-19 3:03 ` Nishanth Menon
2014-09-19 15:37 ` Thomas Gleixner
2014-09-19 15:37 ` Thomas Gleixner
2014-09-19 15:37 ` Thomas Gleixner
2014-09-19 16:19 ` Nishanth Menon
2014-09-19 16:19 ` Nishanth Menon
2014-09-19 16:19 ` Nishanth Menon
2014-09-19 17:36 ` Thomas Gleixner
2014-09-19 17:36 ` Thomas Gleixner
2014-09-19 17:36 ` Thomas Gleixner
2014-09-19 19:16 ` Tony Lindgren
2014-09-19 19:16 ` Tony Lindgren
2014-09-19 19:16 ` Tony Lindgren
[not found] ` <20140919191649.GQ14505-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-09-19 19:46 ` Thomas Gleixner
2014-09-19 19:46 ` Thomas Gleixner
2014-09-19 19:46 ` Thomas Gleixner
2014-09-19 19:57 ` Tony Lindgren
2014-09-19 19:57 ` Tony Lindgren
2014-09-19 19:57 ` Tony Lindgren
[not found] ` <20140919195738.GR14505-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-09-20 2:07 ` Thomas Gleixner
2014-09-20 2:07 ` Thomas Gleixner
2014-09-20 2:07 ` Thomas Gleixner
2014-09-20 14:07 ` Tony Lindgren
2014-09-20 14:07 ` Tony Lindgren
2014-09-20 14:07 ` Tony Lindgren
2014-10-02 3:43 ` Tony Lindgren
2014-10-02 3:43 ` Tony Lindgren
[not found] ` <20141002034345.GH3122-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-11-06 20:46 ` Tony Lindgren
2014-11-06 20:46 ` Tony Lindgren
2014-11-06 20:46 ` Tony Lindgren
[not found] ` <20141106204629.GF31454-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-11-13 10:03 ` Thomas Gleixner
2014-11-13 10:03 ` Thomas Gleixner
2014-11-13 10:03 ` Thomas Gleixner
2014-11-13 17:40 ` Tony Lindgren
2014-11-13 17:40 ` Tony Lindgren
[not found] ` <20141113174030.GM26481-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-11-13 22:25 ` Thomas Gleixner
2014-11-13 22:25 ` Thomas Gleixner
2014-11-13 22:25 ` Thomas Gleixner
2014-11-13 23:45 ` Tony Lindgren [this message]
2014-11-13 23:45 ` Tony Lindgren
2014-11-13 23:45 ` Tony Lindgren
2014-11-14 16:19 ` Felipe Balbi
2014-11-14 16:19 ` Felipe Balbi
2014-11-14 16:19 ` Felipe Balbi
2014-11-14 17:08 ` Tony Lindgren
2014-11-14 17:08 ` Tony Lindgren
2014-11-14 17:08 ` Tony Lindgren
[not found] ` <20141114170816.GW26481-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-11-14 17:21 ` Felipe Balbi
2014-11-14 17:21 ` Felipe Balbi
2014-11-14 17:21 ` Felipe Balbi
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=20141113234551.GR26481@atomide.com \
--to=tony-4v6ys6ai5vpbdgjk7y7tuq@public.gmane.org \
--cc=broonie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=j-keerthy-l0cyMroinI0@public.gmane.org \
--cc=khilman-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=nm-l0cyMroinI0@public.gmane.org \
--cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.