aboutsummaryrefslogtreecommitdiff
path: root/arch/blackfin/mach-common/pm.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-09-17 09:53:04 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-09-17 09:53:04 -0700
commitabf5940dad78dde95edd7f6ba6e329cd10a92a5c (patch)
treeeebc8af6a41ad11c92d8f2858700c11bec558eb3 /arch/blackfin/mach-common/pm.c
parent66bc4a6f34a950c7aede597c578352c3eba82017 (diff)
parent5bf9cbef9972f851172391a37261b12bba63f733 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (75 commits) Blackfin: update ftrace for latest toolchain Blackfin: fix elf_fpregset_t definition Blackfin: unify cache init functions Blackfin: swap clocksource ratings for gptimer/cycles Blackfin: update ftrace_push_return_trace() breakage Blackfin: update cm board resources Blackfin: cm-bf537u: split board from cm-bf537e Blackfin: bf538-ezkit: add SPI IRQ resources Blackfin: increase default async timings for parallel flashes Blackfin: add ICPLB coverage for async banks Blackfin: use KERN_ALERT in all kgdb_test output Blackfin: fix BF54x SPI CS resources Blackfin: fix typo in isram_write() Blackfin: bf537-stamp: add adp5588 gpio resources Blackfin: add some isram-driver self tests Blackfin: workaround anomaly 05000283 Blackfin: fix spelling in a few comments Blackfin: use raw_smp_processor_id() in exception code Blackfin: remove useless duplicated assignment in gpio code Blackfin: Fix link errors with binutils 2.19 and GCC 4.3 ...
Diffstat (limited to 'arch/blackfin/mach-common/pm.c')
-rw-r--r--arch/blackfin/mach-common/pm.c64
1 files changed, 8 insertions, 56 deletions
diff --git a/arch/blackfin/mach-common/pm.c b/arch/blackfin/mach-common/pm.c
index 9e7e27b7fc8..0e3d4ff9d8b 100644
--- a/arch/blackfin/mach-common/pm.c
+++ b/arch/blackfin/mach-common/pm.c
@@ -38,6 +38,7 @@
#include <linux/io.h>
#include <linux/irq.h>
+#include <asm/cplb.h>
#include <asm/gpio.h>
#include <asm/dma.h>
#include <asm/dpmc.h>
@@ -170,58 +171,6 @@ static void flushinv_all_dcache(void)
}
#endif
-static inline void dcache_disable(void)
-{
-#ifdef CONFIG_BFIN_DCACHE
- unsigned long ctrl;
-
-#if defined(CONFIG_BFIN_EXTMEM_WRITEBACK) || defined(CONFIG_BFIN_L2_WRITEBACK)
- flushinv_all_dcache();
-#endif
- SSYNC();
- ctrl = bfin_read_DMEM_CONTROL();
- ctrl &= ~ENDCPLB;
- bfin_write_DMEM_CONTROL(ctrl);
- SSYNC();
-#endif
-}
-
-static inline void dcache_enable(void)
-{
-#ifdef CONFIG_BFIN_DCACHE
- unsigned long ctrl;
- SSYNC();
- ctrl = bfin_read_DMEM_CONTROL();
- ctrl |= ENDCPLB;
- bfin_write_DMEM_CONTROL(ctrl);
- SSYNC();
-#endif
-}
-
-static inline void icache_disable(void)
-{
-#ifdef CONFIG_BFIN_ICACHE
- unsigned long ctrl;
- SSYNC();
- ctrl = bfin_read_IMEM_CONTROL();
- ctrl &= ~ENICPLB;
- bfin_write_IMEM_CONTROL(ctrl);
- SSYNC();
-#endif
-}
-
-static inline void icache_enable(void)
-{
-#ifdef CONFIG_BFIN_ICACHE
- unsigned long ctrl;
- SSYNC();
- ctrl = bfin_read_IMEM_CONTROL();
- ctrl |= ENICPLB;
- bfin_write_IMEM_CONTROL(ctrl);
- SSYNC();
-#endif
-}
-
int bfin_pm_suspend_mem_enter(void)
{
unsigned long flags;
@@ -258,16 +207,19 @@ int bfin_pm_suspend_mem_enter(void)
bfin_gpio_pm_hibernate_suspend();
- dcache_disable();
- icache_disable();
+#if defined(CONFIG_BFIN_EXTMEM_WRITEBACK) || defined(CONFIG_BFIN_L2_WRITEBACK)
+ flushinv_all_dcache();
+#endif
+ _disable_dcplb();
+ _disable_icplb();
bf53x_suspend_l1_mem(memptr);
do_hibernate(wakeup | vr_wakeup); /* Goodbye */
bf53x_resume_l1_mem(memptr);
- icache_enable();
- dcache_enable();
+ _enable_icplb();
+ _enable_dcplb();
bfin_gpio_pm_hibernate_restore();
blackfin_dma_resume();