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>
This commit is contained in:
		
					parent
					
						
							
								9d442061da
							
						
					
				
			
			
				commit
				
					
						4dbd8f63f0
					
				
			
		
					 1 changed files with 4 additions and 4 deletions
				
			
		|  | @ -105,15 +105,15 @@ static int gpio_regulator_set_value(struct regulator_dev *dev, | |||
| 					int min, int max) | ||||
| { | ||||
| 	struct gpio_regulator_data *data = rdev_get_drvdata(dev); | ||||
| 	int ptr, target, state; | ||||
| 	int ptr, target, state, best_val = INT_MAX; | ||||
| 
 | ||||
| 	target = -1; | ||||
| 	for (ptr = 0; ptr < data->nr_states; ptr++) | ||||
| 		if (data->states[ptr].value >= min && | ||||
| 		if (data->states[ptr].value < best_val && | ||||
| 		    data->states[ptr].value >= min && | ||||
| 		    data->states[ptr].value <= max) | ||||
| 			target = data->states[ptr].gpios; | ||||
| 
 | ||||
| 	if (target < 0) | ||||
| 	if (best_val == INT_MAX) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	for (ptr = 0; ptr < data->nr_gpios; ptr++) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Axel Lin
				Axel Lin