Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=512f03fdae58b96568bac1beee4d3d3b34d4ead4
Commit:     512f03fdae58b96568bac1beee4d3d3b34d4ead4
Parent:     dd01b2fc79a567ae03d0c96ddf61eb4de729d36d
Author:     eric miao <[EMAIL PROTECTED]>
AuthorDate: Mon Jan 14 15:50:54 2008 +0800
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Sat Jan 26 15:07:57 2008 +0000

    [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 <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mach-pxa/pm.c |   33 ++++++++++++++++++---------------
 1 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c
index a941c71..039194c 100644
--- a/arch/arm/mach-pxa/pm.c
+++ b/arch/arm/mach-pxa/pm.c
@@ -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;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to