aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/85xx/smp.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2009-09-19 08:47:57 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-09-19 08:47:57 -0400
commit40d743b8c16a8cf6e30c1d941aa6147f9550ea75 (patch)
tree9fcdf9a06b18a275253048d1ea7c9803cec38845 /arch/powerpc/platforms/85xx/smp.c
parent7da18afa423f167e7ef3c9728e584d8bf05bd55a (diff)
parent83e686ea0291ee93b87dcdc00b96443b80de56c9 (diff)
Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6
Diffstat (limited to 'arch/powerpc/platforms/85xx/smp.c')
-rw-r--r--arch/powerpc/platforms/85xx/smp.c23
1 files changed, 0 insertions, 23 deletions
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 62c592ede641..04160a4cc699 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -25,7 +25,6 @@
25 25
26#include <sysdev/fsl_soc.h> 26#include <sysdev/fsl_soc.h>
27 27
28extern volatile unsigned long __secondary_hold_acknowledge;
29extern void __early_start(void); 28extern void __early_start(void);
30 29
31#define BOOT_ENTRY_ADDR_UPPER 0 30#define BOOT_ENTRY_ADDR_UPPER 0
@@ -80,46 +79,24 @@ smp_85xx_kick_cpu(int nr)
80} 79}
81 80
82static void __init 81static void __init
83smp_85xx_basic_setup(int cpu_nr)
84{
85 /* Clear any pending timer interrupts */
86 mtspr(SPRN_TSR, TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS);
87
88 /* Enable decrementer interrupt */
89 mtspr(SPRN_TCR, TCR_DIE);
90}
91
92static void __init
93smp_85xx_setup_cpu(int cpu_nr) 82smp_85xx_setup_cpu(int cpu_nr)
94{ 83{
95 mpic_setup_this_cpu(); 84 mpic_setup_this_cpu();
96
97 smp_85xx_basic_setup(cpu_nr);
98} 85}
99 86
100struct smp_ops_t smp_85xx_ops = { 87struct smp_ops_t smp_85xx_ops = {
101 .kick_cpu = smp_85xx_kick_cpu, 88 .kick_cpu = smp_85xx_kick_cpu,
102}; 89};
103 90
104static int __init smp_dummy_probe(void)
105{
106 return NR_CPUS;
107}
108
109void __init mpc85xx_smp_init(void) 91void __init mpc85xx_smp_init(void)
110{ 92{
111 struct device_node *np; 93 struct device_node *np;
112 94
113 smp_85xx_ops.message_pass = NULL;
114
115 np = of_find_node_by_type(NULL, "open-pic"); 95 np = of_find_node_by_type(NULL, "open-pic");
116 if (np) { 96 if (np) {
117 smp_85xx_ops.probe = smp_mpic_probe; 97 smp_85xx_ops.probe = smp_mpic_probe;
118 smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu; 98 smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu;
119 smp_85xx_ops.message_pass = smp_mpic_message_pass; 99 smp_85xx_ops.message_pass = smp_mpic_message_pass;
120 } else {
121 smp_85xx_ops.probe = smp_dummy_probe;
122 smp_85xx_ops.setup_cpu = smp_85xx_basic_setup;
123 } 100 }
124 101
125 if (cpu_has_feature(CPU_FTR_DBELL)) 102 if (cpu_has_feature(CPU_FTR_DBELL))