OPP: Reorder code in _opp_set_required_opps_genpd()
authorViresh Kumar <viresh.kumar@linaro.org>
Fri, 13 Oct 2023 05:34:38 +0000 (11:04 +0530)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 17 Oct 2023 05:41:23 +0000 (11:11 +0530)
Reorder code in _opp_set_required_opps_genpd() to reduce duplicate code.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/opp/core.c

index f42b663a4d8b0d91e8dd5c4015bd666268d35f5f..42ca52fbe2101cc99463c53c4ce3b63427ebb171 100644 (file)
@@ -1076,7 +1076,18 @@ static int _opp_set_required_opps_genpd(struct device *dev,
 {
        struct device **genpd_virt_devs =
                opp_table->genpd_virt_devs ? opp_table->genpd_virt_devs : &dev;
-       int i, ret = 0;
+       int index, target, delta, ret = 0;
+
+       /* Scaling up? Set required OPPs in normal order, else reverse */
+       if (!scaling_down) {
+               index = 0;
+               target = opp_table->required_opp_count;
+               delta = 1;
+       } else {
+               index = opp_table->required_opp_count - 1;
+               target = -1;
+               delta = -1;
+       }
 
        /*
         * Acquire genpd_virt_dev_lock to make sure we don't use a genpd_dev
@@ -1084,19 +1095,12 @@ static int _opp_set_required_opps_genpd(struct device *dev,
         */
        mutex_lock(&opp_table->genpd_virt_dev_lock);
 
-       /* Scaling up? Set required OPPs in normal order, else reverse */
-       if (!scaling_down) {
-               for (i = 0; i < opp_table->required_opp_count; i++) {
-                       ret = _set_performance_state(dev, genpd_virt_devs[i], opp, i);
-                       if (ret)
-                               break;
-               }
-       } else {
-               for (i = opp_table->required_opp_count - 1; i >= 0; i--) {
-                       ret = _set_performance_state(dev, genpd_virt_devs[i], opp, i);
-                       if (ret)
-                               break;
-               }
+       while (index != target) {
+               ret = _set_performance_state(dev, genpd_virt_devs[index], opp, index);
+               if (ret)
+                       break;
+
+               index += delta;
        }
 
        mutex_unlock(&opp_table->genpd_virt_dev_lock);