diff options
-rw-r--r-- | drivers/regulator/core.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 37db0c96eab8..cae41f1d96da 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -684,7 +684,7 @@ static int drms_uA_update(struct regulator_dev *rdev) { struct regulator *sibling; int current_uA = 0, output_uV, input_uV, err; - unsigned int mode; + unsigned int regulator_curr_mode, mode; lockdep_assert_held_once(&rdev->mutex); @@ -745,6 +745,14 @@ static int drms_uA_update(struct regulator_dev *rdev) current_uA, input_uV, output_uV); return err; } + /* return if the same mode is requested */ + if (rdev->desc->ops->get_mode) { + regulator_curr_mode = rdev->desc->ops->get_mode(rdev); + if (regulator_curr_mode == mode) + return 0; + } else { + return 0; + } err = rdev->desc->ops->set_mode(rdev, mode); if (err < 0) |