ARM: pm: move cpu_init() call into core code
authorRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 21 Jun 2011 15:32:58 +0000 (16:32 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 24 Jun 2011 07:48:43 +0000 (08:48 +0100)
As we have core code dealing with CPU suspend/resume, we can
re-initialize the CPUs exception banked registers via that code rather
than having platforms deal with that level of detail.  So, move the
call to cpu_init() out of platform code into core code.

Tested-by: Kevin Hilman <khilman@ti.com>
Acked-by: Jean Pihet <j-pihet@ti.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/sleep.S
arch/arm/mach-pxa/pm.c
arch/arm/mach-sa1100/pm.c
arch/arm/plat-samsung/pm.c

index e062677..5392274 100644 (file)
@@ -88,6 +88,7 @@ ENDPROC(cpu_resume_turn_mmu_on)
 cpu_resume_after_mmu:
        str     r5, [r2, r4, lsl #2]    @ restore old mapping
        mcr     p15, 0, r0, c1, c0, 0   @ turn on D-cache
+       bl      cpu_init                @ restore the und/abt/irq banked regs
        ldmfd   sp!, {r4 - r11, pc}
 ENDPROC(cpu_resume_after_mmu)
 
index 51e1583..37178a8 100644 (file)
@@ -42,7 +42,6 @@ int pxa_pm_enter(suspend_state_t state)
 
        /* *** go zzz *** */
        pxa_cpu_pm_fns->enter(state);
-       cpu_init();
 
        if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->restore) {
                /* after sleeping, validate the checksum */
index c4661aa..d35885c 100644 (file)
@@ -77,8 +77,6 @@ static int sa11x0_pm_enter(suspend_state_t state)
        /* go zzz */
        sa1100_cpu_suspend(PLAT_PHYS_OFFSET - PAGE_OFFSET);
 
-       cpu_init();
-
        /*
         * Ensure not to come back here if it wasn't intended
         */
index 5c0a440..3828191 100644 (file)
@@ -300,10 +300,6 @@ static int s3c_pm_enter(suspend_state_t state)
 
        s3c_cpu_save(0, PLAT_PHYS_OFFSET - PAGE_OFFSET);
 
-       /* restore the cpu state using the kernel's cpu init code. */
-
-       cpu_init();
-
        /* restore the system state */
 
        s3c_pm_restore_core();