This patch removes platform SMP callbacks from ct_desc struct
and replaces them with global symbols in preparation for
DT-based support code.

This is a temporary measure till "SoC descriptors" code
gets into the main line.

Signed-off-by: Pawel Moll <[email protected]>
---
 arch/arm/mach-vexpress/core.h                     |    6 +++
 arch/arm/mach-vexpress/ct-ca9x4.c                 |   50 +++++++++-----------
 arch/arm/mach-vexpress/include/mach/motherboard.h |    4 --
 arch/arm/mach-vexpress/platsmp.c                  |    7 ++-
 4 files changed, 34 insertions(+), 33 deletions(-)

diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h
index 711c9a0..7a3ce7a 100644
--- a/arch/arm/mach-vexpress/core.h
+++ b/arch/arm/mach-vexpress/core.h
@@ -21,3 +21,9 @@ struct amba_device name##_device = {          \
 #define V2TILE_PERIPH 0xf8200000
 #define V2TILE_PERIPH_P2V(offset) ((void __iomem *)(V2TILE_PERIPH | (offset)))
 
+/* Will disappear once SoC descriptor gets in */
+#if defined(CONFIG_SMP)
+extern void (*vexpress_init_cpu_map)(void);
+extern void (*vexpress_smp_enable)(unsigned int);
+#endif
+
diff --git a/arch/arm/mach-vexpress/ct-ca9x4.c 
b/arch/arm/mach-vexpress/ct-ca9x4.c
index 567a6aa..f0d9f9a 100644
--- a/arch/arm/mach-vexpress/ct-ca9x4.c
+++ b/arch/arm/mach-vexpress/ct-ca9x4.c
@@ -39,9 +39,32 @@ static struct map_desc ct_ca9x4_io_desc[] __initdata = {
        },
 };
 
+#ifdef CONFIG_SMP
+static void ct_ca9x4_init_cpu_map(void)
+{
+       int i, ncores;
+       ncores = scu_get_core_count(V2TILE_PERIPH_P2V(A9_MPCORE_SCU));
+
+       for (i = 0; i < ncores; ++i)
+               set_cpu_possible(i, true);
+
+       set_smp_cross_call(gic_raise_softirq);
+}
+
+static void ct_ca9x4_smp_enable(unsigned int max_cpus)
+{
+       scu_enable(V2TILE_PERIPH_P2V(A9_MPCORE_SCU));
+}
+#endif
+
 static void __init ct_ca9x4_map_io(void)
 {
        iotable_init(ct_ca9x4_io_desc, ARRAY_SIZE(ct_ca9x4_io_desc));
+#ifdef CONFIG_SMP
+       /* Will be gone once the SoC descriptors are in */
+       vexpress_init_cpu_map = ct_ca9x4_init_cpu_map;
+       vexpress_smp_enable = ct_ca9x4_smp_enable;
+#endif
 }
 
 static void __init ct_ca9x4_init_irq(void)
@@ -188,29 +211,6 @@ static void __init ct_ca9x4_init(void)
        platform_device_register(&pmu_device);
 }
 
-#ifdef CONFIG_SMP
-static void ct_ca9x4_init_cpu_map(void)
-{
-       int i, ncores = scu_get_core_count(V2TILE_PERIPH_P2V(A9_MPCORE_SCU));
-
-       if (ncores > nr_cpu_ids) {
-               pr_warn("SMP: %u cores greater than maximum (%u), clipping\n",
-                       ncores, nr_cpu_ids);
-               ncores = nr_cpu_ids;
-       }
-
-       for (i = 0; i < ncores; ++i)
-               set_cpu_possible(i, true);
-
-       set_smp_cross_call(gic_raise_softirq);
-}
-
-static void ct_ca9x4_smp_enable(unsigned int max_cpus)
-{
-       scu_enable(V2TILE_PERIPH_P2V(A9_MPCORE_SCU));
-}
-#endif
-
 struct ct_desc ct_ca9x4_desc __initdata = {
        .id             = V2M_CT_ID_CA9,
        .name           = "CA9x4",
@@ -218,8 +218,4 @@ struct ct_desc ct_ca9x4_desc __initdata = {
        .init_early     = ct_ca9x4_init_early,
        .init_irq       = ct_ca9x4_init_irq,
        .init_tile      = ct_ca9x4_init,
-#ifdef CONFIG_SMP
-       .init_cpu_map   = ct_ca9x4_init_cpu_map,
-       .smp_enable     = ct_ca9x4_smp_enable,
-#endif
 };
diff --git a/arch/arm/mach-vexpress/include/mach/motherboard.h 
b/arch/arm/mach-vexpress/include/mach/motherboard.h
index da9ac29..848353b 100644
--- a/arch/arm/mach-vexpress/include/mach/motherboard.h
+++ b/arch/arm/mach-vexpress/include/mach/motherboard.h
@@ -129,10 +129,6 @@ struct ct_desc {
        void                    (*init_early)(void);
        void                    (*init_irq)(void);
        void                    (*init_tile)(void);
-#ifdef CONFIG_SMP
-       void                    (*init_cpu_map)(void);
-       void                    (*smp_enable)(unsigned int);
-#endif
 };
 
 extern struct ct_desc *ct_desc;
diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c
index e8be99d..b41e4e8 100644
--- a/arch/arm/mach-vexpress/platsmp.c
+++ b/arch/arm/mach-vexpress/platsmp.c
@@ -20,6 +20,9 @@
 
 #include "core.h"
 
+void (*vexpress_init_cpu_map)(void);
+void (*vexpress_smp_enable)(unsigned int);
+
 extern void versatile_secondary_startup(void);
 
 /*
@@ -28,7 +31,7 @@ extern void versatile_secondary_startup(void);
  */
 void __init smp_init_cpus(void)
 {
-       ct_desc->init_cpu_map();
+       vexpress_init_cpu_map();
 }
 
 void __init platform_smp_prepare_cpus(unsigned int max_cpus)
@@ -37,7 +40,7 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus)
         * Initialise the present map, which describes the set of CPUs
         * actually populated at the present time.
         */
-       ct_desc->smp_enable(max_cpus);
+       vexpress_smp_enable(max_cpus);
 
        /*
         * Write the address of secondary startup into the
-- 
1.6.3.3


_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to