Merge "regulator: add verbose error messages for invalid voltage requests"

This commit is contained in:
qctecmdr 2019-10-02 19:16:14 -07:00 • committed by Gerrit - the friendly Code Review server
commit b5d0ace88f

View file

@ -431,6 +431,15 @@ 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)
@ -460,6 +469,8 @@ 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];
@ -470,6 +481,12 @@ 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)