Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c40b0f7 authored by David Collins's avatar David Collins
Browse files

regulator: Remove redundant set_mode call in drms_uA_update



The regulator framework checks if the current mode is the same as the
one being requested inside of regulator_set_mode. However, when
DRMS changing is allowed, regulator_enable calls drms_uA_update.
This function does not check the value of get_mode before calling
set_mode.

Modify drms_uA_update so that set_mode is only called if the requested
mode is different from the current mode returned by get_mode.

Change-Id: Ifb4f3069cf946e8474565ee82508c1ff45b36543
Signed-off-by: default avatarDavid Collins <collinsd@codeaurora.org>
parent 1dff8619
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -733,7 +733,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);

@@ -793,6 +793,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)