Subject: Re: [PATCH] [v5] Add idle wait support for 44x platforms

From: Jerone Young <[email-masked]>
Date: Thu, 10 Apr 2008 15:08:51 -0500

On Thu, 2008-04-10 at 15:44 +0200, Arnd Bergmann wrote:
> On Tuesday 08 April 2008, Jerone Young wrote:
> > +static struct sleep_mode modes[] = {
> > +       { .name = "wait", .entry = &ppc44x_idle },
> > +       { .name = "spin", .entry = NULL },
> > +};
> > +
> > +int __init ppc44x_idle_init(void)
> > +{
> > +       void *func = modes[current_mode].entry;
> > +       ppc_md.power_save = func;
> > +       return 0;
> > +}
> > +
> > +arch_initcall(ppc44x_idle_init);
> > +
> > +static int __init idle_param(char *p)
> > +{ 
> > +       int i;
> > +
> > +       for (i = 0; i < ARRAY_SIZE(modes); i++) {
> > +               if (!strcmp(modes[i].name, p)) {
> > +                       current_mode = i;
> > +                       break;
> > +               }
> > +       }
> > +
> > +       return 0;
> > +}
> > +
> > +early_param("idle", idle_param);
> 
> ok, sorry to steal the show again, now that everyone seems to be happy
> with the current code, but isn't this equivalent to the simple

Well it could be this simple. But the current code leaves a lot more
room to add different type waits or spins if need be (if they are ever
needed ... though none off the top of my head at the moment)...but it
does allow you to create another wait state for whatever reason a lot
easier.

So I really don't think this needs to change. Unless everyone really
feels that it just has to be.

> 
> static int __init idle_param(char *p)
> {
> 	if (!strcmp(modes[i].name, "spin"))
> 		ppc_md.power_save = NULL;
> }
> early_param("idle", idle_param);
> 
> if you statically initialize the ppc_md.power_save function to ppc44x_idle
> in the platform setup files?

The idea is to not statically initialize ppc_md.power_save to
ppc44x_idle in each platform setup file.

> 	Arnd <><