ARM: mvebu: use a local variable to store the resume address
authorGregory CLEMENT <gregory.clement@free-electrons.com>
Wed, 23 Jul 2014 13:00:44 +0000 (15:00 +0200)
committerJason Cooper <jason@lakedaemon.net>
Thu, 24 Jul 2014 11:46:19 +0000 (11:46 +0000)
The resume address used by the cpuidle code will not always be the
same depending on the SoC. Using a local variable to store the resume
address allows to keep the same function for the PM notifier but with
a different address. This address will be set during the
initialization of the cpuidle logic in pmsu.c.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Link: https://lkml.kernel.org/r/1406120453-29291-8-git-send-email-thomas.petazzoni@free-electrons.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/mach-mvebu/pmsu.c

index e976c3e5e1feca8463f0fd02dc3c862f8b7fae7c..ab525b7bfc0349bdbf2391234b15a5d0cb3a387d 100644 (file)
@@ -73,6 +73,8 @@ extern void ll_enable_coherency(void);
 
 extern void armada_370_xp_cpu_resume(void);
 
+static void *mvebu_cpu_resume;
+
 static struct platform_device mvebu_v7_cpuidle_device = {
        .name = "cpuidle-armada-370-xp",
 };
@@ -299,7 +301,7 @@ static int mvebu_v7_cpu_pm_notify(struct notifier_block *self,
 {
        if (action == CPU_PM_ENTER) {
                unsigned int hw_cpu = cpu_logical_map(smp_processor_id());
-               mvebu_pmsu_set_cpu_boot_addr(hw_cpu, armada_370_xp_cpu_resume);
+               mvebu_pmsu_set_cpu_boot_addr(hw_cpu, mvebu_cpu_resume);
        } else if (action == CPU_PM_EXIT) {
                mvebu_v7_pmsu_idle_exit();
        }
@@ -320,6 +322,7 @@ static int __init armada_xp_cpuidle_init(void)
                return -ENODEV;
        of_node_put(np);
 
+       mvebu_cpu_resume = armada_370_xp_cpu_resume;
        mvebu_v7_cpuidle_device.dev.platform_data = armada_370_xp_cpu_suspend;
 
        return 0;