regulator: regmap helpers - support overlapping linear ranges
Don't give up voltage mapping if first range with suitable min/max uV does not provide the wanted voltage. Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
61b2e6741e
commit
e7d80b6b84
@ -321,17 +321,18 @@ int regulator_map_voltage_linear_range(struct regulator_dev *rdev,
|
|||||||
|
|
||||||
ret += range->min_sel;
|
ret += range->min_sel;
|
||||||
|
|
||||||
break;
|
/*
|
||||||
|
* Map back into a voltage to verify we're still in bounds.
|
||||||
|
* If we are not, then continue checking rest of the ranges.
|
||||||
|
*/
|
||||||
|
voltage = rdev->desc->ops->list_voltage(rdev, ret);
|
||||||
|
if (voltage >= min_uV && voltage <= max_uV)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == rdev->desc->n_linear_ranges)
|
if (i == rdev->desc->n_linear_ranges)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* Map back into a voltage to verify we're still in bounds */
|
|
||||||
voltage = rdev->desc->ops->list_voltage(rdev, ret);
|
|
||||||
if (voltage < min_uV || voltage > max_uV)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(regulator_map_voltage_linear_range);
|
EXPORT_SYMBOL_GPL(regulator_map_voltage_linear_range);
|
||||||
|
Loading…
Reference in New Issue
Block a user