Commit 3edd79cf authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Mark Brown

regulator: Fix 'do-nothing' value for regulators without suspend state

Some regulators don't have all states defined and in such cases regulator
core should not assume anything. However in current implementation
of of_get_regulation_constraints() DO_NOTHING_IN_SUSPEND enable value was
set only for regulators which had suspend node defined, otherwise the
default 0 value was used, what means DISABLE_IN_SUSPEND. This lead to
broken system suspend/resume on boards, which had simple regulator
constraints definition (without suspend state nodes).

To avoid further mismatches between the default and uninitialized values
of the suspend enabled/disabled states, change the values of the them,
so default '0' means DO_NOTHING_IN_SUSPEND.

Fixes: 72069f99: regulator: leave one item to record whether regulator is enabled
Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
parent ef394f3f
...@@ -3161,7 +3161,7 @@ static inline int regulator_suspend_toggle(struct regulator_dev *rdev, ...@@ -3161,7 +3161,7 @@ static inline int regulator_suspend_toggle(struct regulator_dev *rdev,
if (!rstate->changeable) if (!rstate->changeable)
return -EPERM; return -EPERM;
rstate->enabled = en; rstate->enabled = (en) ? ENABLE_IN_SUSPEND : DISABLE_IN_SUSPEND;
return 0; return 0;
} }
......
...@@ -213,8 +213,6 @@ static void of_get_regulation_constraints(struct device_node *np, ...@@ -213,8 +213,6 @@ static void of_get_regulation_constraints(struct device_node *np,
else if (of_property_read_bool(suspend_np, else if (of_property_read_bool(suspend_np,
"regulator-off-in-suspend")) "regulator-off-in-suspend"))
suspend_state->enabled = DISABLE_IN_SUSPEND; suspend_state->enabled = DISABLE_IN_SUSPEND;
else
suspend_state->enabled = DO_NOTHING_IN_SUSPEND;
if (!of_property_read_u32(np, "regulator-suspend-min-microvolt", if (!of_property_read_u32(np, "regulator-suspend-min-microvolt",
&pval)) &pval))
......
...@@ -48,9 +48,9 @@ struct regulator; ...@@ -48,9 +48,9 @@ struct regulator;
* DISABLE_IN_SUSPEND - turn off regulator in suspend states * DISABLE_IN_SUSPEND - turn off regulator in suspend states
* ENABLE_IN_SUSPEND - keep regulator on in suspend states * ENABLE_IN_SUSPEND - keep regulator on in suspend states
*/ */
#define DO_NOTHING_IN_SUSPEND (-1) #define DO_NOTHING_IN_SUSPEND 0
#define DISABLE_IN_SUSPEND 0 #define DISABLE_IN_SUSPEND 1
#define ENABLE_IN_SUSPEND 1 #define ENABLE_IN_SUSPEND 2
/* Regulator active discharge flags */ /* Regulator active discharge flags */
enum regulator_active_discharge { enum regulator_active_discharge {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment