aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c2416/pm.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-07-02 04:54:01 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-07-02 04:54:01 -0400
commit29cb3cd208dd0e4471bb80bec4facc49ceb199fa (patch)
tree035128bf7af997d5e1e5208c900ba78c5a1df46d /arch/arm/mach-s3c2416/pm.c
parentcbe263497def23befb6f475977661bae5d1f82e4 (diff)
ARM: pm: allow suspend finisher to return error codes
There are SoCs where attempting to enter a low power state is ignored, and the CPU continues executing instructions with all state preserved. It is over-complex at that point to disable the MMU just to call the resume path. Instead, allow the suspend finisher to return error codes to abort suspend in this circumstance, where the cpu_suspend internals will then unwind the saved state on the stack. Also omit the tlb flush as no changes to the page tables will have happened. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-s3c2416/pm.c')
-rw-r--r--arch/arm/mach-s3c2416/pm.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm/mach-s3c2416/pm.c b/arch/arm/mach-s3c2416/pm.c
index 9e67a2a07a86..9ec54f1d8e75 100644
--- a/arch/arm/mach-s3c2416/pm.c
+++ b/arch/arm/mach-s3c2416/pm.c
@@ -24,7 +24,7 @@
24 24
25extern void s3c2412_sleep_enter(void); 25extern void s3c2412_sleep_enter(void);
26 26
27static void s3c2416_cpu_suspend(unsigned long arg) 27static int s3c2416_cpu_suspend(unsigned long arg)
28{ 28{
29 /* enable wakeup sources regardless of battery state */ 29 /* enable wakeup sources regardless of battery state */
30 __raw_writel(S3C2443_PWRCFG_SLEEP, S3C2443_PWRCFG); 30 __raw_writel(S3C2443_PWRCFG_SLEEP, S3C2443_PWRCFG);
@@ -33,6 +33,8 @@ static void s3c2416_cpu_suspend(unsigned long arg)
33 __raw_writel(0x2BED, S3C2443_PWRMODE); 33 __raw_writel(0x2BED, S3C2443_PWRMODE);
34 34
35 s3c2412_sleep_enter(); 35 s3c2412_sleep_enter();
36
37 panic("sleep resumed to originator?");
36} 38}
37 39
38static void s3c2416_pm_prepare(void) 40static void s3c2416_pm_prepare(void)