Skip to content

Commit c2bebf9

Browse files
committed
OPP: Reorder code in _opp_set_required_opps_genpd()
Reorder code in _opp_set_required_opps_genpd() to reduce duplicate code. Signed-off-by: Viresh Kumar <[email protected]> Reviewed-by: Ulf Hansson <[email protected]>
1 parent 9610404 commit c2bebf9

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

drivers/opp/core.c

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,27 +1076,31 @@ static int _opp_set_required_opps_genpd(struct device *dev,
10761076
{
10771077
struct device **genpd_virt_devs =
10781078
opp_table->genpd_virt_devs ? opp_table->genpd_virt_devs : &dev;
1079-
int i, ret = 0;
1079+
int index, target, delta, ret = 0;
1080+
1081+
/* Scaling up? Set required OPPs in normal order, else reverse */
1082+
if (!scaling_down) {
1083+
index = 0;
1084+
target = opp_table->required_opp_count;
1085+
delta = 1;
1086+
} else {
1087+
index = opp_table->required_opp_count - 1;
1088+
target = -1;
1089+
delta = -1;
1090+
}
10801091

10811092
/*
10821093
* Acquire genpd_virt_dev_lock to make sure we don't use a genpd_dev
10831094
* after it is freed from another thread.
10841095
*/
10851096
mutex_lock(&opp_table->genpd_virt_dev_lock);
10861097

1087-
/* Scaling up? Set required OPPs in normal order, else reverse */
1088-
if (!scaling_down) {
1089-
for (i = 0; i < opp_table->required_opp_count; i++) {
1090-
ret = _set_performance_state(dev, genpd_virt_devs[i], opp, i);
1091-
if (ret)
1092-
break;
1093-
}
1094-
} else {
1095-
for (i = opp_table->required_opp_count - 1; i >= 0; i--) {
1096-
ret = _set_performance_state(dev, genpd_virt_devs[i], opp, i);
1097-
if (ret)
1098-
break;
1099-
}
1098+
while (index != target) {
1099+
ret = _set_performance_state(dev, genpd_virt_devs[index], opp, index);
1100+
if (ret)
1101+
break;
1102+
1103+
index += delta;
11001104
}
11011105

11021106
mutex_unlock(&opp_table->genpd_virt_dev_lock);

0 commit comments

Comments
 (0)