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

From: Arnd Bergmann <[email-masked]>
Date: Thu, 10 Apr 2008 15:44:43 +0200

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 simpler

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?

	Arnd <><