Commit 6a77a1e6 authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki
Browse files

cpufreq: pxa: call cpufreq_frequency_table_get_attr()



This exposes frequency table of driver to cpufreq core and is required for core
to guess what the index for a target frequency is, when it calls
cpufreq_frequency_table_target(). And so this driver needs to expose it.

Cc: Eric Miao <eric.y.miao@gmail.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 27047a60
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -453,20 +453,31 @@ static int pxa_cpufreq_init(struct cpufreq_policy *policy)
		find_freq_tables(&pxa255_freq_table, &pxa255_freqs);
		pr_info("PXA255 cpufreq using %s frequency table\n",
			pxa255_turbo_table ? "turbo" : "run");

		cpufreq_frequency_table_cpuinfo(policy, pxa255_freq_table);
		cpufreq_frequency_table_get_attr(pxa255_freq_table, policy->cpu);
	}
	else if (cpu_is_pxa27x())
	else if (cpu_is_pxa27x()) {
		cpufreq_frequency_table_cpuinfo(policy, pxa27x_freq_table);
		cpufreq_frequency_table_get_attr(pxa27x_freq_table, policy->cpu);
	}

	printk(KERN_INFO "PXA CPU frequency change support initialized\n");

	return 0;
}

static int pxa_cpufreq_exit(struct cpufreq_policy *policy)
{
	cpufreq_frequency_table_put_attr(policy->cpu);
	return 0;
}

static struct cpufreq_driver pxa_cpufreq_driver = {
	.verify	= pxa_verify_policy,
	.target	= pxa_set_target,
	.init	= pxa_cpufreq_init,
	.exit	= pxa_cpufreq_exit,
	.get	= pxa_cpufreq_get,
	.name	= "PXA2xx",
};
+13 −2
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ static int setup_freqs_table(struct cpufreq_policy *policy,
			     struct pxa3xx_freq_info *freqs, int num)
{
	struct cpufreq_frequency_table *table;
	int i;
	int i, ret;

	table = kzalloc((num + 1) * sizeof(*table), GFP_KERNEL);
	if (table == NULL)
@@ -108,7 +108,11 @@ static int setup_freqs_table(struct cpufreq_policy *policy,
	pxa3xx_freqs_num = num;
	pxa3xx_freqs_table = table;

	return cpufreq_frequency_table_cpuinfo(policy, table);
	ret = cpufreq_frequency_table_cpuinfo(policy, table);
	if (!ret)
		cpufreq_frequency_table_get_attr(table, policy->cpu);

	return ret;
}

static void __update_core_freq(struct pxa3xx_freq_info *info)
@@ -229,10 +233,17 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)
	return 0;
}

static int pxa3xx_cpufreq_exit(struct cpufreq_policy *policy)
{
	cpufreq_frequency_table_put_attr(policy->cpu);
	return 0;
}

static struct cpufreq_driver pxa3xx_cpufreq_driver = {
	.verify		= pxa3xx_cpufreq_verify,
	.target		= pxa3xx_cpufreq_set,
	.init		= pxa3xx_cpufreq_init,
	.exit		= pxa3xx_cpufreq_exit,
	.get		= pxa3xx_cpufreq_get,
	.name		= "pxa3xx-cpufreq",
};