[CPUFREQ] p4-clockmod: Workaround for CPU's with N60 errata
Ignore clock frequencies below 2Ghz for CPU's detected with N60 errata bug. Signed-off-by: Ben Collins <bcollins@ubuntu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dave Jones <davej@redhat.com>
This commit is contained in:
parent
cdc9cc1d74
commit
c70ca00f77
1 changed files with 9 additions and 0 deletions
|
@ -52,6 +52,7 @@ enum {
|
|||
|
||||
|
||||
static int has_N44_O17_errata[NR_CPUS];
|
||||
static int has_N60_errata[NR_CPUS];
|
||||
static unsigned int stock_freq;
|
||||
static struct cpufreq_driver p4clockmod_driver;
|
||||
static unsigned int cpufreq_p4_get(unsigned int cpu);
|
||||
|
@ -226,6 +227,12 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
|
|||
case 0x0f12:
|
||||
has_N44_O17_errata[policy->cpu] = 1;
|
||||
dprintk("has errata -- disabling low frequencies\n");
|
||||
break;
|
||||
|
||||
case 0x0f29:
|
||||
has_N60_errata[policy->cpu] = 1;
|
||||
dprintk("has errata -- disabling frequencies lower than 2ghz\n");
|
||||
break;
|
||||
}
|
||||
|
||||
/* get max frequency */
|
||||
|
@ -237,6 +244,8 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
|
|||
for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
|
||||
if ((i<2) && (has_N44_O17_errata[policy->cpu]))
|
||||
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
|
||||
else if (has_N60_errata[policy->cpu] && p4clockmod_table[i].frequency < 2000000)
|
||||
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
|
||||
else
|
||||
p4clockmod_table[i].frequency = (stock_freq * i)/8;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue