diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-09 14:39:59 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-09 14:39:59 -0800 | 
| commit | b3c37522928b5452588fc202eaa0f11f6e339256 (patch) | |
| tree | 37bfe21d9977b15271903d1a4b304289a232e364 /arch/arm/mach-omap2/common.h | |
| parent | 2ac9d7aaccbd598b5bd19ac40761b723bb675442 (diff) | |
| parent | 6d0a5636fba5a3f82ec80ab124dd4748344549c3 (diff) | |
| download | olio-linux-3.10-b3c37522928b5452588fc202eaa0f11f6e339256.tar.xz olio-linux-3.10-b3c37522928b5452588fc202eaa0f11f6e339256.zip  | |
Merge tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
power management changes for omap and imx
A significant part of the changes for these two platforms went into
power management, so they are split out into a separate branch.
* tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (65 commits)
  ARM: imx6: remove __CPUINIT annotation from v7_invalidate_l1
  ARM: imx6: fix v7_invalidate_l1 by adding I-Cache invalidation
  ARM: imx6q: resume PL310 only when CACHE_L2X0 defined
  ARM: imx6q: build pm code only when CONFIG_PM selected
  ARM: mx5: use generic irq chip pm interface for pm functions on
  ARM: omap: pass minimal SoC/board data for UART from dt
  arm/dts: Add minimal device tree support for omap2420 and omap2430
  omap-serial: Add minimal device tree support
  omap-serial: Use default clock speed (48Mhz) if not specified
  omap-serial: Get rid of all pdev->id usage
  ARM: OMAP2+: hwmod: Add a new flag to handle hwmods left enabled at init
  ARM: OMAP4: PRM: use PRCM interrupt handler
  ARM: OMAP3: pm: use prcm chain handler
  ARM: OMAP: hwmod: add support for selecting mpu_irq for each wakeup pad
  ARM: OMAP2+: mux: add support for PAD wakeup interrupts
  ARM: OMAP: PRCM: add suspend prepare / finish support
  ARM: OMAP: PRCM: add support for chain interrupt handler
  ARM: OMAP3/4: PRM: add functions to read pending IRQs, PRM barrier
  ARM: OMAP2+: hwmod: Add API to enable IO ring wakeup
  ARM: OMAP2+: mux: add wakeup-capable hwmod mux entries to dynamic list
  ...
Diffstat (limited to 'arch/arm/mach-omap2/common.h')
| -rw-r--r-- | arch/arm/mach-omap2/common.h | 64 | 
1 files changed, 53 insertions, 11 deletions
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 9403b2ce6c8..febffde2ff1 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h @@ -24,9 +24,11 @@  #ifndef __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H  #define __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H +#ifndef __ASSEMBLER__  #include <linux/delay.h>  #include <plat/common.h> +#include <asm/proc-fns.h>  #ifdef CONFIG_SOC_OMAP2420  extern void omap242x_map_common_io(void); @@ -168,23 +170,23 @@ void omap3_intc_resume_idle(void);  void omap2_intc_handle_irq(struct pt_regs *regs);  void omap3_intc_handle_irq(struct pt_regs *regs); -/* - * wfi used in low power code. Directly opcode is used instead - * of instruction to avoid mulit-omap build break - */ -#ifdef CONFIG_THUMB2_KERNEL -#define do_wfi() __asm__ __volatile__ ("wfi" : : : "memory") -#else -#define do_wfi()			\ -		__asm__ __volatile__ (".word	0xe320f003" : : : "memory") +#ifdef CONFIG_CACHE_L2X0 +extern void __iomem *omap4_get_l2cache_base(void);  #endif -#ifdef CONFIG_CACHE_L2X0 -extern void __iomem *l2cache_base; +#ifdef CONFIG_SMP +extern void __iomem *omap4_get_scu_base(void); +#else +static inline void __iomem *omap4_get_scu_base(void) +{ +	return NULL; +}  #endif  extern void __init gic_init_irq(void);  extern void omap_smc1(u32 fn, u32 arg); +extern void __iomem *omap4_get_sar_ram_base(void); +extern void omap_do_wfi(void);  #ifdef CONFIG_SMP  /* Needed for secondary core boot */ @@ -194,4 +196,44 @@ extern void omap_auxcoreboot_addr(u32 cpu_addr);  extern u32 omap_read_auxcoreboot0(void);  #endif +#if defined(CONFIG_SMP) && defined(CONFIG_PM) +extern int omap4_mpuss_init(void); +extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state); +extern int omap4_finish_suspend(unsigned long cpu_state); +extern void omap4_cpu_resume(void); +extern int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state); +extern u32 omap4_mpuss_read_prev_context_state(void); +#else +static inline int omap4_enter_lowpower(unsigned int cpu, +					unsigned int power_state) +{ +	cpu_do_idle(); +	return 0; +} + +static inline int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state) +{ +	cpu_do_idle(); +	return 0; +} + +static inline int omap4_mpuss_init(void) +{ +	return 0; +} + +static inline int omap4_finish_suspend(unsigned long cpu_state) +{ +	return 0; +} + +static inline void omap4_cpu_resume(void) +{} + +static inline u32 omap4_mpuss_read_prev_context_state(void) +{ +	return 0; +} +#endif +#endif /* __ASSEMBLER__ */  #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */  |