|
Line
Link Here
|
| 0 |
-- b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c |
0 |
++ a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c |
|
Lines 51-56
Link Here
|
| 51 |
|
51 |
|
| 52 |
|
52 |
|
| 53 |
static int has_N44_O17_errata[NR_CPUS]; |
53 |
static int has_N44_O17_errata[NR_CPUS]; |
|
|
54 |
static int has_N60_errata[NR_CPUS]; |
| 54 |
static unsigned int stock_freq; |
55 |
static unsigned int stock_freq; |
| 55 |
static struct cpufreq_driver p4clockmod_driver; |
56 |
static struct cpufreq_driver p4clockmod_driver; |
| 56 |
static unsigned int cpufreq_p4_get(unsigned int cpu); |
57 |
static unsigned int cpufreq_p4_get(unsigned int cpu); |
|
Lines 223-228
Link Here
|
| 223 |
case 0x0f12: |
224 |
case 0x0f12: |
| 224 |
has_N44_O17_errata[policy->cpu] = 1; |
225 |
has_N44_O17_errata[policy->cpu] = 1; |
| 225 |
dprintk("has errata -- disabling low frequencies\n"); |
226 |
dprintk("has errata -- disabling low frequencies\n"); |
|
|
227 |
break; |
| 228 |
|
| 229 |
case 0x0f29: |
| 230 |
has_N60_errata[policy->cpu] = 1; |
| 231 |
dprintk("has errata -- disabling frequencies lower than 2ghz\n"); |
| 232 |
break; |
| 226 |
} |
233 |
} |
| 227 |
|
234 |
|
| 228 |
/* get max frequency */ |
235 |
/* get max frequency */ |
|
Lines 234-239
Link Here
|
| 234 |
for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) { |
241 |
for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) { |
| 235 |
if ((i<2) && (has_N44_O17_errata[policy->cpu])) |
242 |
if ((i<2) && (has_N44_O17_errata[policy->cpu])) |
| 236 |
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID; |
243 |
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID; |
|
|
244 |
else if (has_N60_errata[policy->cpu] && ((stock_freq * i)/8) < 2000000) |
| 245 |
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID; |
| 237 |
else |
246 |
else |
| 238 |
p4clockmod_table[i].frequency = (stock_freq * i)/8; |
247 |
p4clockmod_table[i].frequency = (stock_freq * i)/8; |
| 239 |
} |
248 |
} |