aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/smp-emev2.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-shmobile/smp-emev2.c')
-rw-r--r--arch/arm/mach-shmobile/smp-emev2.c22
1 files changed, 2 insertions, 20 deletions
diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c
index f67456286280..535426c306bd 100644
--- a/arch/arm/mach-shmobile/smp-emev2.c
+++ b/arch/arm/mach-shmobile/smp-emev2.c
@@ -32,24 +32,8 @@
32 32
33#define EMEV2_SCU_BASE 0x1e000000 33#define EMEV2_SCU_BASE 0x1e000000
34 34
35static DEFINE_SPINLOCK(scu_lock);
36static void __iomem *scu_base; 35static void __iomem *scu_base;
37 36
38static void modify_scu_cpu_psr(unsigned long set, unsigned long clr)
39{
40 unsigned long tmp;
41
42 /* we assume this code is running on a different cpu
43 * than the one that is changing coherency setting */
44 spin_lock(&scu_lock);
45 tmp = readl(scu_base + 8);
46 tmp &= ~clr;
47 tmp |= set;
48 writel(tmp, scu_base + 8);
49 spin_unlock(&scu_lock);
50
51}
52
53static unsigned int __init emev2_get_core_count(void) 37static unsigned int __init emev2_get_core_count(void)
54{ 38{
55 if (!scu_base) { 39 if (!scu_base) {
@@ -95,7 +79,7 @@ static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *
95 cpu = cpu_logical_map(cpu); 79 cpu = cpu_logical_map(cpu);
96 80
97 /* enable cache coherency */ 81 /* enable cache coherency */
98 modify_scu_cpu_psr(0, 3 << (cpu * 8)); 82 scu_power_mode(scu_base, 0);
99 83
100 /* Tell ROM loader about our vector (in headsmp.S) */ 84 /* Tell ROM loader about our vector (in headsmp.S) */
101 emev2_set_boot_vector(__pa(shmobile_secondary_vector)); 85 emev2_set_boot_vector(__pa(shmobile_secondary_vector));
@@ -106,12 +90,10 @@ static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *
106 90
107static void __init emev2_smp_prepare_cpus(unsigned int max_cpus) 91static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
108{ 92{
109 int cpu = cpu_logical_map(0);
110
111 scu_enable(scu_base); 93 scu_enable(scu_base);
112 94
113 /* enable cache coherency on CPU0 */ 95 /* enable cache coherency on CPU0 */
114 modify_scu_cpu_psr(0, 3 << (cpu * 8)); 96 scu_power_mode(scu_base, 0);
115} 97}
116 98
117static void __init emev2_smp_init_cpus(void) 99static void __init emev2_smp_init_cpus(void)