aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2007-06-12 08:04:09 -0400
committerRalf Baechle <ralf@linux-mips.org>2007-06-26 13:57:33 -0400
commitc8eae71dc81af15809d87d7aabb94810cea9577d (patch)
tree15dbc5de3a7fbd6bc1a7b2b1f0291e07218a4709 /arch/mips/kernel
parentb0c10b9f4c4123dfb2f9e0d3df244a402c938561 (diff)
[MIPS] 20K: Handle WAIT related bugs according to errata information
We used to avoid the WAIT entirely on the 20K but really only need to do this on early revs of the 20K. Without this a 20K was a bit of a power hog. Well, in the lower power power hog category ;-) Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r--arch/mips/kernel/cpu-probe.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index ab755ea26c6..0fc90ba16ae 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -137,7 +137,6 @@ static inline void check_wait(void)
137 case CPU_4KEC: 137 case CPU_4KEC:
138 case CPU_4KSC: 138 case CPU_4KSC:
139 case CPU_5KC: 139 case CPU_5KC:
140/* case CPU_20KC:*/
141 case CPU_24K: 140 case CPU_24K:
142 case CPU_25KF: 141 case CPU_25KF:
143 case CPU_34K: 142 case CPU_34K:
@@ -156,6 +155,17 @@ static inline void check_wait(void)
156 if (allow_au1k_wait) 155 if (allow_au1k_wait)
157 cpu_wait = au1k_wait; 156 cpu_wait = au1k_wait;
158 break; 157 break;
158 case CPU_20KC:
159 /*
160 * WAIT on Rev1.0 has E1, E2, E3 and E16.
161 * WAIT on Rev2.0 and Rev3.0 has E16.
162 * Rev3.1 WAIT is nop, why bother
163 */
164 if ((c->processor_id & 0xff) <= 0x64)
165 break;
166
167 cpu_wait = r4k_wait;
168 break;
159 case CPU_RM9000: 169 case CPU_RM9000:
160 if ((c->processor_id & 0x00ff) >= 0x40) 170 if ((c->processor_id & 0x00ff) >= 0x40)
161 cpu_wait = r4k_wait; 171 cpu_wait = r4k_wait;