* [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range
@ 2012-03-22 6:08 Axel Lin
2012-03-22 9:08 ` Heiko Stübner
2012-03-22 11:50 ` Mark Brown
0 siblings, 2 replies; 4+ messages in thread
From: Axel Lin @ 2012-03-22 6:08 UTC (permalink / raw)
To: linux-kernel; +Cc: Heiko Stübner, Liam Girdwood, Mark Brown
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>
---
drivers/regulator/gpio-regulator.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c
index 42e1cb1..b728b36 100644
--- a/drivers/regulator/gpio-regulator.c
+++ b/drivers/regulator/gpio-regulator.c
@@ -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++) {
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range
2012-03-22 6:08 [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range Axel Lin
@ 2012-03-22 9:08 ` Heiko Stübner
2012-03-22 11:50 ` Mark Brown
1 sibling, 0 replies; 4+ messages in thread
From: Heiko Stübner @ 2012-03-22 9:08 UTC (permalink / raw)
To: Axel Lin; +Cc: linux-kernel, Liam Girdwood, Mark Brown
Am Donnerstag, 22. März 2012, 07:08:04 schrieb Axel Lin:
> 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>
nice addition, thanks
Acked-by: Heiko Stuebner <heiko@sntech.de>
> ---
> drivers/regulator/gpio-regulator.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/regulator/gpio-regulator.c
> b/drivers/regulator/gpio-regulator.c index 42e1cb1..b728b36 100644
> --- a/drivers/regulator/gpio-regulator.c
> +++ b/drivers/regulator/gpio-regulator.c
> @@ -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++) {
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range
2012-03-22 6:08 [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range Axel Lin
2012-03-22 9:08 ` Heiko Stübner
@ 2012-03-22 11:50 ` Mark Brown
2012-06-01 8:45 ` Yi Zhang
1 sibling, 1 reply; 4+ messages in thread
From: Mark Brown @ 2012-03-22 11:50 UTC (permalink / raw)
To: Axel Lin; +Cc: linux-kernel, Heiko Stübner, Liam Girdwood
[-- Attachment #1: Type: text/plain, Size: 251 bytes --]
On Thu, Mar 22, 2012 at 02:08:04PM +0800, Axel Lin wrote:
> 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.
Applied, thanks.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range
2012-03-22 11:50 ` Mark Brown
@ 2012-06-01 8:45 ` Yi Zhang
0 siblings, 0 replies; 4+ messages in thread
From: Yi Zhang @ 2012-06-01 8:45 UTC (permalink / raw)
To: linux-kernel
Mark Brown <broonie <at> opensource.wolfsonmicro.com> writes:
>
> On Thu, Mar 22, 2012 at 02:08:04PM +0800, Axel Lin wrote:
> > 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.
>
> Applied, thanks.
>
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)
Here seems something wrong, for best_val is always INT_MAX. From the discussion
above, maybe best_val is should be reassigned in the for loop.
It may be like as the following:
- for (ptr = 0; ptr < data->nr_states; ptr++)
+ for (ptr = 0; ptr < data->nr_states; ptr++) {
if (data->states[ptr].value < best_val &&
data->states[ptr].value >= min &&
- data->states[ptr].value <= max)
+ data->states[ptr].value <= max) {
target = data->states[ptr].gpios;
+ best_val = target;
+ }
What do you think? thanks;
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-06-01 8:55 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-22 6:08 [PATCH] regulator: gpio-regulator: Set the smallest voltage/current in the specified range Axel Lin
2012-03-22 9:08 ` Heiko Stübner
2012-03-22 11:50 ` Mark Brown
2012-06-01 8:45 ` Yi Zhang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox