ARM: shmobile: smp: Add function to prioritize DT SMP
authorMagnus Damm <damm+renesas@opensource.se>
Tue, 28 Jun 2016 14:10:37 +0000 (16:10 +0200)
committerSimon Horman <horms+renesas@verge.net.au>
Wed, 29 Jun 2016 12:43:11 +0000 (14:43 +0200)
Add a function to check if other DT based method is available, and
if so return false to not hook up smp_ops from the machine vector.

This results in that DT-based SMP support has priority over older
C-based smp_ops code, and in case DT-based SMP support code does not
exist in the DTB then the old smp_ops code will still work as-is.

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/common.h
arch/arm/mach-shmobile/platsmp.c

index 3b562d87826d74100d861373c039df8f995cd6e0..1a8f7b3ab449db569d54cd2bd01296c8fb700068 100644 (file)
@@ -10,6 +10,7 @@ extern void shmobile_smp_sleep(void);
 extern void shmobile_smp_hook(unsigned int cpu, unsigned long fn,
                              unsigned long arg);
 extern bool shmobile_smp_cpu_can_disable(unsigned int cpu);
+extern bool shmobile_smp_init_fallback_ops(void);
 extern void shmobile_boot_scu(void);
 extern void shmobile_smp_scu_prepare_cpus(phys_addr_t scu_base_phys,
                                          unsigned int max_cpus);
index b23378f3d7e1726b6f92b3cc8be0ba8264c838f7..f3dba6f356e29446c0960af2d37e51d2eacc8302 100644 (file)
@@ -36,3 +36,9 @@ bool shmobile_smp_cpu_can_disable(unsigned int cpu)
        return true; /* Hotplug of any CPU is supported */
 }
 #endif
+
+bool __init shmobile_smp_init_fallback_ops(void)
+{
+       /* fallback on PSCI/smp_ops if no other DT based method is detected */
+       return platform_can_secondary_boot() ? true : false;
+}