cpufreq: powernow: 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 powernow driver. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
2633a46c58
commit
d63bd27fe9
|
@ -104,19 +104,6 @@ static void powernow_k6_set_state(struct cpufreq_policy *policy,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* powernow_k6_verify - verifies a new CPUfreq policy
|
|
||||||
* @policy: new policy
|
|
||||||
*
|
|
||||||
* Policy must be within lowest and highest possible CPU Frequency,
|
|
||||||
* and at least one possible state must be within min and max.
|
|
||||||
*/
|
|
||||||
static int powernow_k6_verify(struct cpufreq_policy *policy)
|
|
||||||
{
|
|
||||||
return cpufreq_frequency_table_verify(policy, &clock_ratio[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* powernow_k6_setpolicy - sets a new CPUFreq policy
|
* powernow_k6_setpolicy - sets a new CPUFreq policy
|
||||||
* @policy: new policy
|
* @policy: new policy
|
||||||
|
@ -188,19 +175,14 @@ static unsigned int powernow_k6_get(unsigned int cpu)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct freq_attr *powernow_k6_attr[] = {
|
|
||||||
&cpufreq_freq_attr_scaling_available_freqs,
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct cpufreq_driver powernow_k6_driver = {
|
static struct cpufreq_driver powernow_k6_driver = {
|
||||||
.verify = powernow_k6_verify,
|
.verify = cpufreq_generic_frequency_table_verify,
|
||||||
.target = powernow_k6_target,
|
.target = powernow_k6_target,
|
||||||
.init = powernow_k6_cpu_init,
|
.init = powernow_k6_cpu_init,
|
||||||
.exit = powernow_k6_cpu_exit,
|
.exit = powernow_k6_cpu_exit,
|
||||||
.get = powernow_k6_get,
|
.get = powernow_k6_get,
|
||||||
.name = "powernow-k6",
|
.name = "powernow-k6",
|
||||||
.attr = powernow_k6_attr,
|
.attr = cpufreq_generic_attr,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct x86_cpu_id powernow_k6_ids[] = {
|
static const struct x86_cpu_id powernow_k6_ids[] = {
|
||||||
|
|
|
@ -549,11 +549,6 @@ static int powernow_target(struct cpufreq_policy *policy,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int powernow_verify(struct cpufreq_policy *policy)
|
|
||||||
{
|
|
||||||
return cpufreq_frequency_table_verify(policy, powernow_table);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We use the fact that the bus frequency is somehow
|
* We use the fact that the bus frequency is somehow
|
||||||
* a multiple of 100000/3 khz, then we compute sgtc according
|
* a multiple of 100000/3 khz, then we compute sgtc according
|
||||||
|
@ -699,13 +694,8 @@ static int powernow_cpu_exit(struct cpufreq_policy *policy)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct freq_attr *powernow_table_attr[] = {
|
|
||||||
&cpufreq_freq_attr_scaling_available_freqs,
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct cpufreq_driver powernow_driver = {
|
static struct cpufreq_driver powernow_driver = {
|
||||||
.verify = powernow_verify,
|
.verify = cpufreq_generic_frequency_table_verify,
|
||||||
.target = powernow_target,
|
.target = powernow_target,
|
||||||
.get = powernow_get,
|
.get = powernow_get,
|
||||||
#ifdef CONFIG_X86_POWERNOW_K7_ACPI
|
#ifdef CONFIG_X86_POWERNOW_K7_ACPI
|
||||||
|
@ -714,7 +704,7 @@ static struct cpufreq_driver powernow_driver = {
|
||||||
.init = powernow_cpu_init,
|
.init = powernow_cpu_init,
|
||||||
.exit = powernow_cpu_exit,
|
.exit = powernow_cpu_exit,
|
||||||
.name = "powernow-k7",
|
.name = "powernow-k7",
|
||||||
.attr = powernow_table_attr,
|
.attr = cpufreq_generic_attr,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init powernow_init(void)
|
static int __init powernow_init(void)
|
||||||
|
|
|
@ -1053,17 +1053,6 @@ static int powernowk8_target(struct cpufreq_policy *pol,
|
||||||
return work_on_cpu(pol->cpu, powernowk8_target_fn, &pta);
|
return work_on_cpu(pol->cpu, powernowk8_target_fn, &pta);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Driver entry point to verify the policy and range of frequencies */
|
|
||||||
static int powernowk8_verify(struct cpufreq_policy *pol)
|
|
||||||
{
|
|
||||||
struct powernow_k8_data *data = per_cpu(powernow_data, pol->cpu);
|
|
||||||
|
|
||||||
if (!data)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
return cpufreq_frequency_table_verify(pol, data->powernow_table);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct init_on_cpu {
|
struct init_on_cpu {
|
||||||
struct powernow_k8_data *data;
|
struct powernow_k8_data *data;
|
||||||
int rc;
|
int rc;
|
||||||
|
@ -1225,20 +1214,15 @@ out:
|
||||||
return khz;
|
return khz;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct freq_attr *powernow_k8_attr[] = {
|
|
||||||
&cpufreq_freq_attr_scaling_available_freqs,
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct cpufreq_driver cpufreq_amd64_driver = {
|
static struct cpufreq_driver cpufreq_amd64_driver = {
|
||||||
.verify = powernowk8_verify,
|
.verify = cpufreq_generic_frequency_table_verify,
|
||||||
.target = powernowk8_target,
|
.target = powernowk8_target,
|
||||||
.bios_limit = acpi_processor_get_bios_limit,
|
.bios_limit = acpi_processor_get_bios_limit,
|
||||||
.init = powernowk8_cpu_init,
|
.init = powernowk8_cpu_init,
|
||||||
.exit = powernowk8_cpu_exit,
|
.exit = powernowk8_cpu_exit,
|
||||||
.get = powernowk8_get,
|
.get = powernowk8_get,
|
||||||
.name = "powernow-k8",
|
.name = "powernow-k8",
|
||||||
.attr = powernow_k8_attr,
|
.attr = cpufreq_generic_attr,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __request_acpi_cpufreq(void)
|
static void __request_acpi_cpufreq(void)
|
||||||
|
|
Loading…
Reference in New Issue