aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap-mpuss-lowpower.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-12-12 14:32:16 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-12-12 14:32:16 -0500
commit2989950cea13711f0cc573c26cde8fe08a36be03 (patch)
tree33d7f099beb7167c2a404fc4e444bd15769e715a /arch/arm/mach-omap2/omap-mpuss-lowpower.c
parentb1286f4e9ac14c8973140b338b4d3c5691264d3b (diff)
parent0a9995e46f3f9cb28360c89892b939420ac3fa2e (diff)
Merge tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC Non-critical bug fixes from Olof Johansson: "Simple bug fixes that were not considered important enough for inclusion into 3.7, especially those that arrived late during the merge window. There's also a MAINTAINERS update for the Renesas platforms in here, marking Simon Horman as a maintainer and changing the git url to his tree." * tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: Update ARM/SHMOBILE section of MAINTAINERS ARM: Fix Kconfig symbols typo for LEDS ARM: pxa: add dummy SA1100 rtc clock in pxa25x ARM: pxa: fix pxa25x gpio wakeup setting ARM: OMAP4: PM: fix errata handling when CONFIG_PM=n ARM: cns3xxx: drop unnecessary symbol selection ARM: vexpress: fix ll debug code when building multiplatform ARM: OMAP4: retrigger localtimers after re-enabling gic ARM: OMAP4460: Workaround for ROM bug because of CA9 r2pX GIC control register change. ARM: OMAP4: PM: add errata support ARM: davinci: fix return value check by using IS_ERR in tnetv107x_devices_init() ARM: davinci: uncompress.h: bail out if uart not initialized ARM: davinci: serial.h: fix uart number in the comment ARM: davinci: dm644x evm: move pointer dereference below NULL check ARM: vexpress: Make the debug UART detection more specific
Diffstat (limited to 'arch/arm/mach-omap2/omap-mpuss-lowpower.c')
-rw-r--r--arch/arm/mach-omap2/omap-mpuss-lowpower.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
index ff4e6a0e9c7..c8bc3ad85f6 100644
--- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
+++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
@@ -67,6 +67,7 @@ struct omap4_cpu_pm_info {
67 void __iomem *scu_sar_addr; 67 void __iomem *scu_sar_addr;
68 void __iomem *wkup_sar_addr; 68 void __iomem *wkup_sar_addr;
69 void __iomem *l2x0_sar_addr; 69 void __iomem *l2x0_sar_addr;
70 void (*secondary_startup)(void);
70}; 71};
71 72
72static DEFINE_PER_CPU(struct omap4_cpu_pm_info, omap4_pm_info); 73static DEFINE_PER_CPU(struct omap4_cpu_pm_info, omap4_pm_info);
@@ -299,6 +300,7 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
299int __cpuinit omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state) 300int __cpuinit omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
300{ 301{
301 unsigned int cpu_state = 0; 302 unsigned int cpu_state = 0;
303 struct omap4_cpu_pm_info *pm_info = &per_cpu(omap4_pm_info, cpu);
302 304
303 if (omap_rev() == OMAP4430_REV_ES1_0) 305 if (omap_rev() == OMAP4430_REV_ES1_0)
304 return -ENXIO; 306 return -ENXIO;
@@ -308,7 +310,7 @@ int __cpuinit omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
308 310
309 clear_cpu_prev_pwrst(cpu); 311 clear_cpu_prev_pwrst(cpu);
310 set_cpu_next_pwrst(cpu, power_state); 312 set_cpu_next_pwrst(cpu, power_state);
311 set_cpu_wakeup_addr(cpu, virt_to_phys(omap_secondary_startup)); 313 set_cpu_wakeup_addr(cpu, virt_to_phys(pm_info->secondary_startup));
312 scu_pwrst_prepare(cpu, power_state); 314 scu_pwrst_prepare(cpu, power_state);
313 315
314 /* 316 /*
@@ -359,6 +361,11 @@ int __init omap4_mpuss_init(void)
359 pm_info->scu_sar_addr = sar_base + SCU_OFFSET1; 361 pm_info->scu_sar_addr = sar_base + SCU_OFFSET1;
360 pm_info->wkup_sar_addr = sar_base + CPU1_WAKEUP_NS_PA_ADDR_OFFSET; 362 pm_info->wkup_sar_addr = sar_base + CPU1_WAKEUP_NS_PA_ADDR_OFFSET;
361 pm_info->l2x0_sar_addr = sar_base + L2X0_SAVE_OFFSET1; 363 pm_info->l2x0_sar_addr = sar_base + L2X0_SAVE_OFFSET1;
364 if (cpu_is_omap446x())
365 pm_info->secondary_startup = omap_secondary_startup_4460;
366 else
367 pm_info->secondary_startup = omap_secondary_startup;
368
362 pm_info->pwrdm = pwrdm_lookup("cpu1_pwrdm"); 369 pm_info->pwrdm = pwrdm_lookup("cpu1_pwrdm");
363 if (!pm_info->pwrdm) { 370 if (!pm_info->pwrdm) {
364 pr_err("Lookup failed for CPU1 pwrdm\n"); 371 pr_err("Lookup failed for CPU1 pwrdm\n");