diff options
| -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 | ||
