Skip to content

Commit

Permalink
opp: Allow _set_opp() to work for non-freq devices
Browse files Browse the repository at this point in the history
The _set_opp() helper will be used for devices which don't change frequency
(like power domains, etc.) later on, prepare for that by not relying on
frequency for making decisions here.

While at it, also update the debug print to contain all relevant
information.

Signed-off-by: Viresh Kumar <[email protected]>
Tested-by: Dmitry Osipenko <[email protected]>
  • Loading branch information
vireshk committed Feb 2, 2021
1 parent 386ba85 commit f0b88fa
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions drivers/opp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1003,7 +1003,7 @@ static int _set_opp(struct device *dev, struct opp_table *opp_table,
{
struct dev_pm_opp *old_opp;
unsigned long old_freq;
int ret;
int scaling_down, ret;

if (unlikely(!opp))
return _disable_opp_table(dev, opp_table);
Expand All @@ -1021,11 +1021,17 @@ static int _set_opp(struct device *dev, struct opp_table *opp_table,
return 0;
}

dev_dbg(dev, "%s: switching OPP: %lu Hz --> %lu Hz\n", __func__,
old_freq, freq);
dev_dbg(dev, "%s: switching OPP: Freq %lu -> %lu Hz, Level %u -> %u, Bw %u -> %u\n",
__func__, old_freq, 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);
if (scaling_down == -1)
scaling_down = 0;

/* Scaling up? Configure required OPPs before frequency */
if (freq >= old_freq) {
if (!scaling_down) {
ret = _set_required_opps(dev, opp_table, opp, true);
if (ret)
return ret;
Expand All @@ -1044,7 +1050,7 @@ static int _set_opp(struct device *dev, struct opp_table *opp_table,
}

/* Scaling down? Configure required OPPs after frequency */
if (!ret && freq < old_freq) {
if (!ret && scaling_down) {
ret = _set_required_opps(dev, opp_table, opp, false);
if (ret)
dev_err(dev, "Failed to set required opps: %d\n", ret);
Expand Down

0 comments on commit f0b88fa

Please sign in to comment.