diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2013-04-09 15:14:19 +0200 | 
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2013-04-09 15:14:19 +0200 | 
| commit | f199ab1aab9d790bee6c84bdb476f1e4911b8011 (patch) | |
| tree | c7f3f75b78f3af375f7e3c60fd479a942578591f /arch/arm/mach-omap2/omap-smp.c | |
| parent | 6fa6183aefcdefe0db26a0ceeaaf11c149acd449 (diff) | |
| parent | 5e7deed71290136cf70944e158f40401d0eed784 (diff) | |
| download | olio-linux-3.10-f199ab1aab9d790bee6c84bdb476f1e4911b8011.tar.xz olio-linux-3.10-f199ab1aab9d790bee6c84bdb476f1e4911b8011.zip  | |
Merge tag 'omap-for-v3.10/fixes-pm-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/cleanup
From Tony Lindgren <tony@atomide.com>:
Non-critical PM fix via Kevin Hilman <khilman@linaro.org>:
OMAP PM fixes for v3.10
Note that this has a dependency to omap-for-v3.10/cleanup-v2-signed.
* tag 'omap-for-v3.10/fixes-pm-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP4+: PM: Restore CPU power state to ON with clockdomain force wakeup method
Signed-off-by: Arnd Bergmann <arnd@arndb.de<
Diffstat (limited to 'arch/arm/mach-omap2/omap-smp.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap-smp.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c index f76f94fb847..61174b78dee 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c @@ -76,6 +76,7 @@ static int __cpuinit omap4_boot_secondary(unsigned int cpu, struct task_struct *  {  	static struct clockdomain *cpu1_clkdm;  	static bool booted; +	static struct powerdomain *cpu1_pwrdm;  	void __iomem *base = omap_get_wakeupgen_base();  	/* @@ -95,8 +96,10 @@ static int __cpuinit omap4_boot_secondary(unsigned int cpu, struct task_struct *  	else  		__raw_writel(0x20, base + OMAP_AUX_CORE_BOOT_0); -	if (!cpu1_clkdm) +	if (!cpu1_clkdm && !cpu1_pwrdm) {  		cpu1_clkdm = clkdm_lookup("mpu1_clkdm"); +		cpu1_pwrdm = pwrdm_lookup("cpu1_pwrdm"); +	}  	/*  	 * The SGI(Software Generated Interrupts) are not wakeup capable @@ -109,7 +112,7 @@ static int __cpuinit omap4_boot_secondary(unsigned int cpu, struct task_struct *  	 * Section :  	 *	4.3.4.2 Power States of CPU0 and CPU1  	 */ -	if (booted) { +	if (booted && cpu1_pwrdm && cpu1_clkdm) {  		/*  		 * GIC distributor control register has changed between  		 * CortexA9 r1pX and r2pX. The Control Register secure @@ -130,7 +133,12 @@ static int __cpuinit omap4_boot_secondary(unsigned int cpu, struct task_struct *  			gic_dist_disable();  		} +		/* +		 * Ensure that CPU power state is set to ON to avoid CPU +		 * powerdomain transition on wfi +		 */  		clkdm_wakeup(cpu1_clkdm); +		omap_set_pwrdm_state(cpu1_pwrdm, PWRDM_POWER_ON);  		clkdm_allow_idle(cpu1_clkdm);  		if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) {  |