diff options
author | Santosh Shilimkar <santosh.shilimkar@ti.com> | 2010-06-16 12:49:48 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@ti.com> | 2011-12-08 14:29:00 -0500 |
commit | b2b9762f76981c16a8768255284efeae7f27e4f1 (patch) | |
tree | 3538b853da88eedeb2c64646b9555736000ba73a /arch/arm/mach-omap2/common.h | |
parent | fcf6efa3ffbc3cc19e7abe39e0b90f497df2fc42 (diff) |
ARM: OMAP4: PM: Add CPUX OFF mode support
This patch adds the CPU0 and CPU1 off mode support. CPUX close switch
retention (CSWR) is not supported by hardware design.
The CPUx OFF mode isn't supported on OMAP4430 ES1.0
CPUx sleep code is common for hotplug, suspend and CPUilde.
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Jean Pihet <j-pihet@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Vishwanath BS <vishwanath.bs@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/common.h')
-rw-r--r-- | arch/arm/mach-omap2/common.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 7ebcb6a9b73e..36cdba7727f2 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -24,9 +24,11 @@ | |||
24 | 24 | ||
25 | #ifndef __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H | 25 | #ifndef __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H |
26 | #define __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H | 26 | #define __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H |
27 | #ifndef __ASSEMBLER__ | ||
27 | 28 | ||
28 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
29 | #include <plat/common.h> | 30 | #include <plat/common.h> |
31 | #include <asm/proc-fns.h> | ||
30 | 32 | ||
31 | #ifdef CONFIG_SOC_OMAP2420 | 33 | #ifdef CONFIG_SOC_OMAP2420 |
32 | extern void omap242x_map_common_io(void); | 34 | extern void omap242x_map_common_io(void); |
@@ -183,6 +185,7 @@ static inline void __iomem *omap4_get_scu_base(void) | |||
183 | extern void __init gic_init_irq(void); | 185 | extern void __init gic_init_irq(void); |
184 | extern void omap_smc1(u32 fn, u32 arg); | 186 | extern void omap_smc1(u32 fn, u32 arg); |
185 | extern void __iomem *omap4_get_sar_ram_base(void); | 187 | extern void __iomem *omap4_get_sar_ram_base(void); |
188 | extern void omap_do_wfi(void); | ||
186 | 189 | ||
187 | #ifdef CONFIG_SMP | 190 | #ifdef CONFIG_SMP |
188 | /* Needed for secondary core boot */ | 191 | /* Needed for secondary core boot */ |
@@ -192,4 +195,31 @@ extern void omap_auxcoreboot_addr(u32 cpu_addr); | |||
192 | extern u32 omap_read_auxcoreboot0(void); | 195 | extern u32 omap_read_auxcoreboot0(void); |
193 | #endif | 196 | #endif |
194 | 197 | ||
198 | #if defined(CONFIG_SMP) && defined(CONFIG_PM) | ||
199 | extern int omap4_mpuss_init(void); | ||
200 | extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state); | ||
201 | extern int omap4_finish_suspend(unsigned long cpu_state); | ||
202 | extern void omap4_cpu_resume(void); | ||
203 | #else | ||
204 | static inline int omap4_enter_lowpower(unsigned int cpu, | ||
205 | unsigned int power_state) | ||
206 | { | ||
207 | cpu_do_idle(); | ||
208 | return 0; | ||
209 | } | ||
210 | |||
211 | static inline int omap4_mpuss_init(void) | ||
212 | { | ||
213 | return 0; | ||
214 | } | ||
215 | |||
216 | static inline int omap4_finish_suspend(unsigned long cpu_state) | ||
217 | { | ||
218 | return 0; | ||
219 | } | ||
220 | |||
221 | static inline void omap4_cpu_resume(void) | ||
222 | {} | ||
223 | #endif | ||
224 | #endif /* __ASSEMBLER__ */ | ||
195 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ | 225 | #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ |