Merge branch 'opp/linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm
Pull an operating performance points (OPP) framework fix for 5.12 from Viresh Kumar: "Single patch to fix an issue where a frequency update may get skipped." * 'opp/linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm: opp: Don't skip freq update for different frequency
This commit is contained in:
commit
8521ce52cd
@ -998,14 +998,15 @@ static int _set_opp(struct device *dev, struct opp_table *opp_table,
|
||||
old_opp = opp_table->current_opp;
|
||||
|
||||
/* Return early if nothing to do */
|
||||
if (opp_table->enabled && old_opp == opp) {
|
||||
if (old_opp == opp && opp_table->current_rate == freq &&
|
||||
opp_table->enabled) {
|
||||
dev_dbg(dev, "%s: OPPs are same, nothing to do\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
dev_dbg(dev, "%s: switching OPP: Freq %lu -> %lu Hz, Level %u -> %u, Bw %u -> %u\n",
|
||||
__func__, old_opp->rate, freq, old_opp->level, opp->level,
|
||||
old_opp->bandwidth ? old_opp->bandwidth[0].peak : 0,
|
||||
__func__, opp_table->current_rate, freq, old_opp->level,
|
||||
opp->level, old_opp->bandwidth ? old_opp->bandwidth[0].peak : 0,
|
||||
opp->bandwidth ? opp->bandwidth[0].peak : 0);
|
||||
|
||||
scaling_down = _opp_compare_key(old_opp, opp);
|
||||
@ -1061,6 +1062,7 @@ static int _set_opp(struct device *dev, struct opp_table *opp_table,
|
||||
/* Make sure current_opp doesn't get freed */
|
||||
dev_pm_opp_get(opp);
|
||||
opp_table->current_opp = opp;
|
||||
opp_table->current_rate = freq;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -135,6 +135,7 @@ enum opp_table_access {
|
||||
* @clock_latency_ns_max: Max clock latency in nanoseconds.
|
||||
* @parsed_static_opps: Count of devices for which OPPs are initialized from DT.
|
||||
* @shared_opp: OPP is shared between multiple devices.
|
||||
* @current_rate: Currently configured frequency.
|
||||
* @current_opp: Currently configured OPP for the table.
|
||||
* @suspend_opp: Pointer to OPP to be used during device suspend.
|
||||
* @genpd_virt_dev_lock: Mutex protecting the genpd virtual device pointers.
|
||||
@ -184,6 +185,7 @@ struct opp_table {
|
||||
|
||||
unsigned int parsed_static_opps;
|
||||
enum opp_table_access shared_opp;
|
||||
unsigned long current_rate;
|
||||
struct dev_pm_opp *current_opp;
|
||||
struct dev_pm_opp *suspend_opp;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user