linux-mips
[Top] [All Lists]

Re: Alchemy power managment code.

To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: Re: Alchemy power managment code.
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Fri, 28 Mar 2008 18:14:36 +0300
Cc: ralf@linux-mips.org, linux-mips@linux-mips.org, ncoesel@DEALogic.nl
In-reply-to: <20080328.232527.72707102.anemo@mba.ocn.ne.jp>
Organization: MontaVista Software Inc.
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <47E7BB4B.3080507@ru.mvista.com> <20080327223134.GA26997@linux-mips.org> <47ECD828.8090600@ru.mvista.com> <20080328.232527.72707102.anemo@mba.ocn.ne.jp>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (X11; U; Linux i686; rv:1.7.2) Gecko/20040803
Hello.

Atsushi Nemoto wrote:

Correct - and cevt-r4k won't be usable either.  I guess that means you
leave the user the choice between either these two or using wait.  Not
nice but ...

The Alchemy code doesn't even try to use CP0 counter when CONFIG_PM=y if you look into arch/mips/au1000/common/time.c... or at least it didn't before Atsushi removed do_fast_pm_gettimeoffset().

Oh, yes. At that time I tried to implement clocksource drivers for
non-standard timers, but it seems I had missied Alchemy PM=y case.

The driver would be something like this?  Completely untested ;-)

static cycle_t au1000_hpt_read(void)
{
        return au_readl(SYS_TOYREAD);
}

struct clocksource au1000_clocksource = {
        .name   = "au1000-counter",
        .rating = 200,

   Rating should be greater than that of CP0 counter...

        .read   = au1000_hpt_read,
        .mask   = CLOCKSOURCE_MASK(32),
        .flags  = CLOCK_SOURCE_IS_CONTINUOUS,
};

void __init au1000_clocksource_init(unsinged long cpu_speed)
{
        struct clocksource *cs = &au1000_clocksource;

        clocksource_set_clock(cs, cpu_speed);

Not really, it's clocked by 32768 Hz input, so probably not very good as a clocksource.

        clocksource_register(cs);
}

WBR, Sergei

<Prev in Thread] Current Thread [Next in Thread>