Commit e9535834 authored by Mark Brown's avatar Mark Brown

regulator: Don't disable unused regulators we don't have permission for

In the spirit of conservatism that governs our general approach to
permissions it is better if we don't touch regulators we weren't explicitly
given permissions to control. This avoids the need to explicitly specify
unknown regulators in DT as always on, if a regulator is not otherwise
involved in software control it can be omitted from the DT.

Regulators explicitly given constraints in DT still need to have an always
on constraint specified as before.
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent c9eaa447
...@@ -3819,8 +3819,9 @@ static int __init regulator_init_complete(void) ...@@ -3819,8 +3819,9 @@ static int __init regulator_init_complete(void)
mutex_lock(&regulator_list_mutex); mutex_lock(&regulator_list_mutex);
/* If we have a full configuration then disable any regulators /* If we have a full configuration then disable any regulators
* which are not in use or always_on. This will become the * we have permission to change the status for and which are
* default behaviour in the future. * not in use or always_on. This is effectively the default
* for DT and ACPI as they have full constraints.
*/ */
list_for_each_entry(rdev, &regulator_list, list) { list_for_each_entry(rdev, &regulator_list, list) {
ops = rdev->desc->ops; ops = rdev->desc->ops;
...@@ -3829,6 +3830,9 @@ static int __init regulator_init_complete(void) ...@@ -3829,6 +3830,9 @@ static int __init regulator_init_complete(void)
if (c && c->always_on) if (c && c->always_on)
continue; continue;
if (c && !(c->valid_ops_mask & REGULATOR_CHANGE_STATUS))
continue;
mutex_lock(&rdev->mutex); mutex_lock(&rdev->mutex);
if (rdev->use_count) if (rdev->use_count)
......
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