RealView: Clean up the machine_is_*() calls in platsmp.c
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 1 Dec 2008 14:54:58 +0000 (14:54 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 1 Dec 2008 14:54:58 +0000 (14:54 +0000)
Some of the calls weren't necessary and some others were duplicated.
This patch tidies up the platsmp.c file.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm/mach-realview/core.c
arch/arm/mach-realview/include/mach/board-eb.h
arch/arm/mach-realview/platsmp.c

index b62799262c6fc6330bd42da43aabf152c90202a4..65c39a73d1cb987623fc5fc77c4997b9ac77d262 100644 (file)
@@ -50,7 +50,7 @@
 
 #define REALVIEW_REFCOUNTER    (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_24MHz_OFFSET)
 
-/* used by entry-macro.S */
+/* used by entry-macro.S and platsmp.c */
 void __iomem *gic_cpu_base_addr;
 
 /*
index cdbf551fd3ded2ee4ae0b6e18ea5a4669adddbb7..268d7701fa9bbc5409a89dc3876d832c94669cb1 100644 (file)
 #define core_tile_a9mp()       0
 #endif
 
+#define machine_is_realview_eb_mp() \
+       (machine_is_realview_eb() && (core_tile_eb11mp() || core_tile_a9mp()))
+
 #endif /* __ASM_ARCH_BOARD_EB_H */
index faeb01c76f6665ea30f22a50c9cfacb495e5ebea..8fce85f330332d6ffbb27d2a4186a8117c5bccaa 100644 (file)
@@ -23,6 +23,8 @@
 #include <mach/board-pb11mp.h>
 #include <mach/scu.h>
 
+#include "core.h"
+
 extern void realview_secondary_startup(void);
 
 /*
@@ -31,16 +33,20 @@ extern void realview_secondary_startup(void);
  */
 volatile int __cpuinitdata pen_release = -1;
 
+static void __iomem *scu_base_addr(void)
+{
+       if (machine_is_realview_eb_mp())
+               return __io_address(REALVIEW_EB11MP_SCU_BASE);
+       else if (machine_is_realview_pb11mp())
+               return __io_address(REALVIEW_TC11MP_SCU_BASE);
+       else
+               return (void __iomem *)0;
+}
+
 static unsigned int __init get_core_count(void)
 {
        unsigned int ncores;
-       void __iomem *scu_base = 0;
-
-       if (machine_is_realview_eb() &&
-           (core_tile_eb11mp() || core_tile_a9mp()))
-               scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE);
-       else if (machine_is_realview_pb11mp())
-               scu_base = __io_address(REALVIEW_TC11MP_SCU_BASE);
+       void __iomem *scu_base = scu_base_addr();
 
        if (scu_base) {
                ncores = __raw_readl(scu_base + SCU_CONFIG);
@@ -57,15 +63,7 @@ static unsigned int __init get_core_count(void)
 static void scu_enable(void)
 {
        u32 scu_ctrl;
-       void __iomem *scu_base;
-
-       if (machine_is_realview_eb() &&
-           (core_tile_eb11mp() || core_tile_a9mp()))
-               scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE);
-       else if (machine_is_realview_pb11mp())
-               scu_base = __io_address(REALVIEW_TC11MP_SCU_BASE);
-       else
-               BUG();
+       void __iomem *scu_base = scu_base_addr();
 
        scu_ctrl = __raw_readl(scu_base + SCU_CTRL);
        scu_ctrl |= 1;
@@ -90,11 +88,7 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
         * core (e.g. timer irq), then they will not have been enabled
         * for us: do so
         */
-       if (machine_is_realview_eb() &&
-           (core_tile_eb11mp() || core_tile_a9mp()))
-               gic_cpu_init(0, __io_address(REALVIEW_EB11MP_GIC_CPU_BASE));
-       else if (machine_is_realview_pb11mp())
-               gic_cpu_init(0, __io_address(REALVIEW_TC11MP_GIC_CPU_BASE));
+       gic_cpu_init(0, gic_cpu_base_addr);
 
        /*
         * let the primary processor know we're out of the
@@ -235,10 +229,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
         * dummy (!CONFIG_LOCAL_TIMERS), it was already registers in
         * realview_timer_init
         */
-       if ((machine_is_realview_eb() &&
-            (core_tile_eb11mp() || core_tile_a9mp())) ||
-           machine_is_realview_pb11mp())
-               local_timer_setup();
+       local_timer_setup();
 #endif
 
        /*