diff options
Diffstat (limited to 'arch/arm/mach-exynos/platsmp.c')
-rw-r--r-- | arch/arm/mach-exynos/platsmp.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c index d9c6d0ab6a0c..deba1308ff16 100644 --- a/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c | |||
@@ -50,6 +50,8 @@ static inline void __iomem *cpu_boot_reg(int cpu) | |||
50 | boot_reg = cpu_boot_reg_base(); | 50 | boot_reg = cpu_boot_reg_base(); |
51 | if (soc_is_exynos4412()) | 51 | if (soc_is_exynos4412()) |
52 | boot_reg += 4*cpu; | 52 | boot_reg += 4*cpu; |
53 | else if (soc_is_exynos5420()) | ||
54 | boot_reg += 4; | ||
53 | return boot_reg; | 55 | return boot_reg; |
54 | } | 56 | } |
55 | 57 | ||
@@ -180,10 +182,14 @@ static void __init exynos_smp_init_cpus(void) | |||
180 | void __iomem *scu_base = scu_base_addr(); | 182 | void __iomem *scu_base = scu_base_addr(); |
181 | unsigned int i, ncores; | 183 | unsigned int i, ncores; |
182 | 184 | ||
183 | if (soc_is_exynos5250()) | 185 | if (read_cpuid_part_number() == ARM_CPU_PART_CORTEX_A9) |
184 | ncores = 2; | ||
185 | else | ||
186 | ncores = scu_base ? scu_get_core_count(scu_base) : 1; | 186 | ncores = scu_base ? scu_get_core_count(scu_base) : 1; |
187 | else | ||
188 | /* | ||
189 | * CPU Nodes are passed thru DT and set_cpu_possible | ||
190 | * is set by "arm_dt_init_cpu_maps". | ||
191 | */ | ||
192 | return; | ||
187 | 193 | ||
188 | /* sanity check */ | 194 | /* sanity check */ |
189 | if (ncores > nr_cpu_ids) { | 195 | if (ncores > nr_cpu_ids) { |