diff options
author | Finley Xiao <finley.xiao@rock-chips.com> | 2018-06-26 22:09:05 +0800 |
---|---|---|
committer | Tao Huang <huangtao@rock-chips.com> | 2018-07-06 10:21:14 +0800 |
commit | 87c0821959fc5892bc5ac1295c964bbdc4888eba (patch) | |
tree | 3c6a6faa54e5a3277b71ccaff5093eafd2da3d96 /drivers | |
parent | 9d01f918930bd14e2092d05a8850754d9f91df11 (diff) |
PM / OPP: Rename dev_pm_opp_check_initial_rate to dev_pm_opp_check_rate_volt
Make the function more general.
Change-Id: Ic10b84ddb6b7eff33e1a1fe491f05f10a9c6015a
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/power/opp/core.c | 24 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq-dt.c | 5 |
2 files changed, 13 insertions, 16 deletions
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c index 7028daa3adcb..e185950a3eec 100644 --- a/drivers/base/power/opp/core.c +++ b/drivers/base/power/opp/core.c @@ -704,15 +704,15 @@ restore_voltage: EXPORT_SYMBOL_GPL(dev_pm_opp_set_rate); /** - * dev_pm_opp_check_initial_rate() - Configure new OPP based on initial rate + * dev_pm_opp_check_rate_volt() - Configure new OPP based on current rate * @dev: device for which we do this operation * * This configures the power-supplies and clock source to the levels specified - * by the OPP corresponding to the system initial rate. + * by the OPP corresponding to current rate. * * Locking: This function takes rcu_read_lock(). */ -int dev_pm_opp_check_initial_rate(struct device *dev, unsigned long *cur_freq) +int dev_pm_opp_check_rate_volt(struct device *dev, bool force) { struct opp_table *opp_table; struct dev_pm_opp *opp; @@ -741,7 +741,6 @@ int dev_pm_opp_check_initial_rate(struct device *dev, unsigned long *cur_freq) } old_freq = clk_get_rate(clk); - *cur_freq = old_freq; target_freq = old_freq; opp = dev_pm_opp_find_freq_ceil(dev, &target_freq); @@ -772,11 +771,14 @@ int dev_pm_opp_check_initial_rate(struct device *dev, unsigned long *cur_freq) target_freq, u_volt); if (old_freq == target_freq) { - ret = _set_opp_voltage(dev, reg, u_volt, u_volt_min, - u_volt_max); - if (ret) { - dev_err(dev, "failed to set volt %lu\n", u_volt); - return ret; + if (old_volt != u_volt || force) { + ret = _set_opp_voltage(dev, reg, u_volt, u_volt_min, + u_volt_max); + if (ret) { + dev_err(dev, "failed to set volt %lu\n", + u_volt); + return ret; + } } return 0; } @@ -798,8 +800,6 @@ int dev_pm_opp_check_initial_rate(struct device *dev, unsigned long *cur_freq) return ret; } - *cur_freq = clk_get_rate(clk); - /* Scaling down? Scale voltage after frequency */ if (target_freq < old_freq) { ret = _set_opp_voltage(dev, reg, u_volt, u_volt_min, @@ -812,7 +812,7 @@ int dev_pm_opp_check_initial_rate(struct device *dev, unsigned long *cur_freq) return 0; } -EXPORT_SYMBOL_GPL(dev_pm_opp_check_initial_rate); +EXPORT_SYMBOL_GPL(dev_pm_opp_check_rate_volt); /* OPP-dev Helpers */ static void _kfree_opp_dev_rcu(struct rcu_head *head) diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index f07774f96a14..2632f162e425 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -158,7 +158,6 @@ static int cpufreq_init(struct cpufreq_policy *policy) struct cpumask cpus; #endif unsigned int transition_latency; - unsigned long cur_freq; bool opp_v1 = false; const char *name; int ret, scale; @@ -314,9 +313,7 @@ static int cpufreq_init(struct cpufreq_policy *policy) policy->down_transition_delay_us = 50000; /* 50ms */ if (check_init < MAX_CLUSTERS) { - ret = dev_pm_opp_check_initial_rate(cpu_dev, &cur_freq); - if (!ret) - policy->cur = cur_freq / 1000; + dev_pm_opp_check_rate_volt(cpu_dev, true); check_init++; } |