lkml.org 
[lkml]   [2011]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/6] [RFC] rtc: rtc-cmos: Add pm_stay_awake/pm_relax calls around IRQ
On Mon, 26 Sep 2011 12:13:51 -0700 John Stultz <john.stultz@linaro.org> wrote:

> Flag the rtc-cmos IRQ event as a wakeup event using pm_stay_awake
> and pm_relax()

It seems that only the 0/6 patch in this sequence was given any attention.
However it appears to me that 3, 4, and 5 stand on their own and are clearly
bug-fixes - the bug being that the wake-up event generated by the CMOS rtc is
not being counted as a wakeup event by the power core.

I'm less clear on 5, but that is probably simply that I don't understand this
code very well yet.

So maybe resend 4,5,6 by themselves and get them accepted? Or maybe Rafael
could just pick them up and review/apply them as they are ???

Thanks,
NeilBrown


>
> CC: Rafael J. Wysocki <rjw@sisk.pl>
> CC: arve@android.com
> CC: markgross@thegnar.org
> CC: Alan Stern <stern@rowland.harvard.edu>
> CC: amit.kucheria@linaro.org
> CC: farrowg@sg.ibm.com
> CC: Dmitry Fink (Palm GBU) <Dmitry.Fink@palm.com>
> CC: linux-pm@lists.linux-foundation.org
> CC: khilman@ti.com
> CC: Magnus Damm <damm@opensource.se>
> CC: mjg@redhat.com
> CC: peterz@infradead.org
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
> drivers/rtc/rtc-cmos.c | 13 +++++++++++--
> 1 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
> index 05beb6c..1cc4688 100644
> --- a/drivers/rtc/rtc-cmos.c
> +++ b/drivers/rtc/rtc-cmos.c
> @@ -538,11 +538,15 @@ static struct bin_attribute nvram = {
>
> static struct cmos_rtc cmos_rtc;
>
> +static struct wakeup_source *rtc_cmos_wakelock;
> +
> static irqreturn_t cmos_interrupt(int irq, void *p)
> {
> u8 irqstat;
> u8 rtc_control;
>
> + __pm_stay_awake(rtc_cmos_wakelock);
> +
> spin_lock(&rtc_lock);
>
> /* When the HPET interrupt handler calls us, the interrupt
> @@ -573,9 +577,12 @@ static irqreturn_t cmos_interrupt(int irq, void *p)
>
> if (is_intr(irqstat)) {
> rtc_update_irq(p, 1, irqstat);
> + __pm_relax(rtc_cmos_wakelock);
> return IRQ_HANDLED;
> - } else
> - return IRQ_NONE;
> + }
> +
> + __pm_relax(rtc_cmos_wakelock);
> + return IRQ_NONE;
> }
>
> #ifdef CONFIG_PNP
> @@ -1153,6 +1160,8 @@ static int __init cmos_init(void)
> {
> int retval = 0;
>
> + rtc_cmos_wakelock = wakeup_source_register("rtc_cmos");
> +
> #ifdef CONFIG_PNP
> retval = pnp_register_driver(&cmos_pnp_driver);
> if (retval == 0)

[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2011-10-01 23:35    [from the cache]
©2003-2011 Jasper Spaans