]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
power: avs: cpr: Fix Duplicate OPPs warning
authorGeorgi Djakov <georgi.djakov@linaro.org>
Fri, 11 Sep 2015 13:26:31 +0000 (16:26 +0300)
committerSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Mon, 11 Jan 2016 09:55:18 +0000 (09:55 +0000)
Change the sequence to get the regulators first
and then add OPPs as regulators can defer probe
in the middle and leave us with only partially
added OPPs.

Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
drivers/power/avs/qcom-cpr.c

index fd4552f9f2f79375cf20720f4bacdaf3581cee7a..6c77b922d9954b2a3f51dfc17fb8e4dd89912803 100644 (file)
@@ -1279,14 +1279,6 @@ static int cpr_populate_opps(struct device_node *of_node, struct cpr_drv *drv,
                if (!cpu_dev)
                        return -EINVAL;
 
-               for (j = 0, corner = drv->corners; plan[j]; j++, corner++) {
-                       p = plan[j];
-                       ret = dev_pm_opp_add(cpu_dev, p->freq, corner->uV);
-                       if (ret)
-                               return ret;
-                       corner->freq = p->freq;
-               }
-
                /*
                 * Keep cpu_dev and its regulator and clock for monitoring
                 * voltage changes and updating OPPs later.
@@ -1300,6 +1292,14 @@ static int cpr_populate_opps(struct device_node *of_node, struct cpr_drv *drv,
                        if (IS_ERR(drv->cpu_clk))
                                return PTR_ERR(drv->cpu_clk);
                }
+
+               for (j = 0, corner = drv->corners; plan[j]; j++, corner++) {
+                       p = plan[j];
+                       ret = dev_pm_opp_add(cpu_dev, p->freq, corner->uV);
+                       if (ret)
+                               return ret;
+                       corner->freq = p->freq;
+               }
        }
 
        return 0;