Commit eea6181e authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki

cpufreq: exynos: Use generic cpufreq routines

Most of the CPUFreq drivers do similar things in .exit() and .verify() routines
and .attr. So its better if we have generic routines for them which can be used
by cpufreq drivers then.

This patch uses these generic routines in the exynos driver.
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Acked-By: default avatarAmit Daniel Kachhap <amit.daniel@samsung.com>
Acked-by: default avatarKukjin Kim <kgene.kim@samsung.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 06494eb7
...@@ -31,12 +31,6 @@ static unsigned int locking_frequency; ...@@ -31,12 +31,6 @@ static unsigned int locking_frequency;
static bool frequency_locked; static bool frequency_locked;
static DEFINE_MUTEX(cpufreq_lock); static DEFINE_MUTEX(cpufreq_lock);
static int exynos_verify_speed(struct cpufreq_policy *policy)
{
return cpufreq_frequency_table_verify(policy,
exynos_info->freq_table);
}
static unsigned int exynos_getspeed(unsigned int cpu) static unsigned int exynos_getspeed(unsigned int cpu)
{ {
return clk_get_rate(exynos_info->cpu_clk) / 1000; return clk_get_rate(exynos_info->cpu_clk) / 1000;
...@@ -257,26 +251,15 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -257,26 +251,15 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)
return cpufreq_table_validate_and_show(policy, exynos_info->freq_table); return cpufreq_table_validate_and_show(policy, exynos_info->freq_table);
} }
static int exynos_cpufreq_cpu_exit(struct cpufreq_policy *policy)
{
cpufreq_frequency_table_put_attr(policy->cpu);
return 0;
}
static struct freq_attr *exynos_cpufreq_attr[] = {
&cpufreq_freq_attr_scaling_available_freqs,
NULL,
};
static struct cpufreq_driver exynos_driver = { static struct cpufreq_driver exynos_driver = {
.flags = CPUFREQ_STICKY, .flags = CPUFREQ_STICKY,
.verify = exynos_verify_speed, .verify = cpufreq_generic_frequency_table_verify,
.target = exynos_target, .target = exynos_target,
.get = exynos_getspeed, .get = exynos_getspeed,
.init = exynos_cpufreq_cpu_init, .init = exynos_cpufreq_cpu_init,
.exit = exynos_cpufreq_cpu_exit, .exit = cpufreq_generic_exit,
.name = "exynos_cpufreq", .name = "exynos_cpufreq",
.attr = exynos_cpufreq_attr, .attr = cpufreq_generic_attr,
#ifdef CONFIG_PM #ifdef CONFIG_PM
.suspend = exynos_cpufreq_suspend, .suspend = exynos_cpufreq_suspend,
.resume = exynos_cpufreq_resume, .resume = exynos_cpufreq_resume,
......
...@@ -209,12 +209,6 @@ static void exynos_enable_dvfs(void) ...@@ -209,12 +209,6 @@ static void exynos_enable_dvfs(void)
dvfs_info->base + XMU_DVFS_CTRL); dvfs_info->base + XMU_DVFS_CTRL);
} }
static int exynos_verify_speed(struct cpufreq_policy *policy)
{
return cpufreq_frequency_table_verify(policy,
dvfs_info->freq_table);
}
static unsigned int exynos_getspeed(unsigned int cpu) static unsigned int exynos_getspeed(unsigned int cpu)
{ {
return dvfs_info->cur_frequency; return dvfs_info->cur_frequency;
...@@ -339,19 +333,13 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -339,19 +333,13 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)
return 0; return 0;
} }
static int exynos_cpufreq_cpu_exit(struct cpufreq_policy *policy)
{
cpufreq_frequency_table_put_attr(policy->cpu);
return 0;
}
static struct cpufreq_driver exynos_driver = { static struct cpufreq_driver exynos_driver = {
.flags = CPUFREQ_STICKY, .flags = CPUFREQ_STICKY,
.verify = exynos_verify_speed, .verify = cpufreq_generic_frequency_table_verify,
.target = exynos_target, .target = exynos_target,
.get = exynos_getspeed, .get = exynos_getspeed,
.init = exynos_cpufreq_cpu_init, .init = exynos_cpufreq_cpu_init,
.exit = exynos_cpufreq_cpu_exit, .exit = cpufreq_generic_exit,
.name = CPUFREQ_NAME, .name = CPUFREQ_NAME,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment