mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge branch 'pm-opp'
* pm-opp: (24 commits) PM / OPP: Expose _of_get_opp_desc_node as dev_pm_opp API PM / OPP: Make _find_opp_table_unlocked() static PM / OPP: Update Documentation to remove RCU specific bits PM / OPP: Simplify dev_pm_opp_get_max_volt_latency() PM / OPP: Simplify _opp_set_availability() PM / OPP: Move away from RCU locking PM / OPP: Take kref from _find_opp_table() PM / OPP: Update OPP users to put reference PM / OPP: Add 'struct kref' to struct dev_pm_opp PM / OPP: Use dev_pm_opp_get_opp_table() instead of _add_opp_table() PM / OPP: Take reference of the OPP table while adding/removing OPPs PM / OPP: Return opp_table from dev_pm_opp_set_*() routines PM / OPP: Add 'struct kref' to OPP table PM / OPP: Add per OPP table mutex PM / OPP: Split out part of _add_opp_table() and _remove_opp_table() PM / OPP: Don't expose srcu_head to register notifiers PM / OPP: Rename dev_pm_opp_get_suspend_opp() and return OPP rate PM / OPP: Don't allocate OPP table from _opp_allocate() PM / OPP: Rename and split _dev_pm_opp_remove_table() PM / OPP: Add light weight _opp_free() routine ...
This commit is contained in:
commit
64f758a07a
21 changed files with 591 additions and 977 deletions
|
|
@ -297,8 +297,6 @@ static int build_dyn_power_table(struct cpufreq_cooling_device *cpufreq_device,
|
|||
if (!power_table)
|
||||
return -ENOMEM;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
for (freq = 0, i = 0;
|
||||
opp = dev_pm_opp_find_freq_ceil(dev, &freq), !IS_ERR(opp);
|
||||
freq++, i++) {
|
||||
|
|
@ -306,13 +304,13 @@ static int build_dyn_power_table(struct cpufreq_cooling_device *cpufreq_device,
|
|||
u64 power;
|
||||
|
||||
if (i >= num_opps) {
|
||||
rcu_read_unlock();
|
||||
ret = -EAGAIN;
|
||||
goto free_power_table;
|
||||
}
|
||||
|
||||
freq_mhz = freq / 1000000;
|
||||
voltage_mv = dev_pm_opp_get_voltage(opp) / 1000;
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
/*
|
||||
* Do the multiplication with MHz and millivolt so as
|
||||
|
|
@ -328,8 +326,6 @@ static int build_dyn_power_table(struct cpufreq_cooling_device *cpufreq_device,
|
|||
power_table[i].power = power;
|
||||
}
|
||||
|
||||
rcu_read_unlock();
|
||||
|
||||
if (i != num_opps) {
|
||||
ret = PTR_ERR(opp);
|
||||
goto free_power_table;
|
||||
|
|
@ -433,13 +429,10 @@ static int get_static_power(struct cpufreq_cooling_device *cpufreq_device,
|
|||
return 0;
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
opp = dev_pm_opp_find_freq_exact(cpufreq_device->cpu_dev, freq_hz,
|
||||
true);
|
||||
voltage = dev_pm_opp_get_voltage(opp);
|
||||
|
||||
rcu_read_unlock();
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
if (voltage == 0) {
|
||||
dev_warn_ratelimited(cpufreq_device->cpu_dev,
|
||||
|
|
|
|||
|
|
@ -113,15 +113,15 @@ static int partition_enable_opps(struct devfreq_cooling_device *dfc,
|
|||
unsigned int freq = dfc->freq_table[i];
|
||||
bool want_enable = i >= cdev_state ? true : false;
|
||||
|
||||
rcu_read_lock();
|
||||
opp = dev_pm_opp_find_freq_exact(dev, freq, !want_enable);
|
||||
rcu_read_unlock();
|
||||
|
||||
if (PTR_ERR(opp) == -ERANGE)
|
||||
continue;
|
||||
else if (IS_ERR(opp))
|
||||
return PTR_ERR(opp);
|
||||
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
if (want_enable)
|
||||
ret = dev_pm_opp_enable(dev, freq);
|
||||
else
|
||||
|
|
@ -221,15 +221,12 @@ get_static_power(struct devfreq_cooling_device *dfc, unsigned long freq)
|
|||
if (!dfc->power_ops->get_static_power)
|
||||
return 0;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
opp = dev_pm_opp_find_freq_exact(dev, freq, true);
|
||||
if (IS_ERR(opp) && (PTR_ERR(opp) == -ERANGE))
|
||||
opp = dev_pm_opp_find_freq_exact(dev, freq, false);
|
||||
|
||||
voltage = dev_pm_opp_get_voltage(opp) / 1000; /* mV */
|
||||
|
||||
rcu_read_unlock();
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
if (voltage == 0) {
|
||||
dev_warn_ratelimited(dev,
|
||||
|
|
@ -412,18 +409,14 @@ static int devfreq_cooling_gen_tables(struct devfreq_cooling_device *dfc)
|
|||
unsigned long power_dyn, voltage;
|
||||
struct dev_pm_opp *opp;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
opp = dev_pm_opp_find_freq_floor(dev, &freq);
|
||||
if (IS_ERR(opp)) {
|
||||
rcu_read_unlock();
|
||||
ret = PTR_ERR(opp);
|
||||
goto free_tables;
|
||||
}
|
||||
|
||||
voltage = dev_pm_opp_get_voltage(opp) / 1000; /* mV */
|
||||
|
||||
rcu_read_unlock();
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
if (dfc->power_ops) {
|
||||
power_dyn = get_dynamic_power(dfc, freq, voltage);
|
||||
|
|
|
|||
Loading…
Reference in a new issue