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

Commit b88dc6d8 authored by David Collins's avatar David Collins Committed by Gerrit - the friendly Code Review server
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 830a91c1
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -224,6 +224,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)
@@ -245,6 +254,8 @@ static int regulator_check_consumers(struct regulator_dev *rdev,
				     int *min_uV, int *max_uV)
{
	struct regulator *regulator;
	int init_min_uV = *min_uV;
	int init_max_uV = *max_uV;

	list_for_each_entry(regulator, &rdev->consumer_list, list) {
		/*
@@ -254,6 +265,12 @@ static int regulator_check_consumers(struct regulator_dev *rdev,
		if (!regulator->min_uV && !regulator->max_uV)
			continue;

		if (init_max_uV < regulator->min_uV
		    || init_min_uV > regulator->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, regulator->min_uV,
				regulator->max_uV);

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