Re: [PATCH] ARM: pxa: fix suspend on PXA3XX

Sven Neumann
2011-01-26T08:10:52Z

On Wed, 2011-01-26 at 05:06 +0800, Eric Miao wrote:
> How about this instead?
>
> diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c
> index 978e1b2..1807c9a 100644
> --- a/arch/arm/mach-pxa/pm.c
> +++ b/arch/arm/mach-pxa/pm.c
> @@ -33,7 +33,7 @@ int pxa_pm_enter(suspend_state_t state)
> #endif
>
> /* skip registers saving for standby */
> - if (state != PM_SUSPEND_STANDBY) {
> + if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->save) {
> pxa_cpu_pm_fns->save(sleep_save);
> /* before sleeping, calculate and save a checksum */
> for (i = 0; i < pxa_cpu_pm_fns->save_count - 1; i++)
> @@ -44,7 +44,7 @@ int pxa_pm_enter(suspend_state_t state)
> pxa_cpu_pm_fns->enter(state);
> cpu_init();
>
> - if (state != PM_SUSPEND_STANDBY) {
> + if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->restore) {
> /* after sleeping, validate the checksum */
> for (i = 0; i < pxa_cpu_pm_fns->save_count - 1; i++)
> checksum += sleep_save[i];
>

Not sure if that will work as well. With this change the code is
skipping more than just the calls to pxa_cpu_pm_fns->save() and
pxa_cpu_pm_fns->restore(). In particular it doesn't call
pxa_cpu_pm_fns->enter(state).

Thanks,
Sven