|
@@ -2118,12 +2118,18 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev,
|
|
|
ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV,
|
|
|
&selector);
|
|
|
} else if (rdev->desc->ops->set_voltage_sel) {
|
|
|
- if (rdev->desc->ops->map_voltage)
|
|
|
+ if (rdev->desc->ops->map_voltage) {
|
|
|
ret = rdev->desc->ops->map_voltage(rdev, min_uV,
|
|
|
max_uV);
|
|
|
- else
|
|
|
- ret = regulator_map_voltage_iterate(rdev, min_uV,
|
|
|
- max_uV);
|
|
|
+ } else {
|
|
|
+ if (rdev->desc->ops->list_voltage ==
|
|
|
+ regulator_list_voltage_linear)
|
|
|
+ ret = regulator_map_voltage_linear(rdev,
|
|
|
+ min_uV, max_uV);
|
|
|
+ else
|
|
|
+ ret = regulator_map_voltage_iterate(rdev,
|
|
|
+ min_uV, max_uV);
|
|
|
+ }
|
|
|
|
|
|
if (ret >= 0) {
|
|
|
selector = ret;
|