summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nicolas.pitre@linaro.org>2013-04-09 01:29:17 -0400
committerNicolas Pitre <nicolas.pitre@linaro.org>2013-04-24 10:37:03 -0400
commita7eb7c6f9a657a01a8359edae31bbeacd18b072c (patch)
tree23ec91e05f9192cceb6316e98ebd2f46f2786dd4
parent9ff221bad8869f73141c6a3c187afe2e933c991f (diff)
downloadlinux-a7eb7c6f9a657a01a8359edae31bbeacd18b072c.tar.gz
linux-a7eb7c6f9a657a01a8359edae31bbeacd18b072c.tar.bz2
linux-a7eb7c6f9a657a01a8359edae31bbeacd18b072c.zip
ARM: mcpm: provide an interface to set the SMP ops at run time
This is cleaner than exporting the mcpm_smp_ops structure. Signed-off-by: Nicolas Pitre <nico@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org>
-rw-r--r--arch/arm/common/mcpm_platsmp.c7
-rw-r--r--arch/arm/include/asm/mcpm.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c
index e7e3235b8b64..52b88d81b7bb 100644
--- a/arch/arm/common/mcpm_platsmp.c
+++ b/arch/arm/common/mcpm_platsmp.c
@@ -76,7 +76,7 @@ static void mcpm_cpu_die(unsigned int cpu)
#endif
-struct smp_operations __initdata mcpm_smp_ops = {
+static struct smp_operations __initdata mcpm_smp_ops = {
.smp_init_cpus = simple_smp_init_cpus,
.smp_boot_secondary = mcpm_boot_secondary,
.smp_secondary_init = mcpm_secondary_init,
@@ -85,3 +85,8 @@ struct smp_operations __initdata mcpm_smp_ops = {
.cpu_die = mcpm_cpu_die,
#endif
};
+
+void __init mcpm_smp_set_ops(void)
+{
+ smp_set_ops(&mcpm_smp_ops);
+}
diff --git a/arch/arm/include/asm/mcpm.h b/arch/arm/include/asm/mcpm.h
index 3046e90210cb..0f7b7620e9a5 100644
--- a/arch/arm/include/asm/mcpm.h
+++ b/arch/arm/include/asm/mcpm.h
@@ -167,6 +167,8 @@ int __mcpm_cluster_state(unsigned int cluster);
int __init mcpm_sync_init(
void (*power_up_setup)(unsigned int affinity_level));
+void __init mcpm_smp_set_ops(void);
+
#else
/*