mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-20 04:44:26 +08:00
[ARM] pxa: skip registers saving/restoring if entering standby mode
registers are retained during standby mode, thus it's not necessary to save/restore and checksum Signed-off-by: eric miao <eric.miao@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
dd01b2fc79
commit
512f03fdae
@ -38,34 +38,37 @@ int pxa_pm_enter(suspend_state_t state)
|
||||
iwmmxt_task_disable(NULL);
|
||||
#endif
|
||||
|
||||
pxa_cpu_pm_fns->save(sleep_save);
|
||||
/* skip registers saving for standby */
|
||||
if (state != PM_SUSPEND_STANDBY) {
|
||||
pxa_cpu_pm_fns->save(sleep_save);
|
||||
/* before sleeping, calculate and save a checksum */
|
||||
for (i = 0; i < pxa_cpu_pm_fns->save_size - 1; i++)
|
||||
sleep_save_checksum += sleep_save[i];
|
||||
}
|
||||
|
||||
/* Clear sleep reset status */
|
||||
RCSR = RCSR_SMR;
|
||||
|
||||
/* before sleeping, calculate and save a checksum */
|
||||
for (i = 0; i < pxa_cpu_pm_fns->save_size - 1; i++)
|
||||
sleep_save_checksum += sleep_save[i];
|
||||
|
||||
/* *** go zzz *** */
|
||||
pxa_cpu_pm_fns->enter(state);
|
||||
cpu_init();
|
||||
|
||||
/* after sleeping, validate the checksum */
|
||||
for (i = 0; i < pxa_cpu_pm_fns->save_size - 1; i++)
|
||||
checksum += sleep_save[i];
|
||||
if (state != PM_SUSPEND_STANDBY) {
|
||||
/* after sleeping, validate the checksum */
|
||||
for (i = 0; i < pxa_cpu_pm_fns->save_size - 1; i++)
|
||||
checksum += sleep_save[i];
|
||||
|
||||
/* if invalid, display message and wait for a hardware reset */
|
||||
if (checksum != sleep_save_checksum) {
|
||||
/* if invalid, display message and wait for a hardware reset */
|
||||
if (checksum != sleep_save_checksum) {
|
||||
#ifdef CONFIG_ARCH_LUBBOCK
|
||||
LUB_HEXLED = 0xbadbadc5;
|
||||
LUB_HEXLED = 0xbadbadc5;
|
||||
#endif
|
||||
while (1)
|
||||
pxa_cpu_pm_fns->enter(state);
|
||||
while (1)
|
||||
pxa_cpu_pm_fns->enter(state);
|
||||
}
|
||||
pxa_cpu_pm_fns->restore(sleep_save);
|
||||
}
|
||||
|
||||
pxa_cpu_pm_fns->restore(sleep_save);
|
||||
|
||||
pr_debug("*** made it back from resume\n");
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user