Thread (20 messages) 20 messages, 4 authors, 2012-08-02

Re: [PATCH v8 5/7] powerpc/85xx: add sleep and deep sleep support

From: Zhao Chenhui <hidden>
Date: 2012-08-02 11:11:43
Also in: lkml

On Tue, Jul 31, 2012 at 09:15:33AM -0500, Kumar Gala wrote:
On Jul 20, 2012, at 7:42 AM, Zhao Chenhui wrote:
quoted
In sleep PM mode, the clocks of e500 core and unused IP blocks is
turned off. IP blocks which are allowed to wake up the processor
are still running.

Some Freescale chips like MPC8536 and P1022 has deep sleep PM mode
in addtion to the sleep PM mode.

While in deep sleep PM mode, additionally, the power supply is
removed from e500 core and most IP blocks. Only the blocks needed
to wake up the chip out of deep sleep are ON.

This patch supports 32-bit and 36-bit address space.

The sleep mode is equal to the Standby state in Linux. The deep sleep
mode is equal to the Suspend-to-RAM state of Linux Power Management.

Command to enter sleep mode.
 echo standby > /sys/power/state
Command to enter deep sleep mode.
 echo mem > /sys/power/state

Signed-off-by: Dave Liu <redacted>
Signed-off-by: Li Yang <redacted>
Signed-off-by: Jin Qing <redacted>
Signed-off-by: Jerry Huang <redacted>
Cc: Scott Wood <redacted>
Signed-off-by: Zhao Chenhui <redacted>
---
arch/powerpc/Kconfig                  |    2 +-
arch/powerpc/include/asm/cacheflush.h |    2 +
arch/powerpc/kernel/Makefile          |    3 +
arch/powerpc/kernel/l2cache_85xx.S    |   56 +++
arch/powerpc/platforms/85xx/Makefile  |    2 +-
arch/powerpc/platforms/85xx/sleep.S   |  621 +++++++++++++++++++++++++++++++++
arch/powerpc/sysdev/fsl_pmc.c         |   98 +++++-
arch/powerpc/sysdev/fsl_soc.h         |    5 +
8 files changed, 769 insertions(+), 20 deletions(-)
create mode 100644 arch/powerpc/kernel/l2cache_85xx.S
create mode 100644 arch/powerpc/platforms/85xx/sleep.S
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a7c6914..9d6de82 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -665,7 +665,7 @@ config FSL_PCI
config FSL_PMC
	bool
	default y
-	depends on SUSPEND && (PPC_85xx || PPC_86xx)
+	depends on SUSPEND && (PPC_85xx || PPC_86xx) && !PPC_E500MC
	help
	  Freescale MPC85xx/MPC86xx power management controller support
	  (suspend/resume). For MPC83xx see platforms/83xx/suspend.c
diff --git a/arch/powerpc/include/asm/cacheflush.h b/arch/powerpc/include/asm/cacheflush.h
index b843e35..6c5f1c2 100644
--- a/arch/powerpc/include/asm/cacheflush.h
+++ b/arch/powerpc/include/asm/cacheflush.h
@@ -58,6 +58,8 @@ extern void flush_inval_dcache_range(unsigned long start, unsigned long stop);
extern void flush_dcache_phys_range(unsigned long start, unsigned long stop);
#endif

+extern void flush_dcache_L1(void);
+
#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
	do { \
		memcpy(dst, src, len); \
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 83afacd..0ddef24 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -64,6 +64,9 @@ obj-$(CONFIG_FA_DUMP)		+= fadump.o
ifeq ($(CONFIG_PPC32),y)
obj-$(CONFIG_E500)		+= idle_e500.o
endif
+ifneq ($(CONFIG_PPC_E500MC),y)
+obj-$(CONFIG_PPC_85xx)		+= l2cache_85xx.o
+endif
why do we need this, beyond reduce code size on an e500mc kernel build?  If so why isn't 85xx/sleep.S doing the same thing?
- k
Yes, it is a little awkward. I have an idea to put e500/e500mc/e5500/e6500 related flush cache routines
into this file, and rename it to cache_fsl_booke.S.

As for 85xx/sleep.S, it is used by fsl_pmc.c. I will use CONFIG_FSL_PMC to guard it.

-Chenhui
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help