aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-realview
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2008-04-18 17:43:13 -0400
committerCatalin Marinas <catalin.marinas@arm.com>2008-04-18 17:43:13 -0400
commite67172f5793293370a3ded597742b8d12bd42b82 (patch)
tree2ef163cbac9a4aa5da23d34de66ea5cc1bc0fed6 /arch/arm/mach-realview
parenta9b67db504b0c75d21bda801de1a03dd52e91c98 (diff)
RealView: Add the SMP initialisation support for PB11MPCore
This patch adds the initialisation calls for the SMP support on the PB11MPCore platform. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/mach-realview')
-rw-r--r--arch/arm/mach-realview/platsmp.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index 2ff1acaf2be7..3e57428affee 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -20,6 +20,7 @@
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21 21
22#include <asm/arch/board-eb.h> 22#include <asm/arch/board-eb.h>
23#include <asm/arch/board-pb11mp.h>
23#include <asm/arch/scu.h> 24#include <asm/arch/scu.h>
24 25
25extern void realview_secondary_startup(void); 26extern void realview_secondary_startup(void);
@@ -37,6 +38,8 @@ static unsigned int __init get_core_count(void)
37 38
38 if (machine_is_realview_eb() && core_tile_eb11mp()) 39 if (machine_is_realview_eb() && core_tile_eb11mp())
39 scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE); 40 scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE);
41 else if (machine_is_realview_pb11mp())
42 scu_base = __io_address(REALVIEW_TC11MP_SCU_BASE);
40 43
41 if (scu_base) { 44 if (scu_base) {
42 ncores = __raw_readl(scu_base + SCU_CONFIG); 45 ncores = __raw_readl(scu_base + SCU_CONFIG);
@@ -57,6 +60,8 @@ static void scu_enable(void)
57 60
58 if (machine_is_realview_eb() && core_tile_eb11mp()) 61 if (machine_is_realview_eb() && core_tile_eb11mp())
59 scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE); 62 scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE);
63 else if (machine_is_realview_pb11mp())
64 scu_base = __io_address(REALVIEW_TC11MP_SCU_BASE);
60 else 65 else
61 BUG(); 66 BUG();
62 67
@@ -81,7 +86,10 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
81 * core (e.g. timer irq), then they will not have been enabled 86 * core (e.g. timer irq), then they will not have been enabled
82 * for us: do so 87 * for us: do so
83 */ 88 */
84 gic_cpu_init(0, __io_address(REALVIEW_EB11MP_GIC_CPU_BASE)); 89 if (machine_is_realview_eb() && core_tile_eb11mp())
90 gic_cpu_init(0, __io_address(REALVIEW_EB11MP_GIC_CPU_BASE));
91 else if (machine_is_realview_pb11mp())
92 gic_cpu_init(0, __io_address(REALVIEW_TC11MP_GIC_CPU_BASE));
85 93
86 /* 94 /*
87 * let the primary processor know we're out of the 95 * let the primary processor know we're out of the
@@ -222,7 +230,8 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
222 * dummy (!CONFIG_LOCAL_TIMERS), it was already registers in 230 * dummy (!CONFIG_LOCAL_TIMERS), it was already registers in
223 * realview_timer_init 231 * realview_timer_init
224 */ 232 */
225 if (machine_is_realview_eb() && core_tile_eb11mp()) 233 if ((machine_is_realview_eb() && core_tile_eb11mp()) ||
234 machine_is_realview_pb11mp())
226 local_timer_setup(cpu); 235 local_timer_setup(cpu);
227#endif 236#endif
228 237