diff options
author | Ben Dooks <ben-linux@fluff.org> | 2006-09-15 19:04:23 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-09-25 05:25:21 -0400 |
commit | 58095d7f39edc919cd3c63c6109ad282e7085da1 (patch) | |
tree | d0e7f7ef1a5a4b68dafbbc8e83eb57abd581bb83 /arch/arm/mach-s3c2410/pm.c | |
parent | 1e582fc73781da47eddd90c75bf97f191e4f450f (diff) |
[ARM] 3802/1: S3C24XX: PM tidy up cache flushing
Change to using flush_cache_all() in pm.c and
also remove the need to flush the cache in the
PM code.
This changes the sleep.S code to have an entry
to store the registers for resume, and then a
second entry (after the caches are cleaned)
to do the suspend and resume.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-s3c2410/pm.c')
-rw-r--r-- | arch/arm/mach-s3c2410/pm.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/mach-s3c2410/pm.c b/arch/arm/mach-s3c2410/pm.c index 164a5b5847d7..46dedd37f438 100644 --- a/arch/arm/mach-s3c2410/pm.c +++ b/arch/arm/mach-s3c2410/pm.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/ioport.h> | 35 | #include <linux/ioport.h> |
36 | #include <linux/delay.h> | 36 | #include <linux/delay.h> |
37 | 37 | ||
38 | #include <asm/cacheflush.h> | ||
38 | #include <asm/hardware.h> | 39 | #include <asm/hardware.h> |
39 | #include <asm/io.h> | 40 | #include <asm/io.h> |
40 | 41 | ||
@@ -52,14 +53,6 @@ | |||
52 | 53 | ||
53 | unsigned long s3c_pm_flags; | 54 | unsigned long s3c_pm_flags; |
54 | 55 | ||
55 | /* cache functions from arch/arm/mm/proc-arm920.S */ | ||
56 | |||
57 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | ||
58 | extern void arm920_flush_kern_cache_all(void); | ||
59 | #else | ||
60 | static void arm920_flush_kern_cache_all(void) { } | ||
61 | #endif | ||
62 | |||
63 | #define PFX "s3c24xx-pm: " | 56 | #define PFX "s3c24xx-pm: " |
64 | 57 | ||
65 | static struct sleep_save core_save[] = { | 58 | static struct sleep_save core_save[] = { |
@@ -567,7 +560,7 @@ static int s3c2410_pm_enter(suspend_state_t state) | |||
567 | 560 | ||
568 | /* flush cache back to ram */ | 561 | /* flush cache back to ram */ |
569 | 562 | ||
570 | arm920_flush_kern_cache_all(); | 563 | flush_cache_all(); |
571 | 564 | ||
572 | s3c2410_pm_check_store(); | 565 | s3c2410_pm_check_store(); |
573 | 566 | ||
@@ -575,7 +568,14 @@ static int s3c2410_pm_enter(suspend_state_t state) | |||
575 | 568 | ||
576 | __raw_writel(0x00, S3C2410_CLKCON); /* turn off clocks over sleep */ | 569 | __raw_writel(0x00, S3C2410_CLKCON); /* turn off clocks over sleep */ |
577 | 570 | ||
578 | s3c2410_cpu_suspend(regs_save); | 571 | /* s3c2410_cpu_save will also act as our return point from when |
572 | * we resume as it saves its own register state, so use the return | ||
573 | * code to differentiate return from save and return from sleep */ | ||
574 | |||
575 | if (s3c2410_cpu_save(regs_save) == 0) { | ||
576 | flush_cache_all(); | ||
577 | s3c2410_cpu_suspend(); | ||
578 | } | ||
579 | 579 | ||
580 | /* restore the cpu state */ | 580 | /* restore the cpu state */ |
581 | 581 | ||