Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c70ca00f authored by Ben Collins's avatar Ben Collins Committed by Dave Jones
Browse files

[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: default avatarBen Collins <bcollins@ubuntu.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent cdc9cc1d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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;
	}