Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: gpio-regulator: Set the smallest voltage/current in the specified range

Do not assume the gpio regulator states map is sorted in any order.
This patch ensures we always set the smallest voltage/current that falls within
the specified range.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

authored by

Axel Lin and committed by
Mark Brown
4dbd8f63 9d442061

+4 -4
+4 -4
drivers/regulator/gpio-regulator.c
··· 105 105 int min, int max) 106 106 { 107 107 struct gpio_regulator_data *data = rdev_get_drvdata(dev); 108 - int ptr, target, state; 108 + int ptr, target, state, best_val = INT_MAX; 109 109 110 - target = -1; 111 110 for (ptr = 0; ptr < data->nr_states; ptr++) 112 - if (data->states[ptr].value >= min && 111 + if (data->states[ptr].value < best_val && 112 + data->states[ptr].value >= min && 113 113 data->states[ptr].value <= max) 114 114 target = data->states[ptr].gpios; 115 115 116 - if (target < 0) 116 + if (best_val == INT_MAX) 117 117 return -EINVAL; 118 118 119 119 for (ptr = 0; ptr < data->nr_gpios; ptr++) {