diff options
author | Olof Johansson <olof@lixom.net> | 2012-09-22 03:06:21 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-09-22 03:16:04 -0400 |
commit | 25468fe89f88c4ceeef94526e94ae0db176f6999 (patch) | |
tree | d70a713525281276b5063c814413bb3141e6056c /arch/arm/mach-msm/platsmp.c | |
parent | a283580c52d3aa24305985e945dfccfbcfc6f4f9 (diff) | |
parent | 28e8e29c616f947348cc66bea684d0035c76021a (diff) |
Merge branch 'multiplatform/smp_ops' into next/multiplatform
* multiplatform/smp_ops:
ARM: consolidate pen_release instead of having per platform definitions
ARM: smp: Make SMP operations mandatory
ARM: SoC: convert spear13xx to SMP operations
ARM: SoC: convert imx6q to SMP operations
ARM: SoC: convert highbank to SMP operations
ARM: SoC: convert shmobile SMP to SMP operations
ARM: SoC: convert ux500 to SMP operations
ARM: SoC: convert MSM to SMP operations
ARM: SoC: convert Exynos4 to SMP operations
ARM: SoC: convert Tegra to SMP operations
ARM: SoC: convert OMAP4 to SMP operations
ARM: SoC: convert VExpress/RealView to SMP operations
ARM: SoC: add per-platform SMP operations
Conflicts due to file moves or removals in:
arch/arm/mach-msm/board-msm8960.c
arch/arm/mach-msm/board-msm8x60.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-trimslice.c
Conflicts due to board file cleanup:
arch/arm/mach-tegra/board-paz00.c
Conflicts due to cpu hotplug addition:
arch/arm/mach-tegra/hotplug.c
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-msm/platsmp.c')
-rw-r--r-- | arch/arm/mach-msm/platsmp.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c index 2d791e6b4ad1..637021c0d8af 100644 --- a/arch/arm/mach-msm/platsmp.c +++ b/arch/arm/mach-msm/platsmp.c | |||
@@ -23,17 +23,13 @@ | |||
23 | #include <asm/smp_plat.h> | 23 | #include <asm/smp_plat.h> |
24 | 24 | ||
25 | #include "scm-boot.h" | 25 | #include "scm-boot.h" |
26 | #include "core.h" | ||
26 | 27 | ||
27 | #define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0 | 28 | #define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0 |
28 | #define SCSS_CPU1CORE_RESET 0xD80 | 29 | #define SCSS_CPU1CORE_RESET 0xD80 |
29 | #define SCSS_DBG_STATUS_CORE_PWRDUP 0xE64 | 30 | #define SCSS_DBG_STATUS_CORE_PWRDUP 0xE64 |
30 | 31 | ||
31 | extern void msm_secondary_startup(void); | 32 | extern void msm_secondary_startup(void); |
32 | /* | ||
33 | * control for which core is the next to come out of the secondary | ||
34 | * boot "holding pen". | ||
35 | */ | ||
36 | volatile int pen_release = -1; | ||
37 | 33 | ||
38 | static DEFINE_SPINLOCK(boot_lock); | 34 | static DEFINE_SPINLOCK(boot_lock); |
39 | 35 | ||
@@ -43,7 +39,7 @@ static inline int get_core_count(void) | |||
43 | return ((read_cpuid_id() >> 4) & 3) + 1; | 39 | return ((read_cpuid_id() >> 4) & 3) + 1; |
44 | } | 40 | } |
45 | 41 | ||
46 | void __cpuinit platform_secondary_init(unsigned int cpu) | 42 | static void __cpuinit msm_secondary_init(unsigned int cpu) |
47 | { | 43 | { |
48 | /* | 44 | /* |
49 | * if any interrupts are already enabled for the primary | 45 | * if any interrupts are already enabled for the primary |
@@ -85,7 +81,7 @@ static __cpuinit void prepare_cold_cpu(unsigned int cpu) | |||
85 | "address\n"); | 81 | "address\n"); |
86 | } | 82 | } |
87 | 83 | ||
88 | int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | 84 | static int __cpuinit msm_boot_secondary(unsigned int cpu, struct task_struct *idle) |
89 | { | 85 | { |
90 | unsigned long timeout; | 86 | unsigned long timeout; |
91 | static int cold_boot_done; | 87 | static int cold_boot_done; |
@@ -145,7 +141,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | |||
145 | * does not support the ARM SCU, so just set the possible cpu mask to | 141 | * does not support the ARM SCU, so just set the possible cpu mask to |
146 | * NR_CPUS. | 142 | * NR_CPUS. |
147 | */ | 143 | */ |
148 | void __init smp_init_cpus(void) | 144 | static void __init msm_smp_init_cpus(void) |
149 | { | 145 | { |
150 | unsigned int i, ncores = get_core_count(); | 146 | unsigned int i, ncores = get_core_count(); |
151 | 147 | ||
@@ -161,6 +157,16 @@ void __init smp_init_cpus(void) | |||
161 | set_smp_cross_call(gic_raise_softirq); | 157 | set_smp_cross_call(gic_raise_softirq); |
162 | } | 158 | } |
163 | 159 | ||
164 | void __init platform_smp_prepare_cpus(unsigned int max_cpus) | 160 | static void __init msm_smp_prepare_cpus(unsigned int max_cpus) |
165 | { | 161 | { |
166 | } | 162 | } |
163 | |||
164 | struct smp_operations msm_smp_ops __initdata = { | ||
165 | .smp_init_cpus = msm_smp_init_cpus, | ||
166 | .smp_prepare_cpus = msm_smp_prepare_cpus, | ||
167 | .smp_secondary_init = msm_secondary_init, | ||
168 | .smp_boot_secondary = msm_boot_secondary, | ||
169 | #ifdef CONFIG_HOTPLUG_CPU | ||
170 | .cpu_die = msm_cpu_die, | ||
171 | #endif | ||
172 | }; | ||