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

Commit 46825f13 authored by David Collins's avatar David Collins
Browse files

regulator: add verbose error messages for invalid voltage requests



Add error messages into the regulator_check_voltage() and
regulator_check_consumers() functions which explain exactly what
is not correct about given voltage requests.  This makes
debugging regulator_set_voltage() errors easier.

Change-Id: I8b3ec8d6a78c94b436b57bd2228b8bd5c362cecd
Signed-off-by: default avatarDavid Collins <collinsd@codeaurora.org>
parent 4c40b0f7
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -267,6 +267,15 @@ static int regulator_check_voltage(struct regulator_dev *rdev,
		return -EPERM;
	}

	/* check if requested voltage range actually overlaps the constraints */
	if (*max_uV < rdev->constraints->min_uV ||
	    *min_uV > rdev->constraints->max_uV) {
		rdev_err(rdev, "requested voltage range [%d, %d] does not fit within constraints: [%d, %d]\n",
			*min_uV, *max_uV, rdev->constraints->min_uV,
			rdev->constraints->max_uV);
		return -EINVAL;
	}

	if (*max_uV > rdev->constraints->max_uV)
		*max_uV = rdev->constraints->max_uV;
	if (*min_uV < rdev->constraints->min_uV)
@@ -296,6 +305,8 @@ static int regulator_check_consumers(struct regulator_dev *rdev,
{
	struct regulator *regulator;
	struct regulator_voltage *voltage;
	int init_min_uV = *min_uV;
	int init_max_uV = *max_uV;

	list_for_each_entry(regulator, &rdev->consumer_list, list) {
		voltage = &regulator->voltage[state];
@@ -306,6 +317,12 @@ static int regulator_check_consumers(struct regulator_dev *rdev,
		if (!voltage->min_uV && !voltage->max_uV)
			continue;

		if (init_max_uV < voltage->min_uV
		    || init_min_uV > voltage->max_uV)
			rdev_err(rdev, "requested voltage range [%d, %d] does not fit within previously voted range: [%d, %d]\n",
				init_min_uV, init_max_uV, voltage->min_uV,
				voltage->max_uV);

		if (*max_uV > voltage->max_uV)
			*max_uV = voltage->max_uV;
		if (*min_uV < voltage->min_uV)