diff options
-rw-r--r-- | arch/arm/mach-shmobile/smp-r8a7791.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c index 2df5bd190fe4..ec979529f30f 100644 --- a/arch/arm/mach-shmobile/smp-r8a7791.c +++ b/arch/arm/mach-shmobile/smp-r8a7791.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/smp_plat.h> | 20 | #include <asm/smp_plat.h> |
21 | #include <mach/common.h> | 21 | #include <mach/common.h> |
22 | #include <mach/r8a7791.h> | 22 | #include <mach/r8a7791.h> |
23 | #include <mach/rcar-gen2.h> | ||
23 | 24 | ||
24 | #define RST 0xe6160000 | 25 | #define RST 0xe6160000 |
25 | #define CA15BAR 0x0020 | 26 | #define CA15BAR 0x0020 |
@@ -51,9 +52,21 @@ static void __init r8a7791_smp_prepare_cpus(unsigned int max_cpus) | |||
51 | iounmap(p); | 52 | iounmap(p); |
52 | } | 53 | } |
53 | 54 | ||
55 | static int r8a7791_smp_boot_secondary(unsigned int cpu, | ||
56 | struct task_struct *idle) | ||
57 | { | ||
58 | /* Error out when hardware debug mode is enabled */ | ||
59 | if (rcar_gen2_read_mode_pins() & BIT(21)) { | ||
60 | pr_warn("Unable to boot CPU%u when MD21 is set\n", cpu); | ||
61 | return -ENOTSUPP; | ||
62 | } | ||
63 | |||
64 | return shmobile_smp_apmu_boot_secondary(cpu, idle); | ||
65 | } | ||
66 | |||
54 | struct smp_operations r8a7791_smp_ops __initdata = { | 67 | struct smp_operations r8a7791_smp_ops __initdata = { |
55 | .smp_prepare_cpus = r8a7791_smp_prepare_cpus, | 68 | .smp_prepare_cpus = r8a7791_smp_prepare_cpus, |
56 | .smp_boot_secondary = shmobile_smp_apmu_boot_secondary, | 69 | .smp_boot_secondary = r8a7791_smp_boot_secondary, |
57 | #ifdef CONFIG_HOTPLUG_CPU | 70 | #ifdef CONFIG_HOTPLUG_CPU |
58 | .cpu_disable = shmobile_smp_cpu_disable, | 71 | .cpu_disable = shmobile_smp_cpu_disable, |
59 | .cpu_die = shmobile_smp_apmu_cpu_die, | 72 | .cpu_die = shmobile_smp_apmu_cpu_die, |