|
@@ -181,6 +181,37 @@ u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(get_cpu_idle_time);
|
|
|
|
|
|
+/*
|
|
|
+ * This is a generic cpufreq init() routine which can be used by cpufreq
|
|
|
+ * drivers of SMP systems. It will do following:
|
|
|
+ * - validate & show freq table passed
|
|
|
+ * - set policies transition latency
|
|
|
+ * - policy->cpus with all possible CPUs
|
|
|
+ */
|
|
|
+int cpufreq_generic_init(struct cpufreq_policy *policy,
|
|
|
+ struct cpufreq_frequency_table *table,
|
|
|
+ unsigned int transition_latency)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = cpufreq_table_validate_and_show(policy, table);
|
|
|
+ if (ret) {
|
|
|
+ pr_err("%s: invalid frequency table: %d\n", __func__, ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ policy->cpuinfo.transition_latency = transition_latency;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * The driver only supports the SMP configuartion where all processors
|
|
|
+ * share the clock and voltage and clock.
|
|
|
+ */
|
|
|
+ cpumask_setall(policy->cpus);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(cpufreq_generic_init);
|
|
|
+
|
|
|
struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
|
|
|
{
|
|
|
struct cpufreq_policy *policy = NULL;
|