aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-09-15 11:38:38 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-09-16 18:58:00 -0400
commit4df27c91893fd13eaa30e9b0bca74f317816f428 (patch)
tree0e361f3fc2018ab46df24f3b676b6782edf0a63d
parent9395452b4aab7bc2475ef8935b4a4fb99d778d70 (diff)
PM / OPP: avoid maybe-uninitialized warning
When CONFIG_OPTIMIZE_INLINING is set and we are building with -Wmaybe-uninitialized enabled, we can get a warning for the opp core driver: drivers/base/power/opp/core.c: In function 'dev_pm_opp_set_rate': drivers/base/power/opp/core.c:560:8: warning: 'ou_volt_min' may be used uninitialized in this function [-Wmaybe-uninitialized] This has only now appeared as a result of commit 797da5598f3a ("PM / devfreq: Add COMPILE_TEST for build coverage"), which makes the driver visible in some configurations that didn't have it before. The warning is a false positive that I got with gcc-6.1.1, but there is a simple workaround in removing the local variables that we get warnings for (all three are affected depending on the configuration). This also makes the code easier to read. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/base/power/opp/core.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index df0c70963d9e..4c7c6da7a989 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -584,7 +584,6 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
584 struct clk *clk; 584 struct clk *clk;
585 unsigned long freq, old_freq; 585 unsigned long freq, old_freq;
586 unsigned long u_volt, u_volt_min, u_volt_max; 586 unsigned long u_volt, u_volt_min, u_volt_max;
587 unsigned long ou_volt, ou_volt_min, ou_volt_max;
588 int ret; 587 int ret;
589 588
590 if (unlikely(!target_freq)) { 589 if (unlikely(!target_freq)) {
@@ -620,11 +619,7 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
620 } 619 }
621 620
622 old_opp = _find_freq_ceil(opp_table, &old_freq); 621 old_opp = _find_freq_ceil(opp_table, &old_freq);
623 if (!IS_ERR(old_opp)) { 622 if (IS_ERR(old_opp)) {
624 ou_volt = old_opp->u_volt;
625 ou_volt_min = old_opp->u_volt_min;
626 ou_volt_max = old_opp->u_volt_max;
627 } else {
628 dev_err(dev, "%s: failed to find current OPP for freq %lu (%ld)\n", 623 dev_err(dev, "%s: failed to find current OPP for freq %lu (%ld)\n",
629 __func__, old_freq, PTR_ERR(old_opp)); 624 __func__, old_freq, PTR_ERR(old_opp));
630 } 625 }
@@ -683,7 +678,8 @@ restore_freq:
683restore_voltage: 678restore_voltage:
684 /* This shouldn't harm even if the voltages weren't updated earlier */ 679 /* This shouldn't harm even if the voltages weren't updated earlier */
685 if (!IS_ERR(old_opp)) 680 if (!IS_ERR(old_opp))
686 _set_opp_voltage(dev, reg, ou_volt, ou_volt_min, ou_volt_max); 681 _set_opp_voltage(dev, reg, old_opp->u_volt,
682 old_opp->u_volt_min, old_opp->u_volt_max);
687 683
688 return ret; 684 return ret;
689} 685}