diff options
Diffstat (limited to 'arch/arm/mach-exynos/firmware.c')
-rw-r--r-- | arch/arm/mach-exynos/firmware.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mach-exynos/firmware.c b/arch/arm/mach-exynos/firmware.c index f6cb510aee85..1120c28394dd 100644 --- a/arch/arm/mach-exynos/firmware.c +++ b/arch/arm/mach-exynos/firmware.c | |||
@@ -30,6 +30,13 @@ static int exynos_do_idle(void) | |||
30 | static int exynos_cpu_boot(int cpu) | 30 | static int exynos_cpu_boot(int cpu) |
31 | { | 31 | { |
32 | /* | 32 | /* |
33 | * Exynos3250 doesn't need to send smc command for secondary CPU boot | ||
34 | * because Exynos3250 removes WFE in secure mode. | ||
35 | */ | ||
36 | if (soc_is_exynos3250()) | ||
37 | return 0; | ||
38 | |||
39 | /* | ||
33 | * The second parameter of SMC_CMD_CPU1BOOT command means CPU id. | 40 | * The second parameter of SMC_CMD_CPU1BOOT command means CPU id. |
34 | * But, Exynos4212 has only one secondary CPU so second parameter | 41 | * But, Exynos4212 has only one secondary CPU so second parameter |
35 | * isn't used for informing secure firmware about CPU id. | 42 | * isn't used for informing secure firmware about CPU id. |
@@ -45,7 +52,7 @@ static int exynos_set_cpu_boot_addr(int cpu, unsigned long boot_addr) | |||
45 | { | 52 | { |
46 | void __iomem *boot_reg = S5P_VA_SYSRAM_NS + 0x1c; | 53 | void __iomem *boot_reg = S5P_VA_SYSRAM_NS + 0x1c; |
47 | 54 | ||
48 | if (!soc_is_exynos4212()) | 55 | if (!soc_is_exynos4212() && !soc_is_exynos3250()) |
49 | boot_reg += 4*cpu; | 56 | boot_reg += 4*cpu; |
50 | 57 | ||
51 | __raw_writel(boot_addr, boot_reg); | 58 | __raw_writel(boot_addr, boot_reg); |