diff options
Diffstat (limited to 'drivers/cpufreq/cpufreq.c')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 47 |
1 files changed, 8 insertions, 39 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 3162010900c9..893dbaf386fb 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -768,6 +768,9 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
768 | unlock_policy_rwsem_write(cpu); | 768 | unlock_policy_rwsem_write(cpu); |
769 | goto err_out; | 769 | goto err_out; |
770 | } | 770 | } |
771 | policy->user_policy.min = policy->cpuinfo.min_freq; | ||
772 | policy->user_policy.max = policy->cpuinfo.max_freq; | ||
773 | policy->user_policy.governor = policy->governor; | ||
771 | 774 | ||
772 | #ifdef CONFIG_SMP | 775 | #ifdef CONFIG_SMP |
773 | for_each_cpu_mask(j, policy->cpus) { | 776 | for_each_cpu_mask(j, policy->cpus) { |
@@ -858,10 +861,13 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
858 | 861 | ||
859 | policy->governor = NULL; /* to assure that the starting sequence is | 862 | policy->governor = NULL; /* to assure that the starting sequence is |
860 | * run in cpufreq_set_policy */ | 863 | * run in cpufreq_set_policy */ |
861 | unlock_policy_rwsem_write(cpu); | ||
862 | 864 | ||
863 | /* set default policy */ | 865 | /* set default policy */ |
864 | ret = cpufreq_set_policy(&new_policy); | 866 | ret = __cpufreq_set_policy(policy, &new_policy); |
867 | policy->user_policy.policy = policy->policy; | ||
868 | |||
869 | unlock_policy_rwsem_write(cpu); | ||
870 | |||
865 | if (ret) { | 871 | if (ret) { |
866 | dprintk("setting policy failed\n"); | 872 | dprintk("setting policy failed\n"); |
867 | goto err_out_unregister; | 873 | goto err_out_unregister; |
@@ -1620,43 +1626,6 @@ error_out: | |||
1620 | } | 1626 | } |
1621 | 1627 | ||
1622 | /** | 1628 | /** |
1623 | * cpufreq_set_policy - set a new CPUFreq policy | ||
1624 | * @policy: policy to be set. | ||
1625 | * | ||
1626 | * Sets a new CPU frequency and voltage scaling policy. | ||
1627 | */ | ||
1628 | int cpufreq_set_policy(struct cpufreq_policy *policy) | ||
1629 | { | ||
1630 | int ret = 0; | ||
1631 | struct cpufreq_policy *data; | ||
1632 | |||
1633 | if (!policy) | ||
1634 | return -EINVAL; | ||
1635 | |||
1636 | data = cpufreq_cpu_get(policy->cpu); | ||
1637 | if (!data) | ||
1638 | return -EINVAL; | ||
1639 | |||
1640 | if (unlikely(lock_policy_rwsem_write(policy->cpu))) | ||
1641 | return -EINVAL; | ||
1642 | |||
1643 | |||
1644 | ret = __cpufreq_set_policy(data, policy); | ||
1645 | data->user_policy.min = data->min; | ||
1646 | data->user_policy.max = data->max; | ||
1647 | data->user_policy.policy = data->policy; | ||
1648 | data->user_policy.governor = data->governor; | ||
1649 | |||
1650 | unlock_policy_rwsem_write(policy->cpu); | ||
1651 | |||
1652 | cpufreq_cpu_put(data); | ||
1653 | |||
1654 | return ret; | ||
1655 | } | ||
1656 | EXPORT_SYMBOL(cpufreq_set_policy); | ||
1657 | |||
1658 | |||
1659 | /** | ||
1660 | * cpufreq_update_policy - re-evaluate an existing cpufreq policy | 1629 | * cpufreq_update_policy - re-evaluate an existing cpufreq policy |
1661 | * @cpu: CPU which shall be re-evaluated | 1630 | * @cpu: CPU which shall be re-evaluated |
1662 | * | 1631 | * |