aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c2410/pm.c
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2006-09-15 19:04:23 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-09-25 05:25:21 -0400
commit58095d7f39edc919cd3c63c6109ad282e7085da1 (patch)
treed0e7f7ef1a5a4b68dafbbc8e83eb57abd581bb83 /arch/arm/mach-s3c2410/pm.c
parent1e582fc73781da47eddd90c75bf97f191e4f450f (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.c20
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
53unsigned long s3c_pm_flags; 54unsigned long s3c_pm_flags;
54 55
55/* cache functions from arch/arm/mm/proc-arm920.S */
56
57#ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
58extern void arm920_flush_kern_cache_all(void);
59#else
60static void arm920_flush_kern_cache_all(void) { }
61#endif
62
63#define PFX "s3c24xx-pm: " 56#define PFX "s3c24xx-pm: "
64 57
65static struct sleep_save core_save[] = { 58static 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