diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap-mpuss-lowpower.c')
-rw-r--r-- | arch/arm/mach-omap2/omap-mpuss-lowpower.c | 9 |
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 | ||
72 | static DEFINE_PER_CPU(struct omap4_cpu_pm_info, omap4_pm_info); | 73 | static 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) | |||
299 | int __cpuinit omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state) | 300 | int __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"); |