diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2008-04-18 17:43:13 -0400 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2008-04-18 17:43:13 -0400 |
commit | e67172f5793293370a3ded597742b8d12bd42b82 (patch) | |
tree | 2ef163cbac9a4aa5da23d34de66ea5cc1bc0fed6 /arch/arm/mach-realview | |
parent | a9b67db504b0c75d21bda801de1a03dd52e91c98 (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.c | 13 |
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 | ||
25 | extern void realview_secondary_startup(void); | 26 | extern 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 | ||