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<
This commit is contained in:
@@ -131,6 +131,7 @@ static int omap4_enter_idle_coupled(struct cpuidle_device *dev,
|
||||
/* Wakeup CPU1 only if it is not offlined */
|
||||
if (dev->cpu == 0 && cpumask_test_cpu(1, cpu_online_mask)) {
|
||||
clkdm_wakeup(cpu_clkdm[1]);
|
||||
omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON);
|
||||
clkdm_allow_idle(cpu_clkdm[1]);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user