From 94e7a450202befd7cd0d6d3dd0b013a247816071 Mon Sep 17 00:00:00 2001 From: shengfei Xu Date: Thu, 9 Jul 2020 21:20:49 +0800 Subject: [PATCH] regulator: core: check whether the regulator is being on at startup If the regulator is enabled, don't have to enable it again. Signed-off-by: shengfei Xu Change-Id: I293b9002b6373f977313b410709b0e9ad916243d --- drivers/regulator/core.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 54a05b8f6f95..44158e9b86ec 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1195,10 +1195,13 @@ static int set_machine_constraints(struct regulator_dev *rdev, * and we have control then make sure it is enabled. */ if (rdev->constraints->always_on || rdev->constraints->boot_on) { - ret = _regulator_do_enable(rdev); - if (ret < 0 && ret != -EINVAL) { - rdev_err(rdev, "failed to enable\n"); - return ret; + /* The regulator may on if it's not switchable or left on */ + if (!_regulator_is_enabled(rdev)) { + ret = _regulator_do_enable(rdev); + if (ret < 0 && ret != -EINVAL) { + rdev_err(rdev, "failed to enable\n"); + return ret; + } } }