Skip to content

Commit

Permalink
OPP: Compare bandwidths for all paths in _opp_compare_key()
Browse files Browse the repository at this point in the history
Replicate the same behavior as "rates" here and compare all values
instead of relying on the first entry alone.

Signed-off-by: Viresh Kumar <[email protected]>
  • Loading branch information
vireshk committed Jul 12, 2022
1 parent 2083da2 commit 274c3e8
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions drivers/opp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1697,6 +1697,20 @@ static int _opp_compare_rate(struct opp_table *opp_table,
return 0;
}

static int _opp_compare_bw(struct opp_table *opp_table, struct dev_pm_opp *opp1,
struct dev_pm_opp *opp2)
{
int i;

for (i = 0; i < opp_table->path_count; i++) {
if (opp1->bandwidth[i].peak != opp2->bandwidth[i].peak)
return opp1->bandwidth[i].peak < opp2->bandwidth[i].peak ? -1 : 1;
}

/* Same bw for both OPPs */
return 0;
}

/*
* Returns
* 0: opp1 == opp2
Expand All @@ -1712,9 +1726,9 @@ int _opp_compare_key(struct opp_table *opp_table, struct dev_pm_opp *opp1,
if (ret)
return ret;

if (opp1->bandwidth && opp2->bandwidth &&
opp1->bandwidth[0].peak != opp2->bandwidth[0].peak)
return opp1->bandwidth[0].peak < opp2->bandwidth[0].peak ? -1 : 1;
ret = _opp_compare_bw(opp_table, opp1, opp2);
if (ret)
return ret;

if (opp1->level != opp2->level)
return opp1->level < opp2->level ? -1 : 1;
Expand Down

0 comments on commit 274c3e8

Please sign in to comment.