Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18e60077 authored by Viresh Kumar's avatar Viresh Kumar Committed by Alex Shi
Browse files

PM / OPP: of_property_count_u32_elems() can return errors



of_property_count_u32_elems() will never return 0, but a -ve error value
of a positive count. And so the current !count check is wrong.

Also, a missing "opp-microvolt" property isn't a problem and so we need
to do of_find_property() separately to confirm that.

Fixes: 274659029c9d (PM / OPP: Add support to parse "operating-points-v2" bindings)
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
(cherry picked from commit 680168a58a9315e1301f4ebb062244470d4919b0)
Signed-off-by: default avatarAlex Shi <alex.shi@linaro.org>
parent b7f73962
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -894,10 +894,17 @@ static int opp_get_microvolt(struct dev_pm_opp *opp, struct device *dev)
	u32 microvolt[3] = {0};
	int count, ret;

	count = of_property_count_u32_elems(opp->np, "opp-microvolt");
	if (!count)
	/* Missing property isn't a problem, but an invalid entry is */
	if (!of_find_property(opp->np, "opp-microvolt", NULL))
		return 0;

	count = of_property_count_u32_elems(opp->np, "opp-microvolt");
	if (count < 0) {
		dev_err(dev, "%s: Invalid opp-microvolt property (%d)\n",
			__func__, count);
		return count;
	}

	/* There can be one or three elements here */
	if (count != 1 && count != 3) {
		dev_err(dev, "%s: Invalid number of elements in opp-microvolt property (%d)\n",