PM / OPP: opp-microvolt is not optional if regulators are set
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 23 May 2017 04:02:12 +0000 (09:32 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 22 Jun 2017 01:15:30 +0000 (03:15 +0200)
If dev_pm_opp_set_regulators() is called for a device and its regulators
are set in the OPP core, the OPP nodes for the device must contain the
"opp-microvolt" property, otherwise there is something wrong and we
better error out.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/power/opp/of.c

index 779428676f63c07e8f0e05982e6354d623b4a821..57eec1ca056977bef29dd73c6a2de95e6a4c8e6a 100644 (file)
@@ -131,8 +131,14 @@ static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
                prop = of_find_property(opp->np, name, NULL);
 
                /* Missing property isn't a problem, but an invalid entry is */
-               if (!prop)
-                       return 0;
+               if (!prop) {
+                       if (!opp_table->regulator_count)
+                               return 0;
+
+                       dev_err(dev, "%s: opp-microvolt missing although OPP managing regulators\n",
+                               __func__);
+                       return -EINVAL;
+               }
        }
 
        vcount = of_property_count_u32_elems(opp->np, name);