regulator: core: don't disable regulator if is_enabled return error.
authorPi-Hsun Shih <pihsun@chromium.org>
Fri, 6 Nov 2020 06:48:17 +0000 (14:48 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 10 Nov 2020 17:27:42 +0000 (17:27 +0000)
In regulator_late_cleanup when is_enabled failed, don't try to disable
the regulator since it would likely to fail too and causing confusing
error messages.

Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
Link: https://lore.kernel.org/r/20201106064817.3290927-1-pihsun@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/core.c

index a5ad553da8cd4972f963a46deab46401e3d5f2cf..70168f2a53ed775aa11996af7ee70ba552b8327e 100644 (file)
@@ -5843,13 +5843,14 @@ static int regulator_late_cleanup(struct device *dev, void *data)
        if (rdev->use_count)
                goto unlock;
 
-       /* If we can't read the status assume it's on. */
+       /* If we can't read the status assume it's always on. */
        if (ops->is_enabled)
                enabled = ops->is_enabled(rdev);
        else
                enabled = 1;
 
-       if (!enabled)
+       /* But if reading the status failed, assume that it's off. */
+       if (enabled <= 0)
                goto unlock;
 
        if (have_full_constraints()) {