mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 07:31:29 +00:00
regulator: rohm-regulator: linear voltage support
The helper for obtaining HW-state based DVS voltage levels currently only works for regulators using linear-ranges. Extend support to regulators with simple linear mappings and add also proper error path if pickable-ranges regulators call this. Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
703b288f3e
commit
9cf37cec4b
@ -22,13 +22,26 @@ static int set_dvs_level(const struct regulator_desc *desc,
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* If voltage is set to 0 => disable */
|
||||
if (uv == 0) {
|
||||
if (omask)
|
||||
return regmap_update_bits(regmap, oreg, omask, 0);
|
||||
}
|
||||
/* Some setups don't allow setting own voltage but do allow enabling */
|
||||
if (!mask) {
|
||||
if (omask)
|
||||
return regmap_update_bits(regmap, oreg, omask, omask);
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
for (i = 0; i < desc->n_voltages; i++) {
|
||||
ret = regulator_desc_list_voltage_linear_range(desc, i);
|
||||
/* NOTE to next hacker - Does not support pickable ranges */
|
||||
if (desc->linear_range_selectors)
|
||||
return -EINVAL;
|
||||
if (desc->n_linear_ranges)
|
||||
ret = regulator_desc_list_voltage_linear_range(desc, i);
|
||||
else
|
||||
ret = regulator_desc_list_voltage_linear(desc, i);
|
||||
if (ret < 0)
|
||||
continue;
|
||||
if (ret == uv) {
|
||||
|
Loading…
Reference in New Issue
Block a user