Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <viresh.kumar@linaro.org>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>

+18 -14
+18 -14
drivers/opp/core.c
··· 1076 1076 { 1077 1077 struct device **genpd_virt_devs = 1078 1078 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 + } 1080 1091 1081 1092 /* 1082 1093 * Acquire genpd_virt_dev_lock to make sure we don't use a genpd_dev ··· 1095 1084 */ 1096 1085 mutex_lock(&opp_table->genpd_virt_dev_lock); 1097 1086 1098 - /* Scaling up? Set required OPPs in normal order, else reverse */ 1099 - if (!scaling_down) { 1100 - for (i = 0; i < opp_table->required_opp_count; i++) { 1101 - ret = _set_performance_state(dev, genpd_virt_devs[i], opp, i); 1102 - if (ret) 1103 - break; 1104 - } 1105 - } else { 1106 - for (i = opp_table->required_opp_count - 1; i >= 0; i--) { 1107 - ret = _set_performance_state(dev, genpd_virt_devs[i], opp, i); 1108 - if (ret) 1109 - break; 1110 - } 1087 + while (index != target) { 1088 + ret = _set_performance_state(dev, genpd_virt_devs[index], opp, index); 1089 + if (ret) 1090 + break; 1091 + 1092 + index += delta; 1111 1093 } 1112 1094 1113 1095 mutex_unlock(&opp_table->genpd_virt_dev_lock);