|
@@ -1042,6 +1042,14 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif,
|
|
|
goto err_set_policy_cpu;
|
|
|
}
|
|
|
|
|
|
+ if (cpufreq_driver->get) {
|
|
|
+ policy->cur = cpufreq_driver->get(policy->cpu);
|
|
|
+ if (!policy->cur) {
|
|
|
+ pr_err("%s: ->get() failed\n", __func__);
|
|
|
+ goto err_get_freq;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/* related cpus should atleast have policy->cpus */
|
|
|
cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
|
|
|
|
|
@@ -1096,6 +1104,9 @@ err_out_unregister:
|
|
|
per_cpu(cpufreq_cpu_data, j) = NULL;
|
|
|
write_unlock_irqrestore(&cpufreq_driver_lock, flags);
|
|
|
|
|
|
+err_get_freq:
|
|
|
+ if (cpufreq_driver->exit)
|
|
|
+ cpufreq_driver->exit(policy);
|
|
|
err_set_policy_cpu:
|
|
|
cpufreq_policy_free(policy);
|
|
|
nomem_out:
|