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    [W:0.024 / U:30.568 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site