* [PATCH 0/3] regulator: gpio-regulator: Fixes for problems that turned up with 3.5-rc1
@ 2012-06-03 19:29 Heiko Stübner
2012-06-03 19:30 ` [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference Heiko Stübner
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Heiko Stübner @ 2012-06-03 19:29 UTC (permalink / raw)
To: Mark Brown; +Cc: Liam Girdwood, LKML, Axel Lin, Heiko Stübner
During the porting of my machine to 3.5-rc1 some glitches in the
gpio-regulator from different changes popped up.
This series fixes these.
While doing this, I noticed a possible uninitialized use of "selector" in
_regulator_do_set_voltage, where I'm not sure what the correct fix would be.
To summarize, before
if (rdev->desc->ops->list_voltage)
best_val = rdev->desc->ops->list_voltage(rdev, selector);
else
best_val = -1;
selector is set in the set_voltage callback or if the new map_voltage returns
a non-error value. If it returns an error value or the else clause is reached
selector is used uninitialized in the list_voltage and set_voltage_time_sel
call.
As written above, I'm not sure what the correct fix would be here.
Heiko Stuebner (3):
regulator: gpio-regulator: do not pass drvdata pointer as reference
regulator: gpio-regulator: Fix finding of smallest value
regulator: gpio-regulator: populate selector from set_voltage
drivers/regulator/gpio-regulator.c | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
--
1.7.2.3
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference 2012-06-03 19:29 [PATCH 0/3] regulator: gpio-regulator: Fixes for problems that turned up with 3.5-rc1 Heiko Stübner @ 2012-06-03 19:30 ` Heiko Stübner 2012-06-04 0:13 ` Axel Lin 2012-06-04 9:46 ` Mark Brown 2012-06-03 19:31 ` [PATCH 2/3] regulator: gpio-regulator: Fix finding of smallest value Heiko Stübner 2012-06-03 19:32 ` [PATCH 3/3] regulator: gpio-regulator: populate selector from set_voltage Heiko Stübner 2 siblings, 2 replies; 8+ messages in thread From: Heiko Stübner @ 2012-06-03 19:30 UTC (permalink / raw) To: Mark Brown; +Cc: Liam Girdwood, LKML, Axel Lin Commit c172708d38a4 (regulator: core: Use a struct to pass in regulator runtime configuration) added the drvdata pointer only per reference to the new config array in the gpio-regulator. Signed-off-by: Heiko Stuebner <heiko@sntech.de> --- drivers/regulator/gpio-regulator.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index 9997d7a..ebe2b5c 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c @@ -286,7 +286,7 @@ static int __devinit gpio_regulator_probe(struct platform_device *pdev) cfg.dev = &pdev->dev; cfg.init_data = config->init_data; - cfg.driver_data = &drvdata; + cfg.driver_data = drvdata; drvdata->dev = regulator_register(&drvdata->desc, &cfg); if (IS_ERR(drvdata->dev)) { -- 1.7.2.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference 2012-06-03 19:30 ` [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference Heiko Stübner @ 2012-06-04 0:13 ` Axel Lin 2012-06-04 9:46 ` Mark Brown 1 sibling, 0 replies; 8+ messages in thread From: Axel Lin @ 2012-06-04 0:13 UTC (permalink / raw) To: Heiko Stübner; +Cc: Mark Brown, Liam Girdwood, LKML 2012/6/4 Heiko Stübner <heiko@sntech.de>: > Commit c172708d38a4 (regulator: core: Use a struct to pass in > regulator runtime configuration) added the drvdata pointer > only per reference to the new config array in the gpio-regulator. > > Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Axel Lin <axel.lin@gmail.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference 2012-06-03 19:30 ` [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference Heiko Stübner 2012-06-04 0:13 ` Axel Lin @ 2012-06-04 9:46 ` Mark Brown 1 sibling, 0 replies; 8+ messages in thread From: Mark Brown @ 2012-06-04 9:46 UTC (permalink / raw) To: Heiko Stübner; +Cc: Liam Girdwood, LKML, Axel Lin [-- Attachment #1: Type: text/plain, Size: 284 bytes --] On Sun, Jun 03, 2012 at 09:30:33PM +0200, Heiko Stübner wrote: > Commit c172708d38a4 (regulator: core: Use a struct to pass in > regulator runtime configuration) added the drvdata pointer > only per reference to the new config array in the gpio-regulator. Applied all, thanks. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/3] regulator: gpio-regulator: Fix finding of smallest value 2012-06-03 19:29 [PATCH 0/3] regulator: gpio-regulator: Fixes for problems that turned up with 3.5-rc1 Heiko Stübner 2012-06-03 19:30 ` [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference Heiko Stübner @ 2012-06-03 19:31 ` Heiko Stübner 2012-06-04 0:14 ` Axel Lin 2012-06-03 19:32 ` [PATCH 3/3] regulator: gpio-regulator: populate selector from set_voltage Heiko Stübner 2 siblings, 1 reply; 8+ messages in thread From: Heiko Stübner @ 2012-06-03 19:31 UTC (permalink / raw) To: Mark Brown; +Cc: Liam Girdwood, LKML, Axel Lin Commit 4dbd8f63f07a (regulator: gpio-regulator: Set the smallest voltage/current in the specified range) forgot to set the newly introduced best_val. Therefore it stayed always at INT_MAX thus breaking the setting of the voltage. Included is also an init value for target, as warnings about a possibly uninitialised target started appearing with this fix. Signed-off-by: Heiko Stuebner <heiko@sntech.de> --- drivers/regulator/gpio-regulator.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index ebe2b5c..2c38bea 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c @@ -104,13 +104,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, best_val = INT_MAX; + int ptr, target = 0, state, best_val = INT_MAX; 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 = data->states[ptr].value; + } if (best_val == INT_MAX) return -EINVAL; -- 1.7.2.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] regulator: gpio-regulator: Fix finding of smallest value 2012-06-03 19:31 ` [PATCH 2/3] regulator: gpio-regulator: Fix finding of smallest value Heiko Stübner @ 2012-06-04 0:14 ` Axel Lin 0 siblings, 0 replies; 8+ messages in thread From: Axel Lin @ 2012-06-04 0:14 UTC (permalink / raw) To: Heiko Stübner; +Cc: Mark Brown, Liam Girdwood, LKML 2012/6/4 Heiko Stübner <heiko@sntech.de>: > Commit 4dbd8f63f07a (regulator: gpio-regulator: Set the smallest > voltage/current in the specified range) forgot to set the newly > introduced best_val. > > Therefore it stayed always at INT_MAX thus breaking the setting > of the voltage. > > Included is also an init value for target, as warnings about > a possibly uninitialised target started appearing with this fix. > > Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Axel Lin <axel.lin@gmail.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/3] regulator: gpio-regulator: populate selector from set_voltage 2012-06-03 19:29 [PATCH 0/3] regulator: gpio-regulator: Fixes for problems that turned up with 3.5-rc1 Heiko Stübner 2012-06-03 19:30 ` [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference Heiko Stübner 2012-06-03 19:31 ` [PATCH 2/3] regulator: gpio-regulator: Fix finding of smallest value Heiko Stübner @ 2012-06-03 19:32 ` Heiko Stübner 2012-06-04 0:15 ` Axel Lin 2 siblings, 1 reply; 8+ messages in thread From: Heiko Stübner @ 2012-06-03 19:32 UTC (permalink / raw) To: Mark Brown; +Cc: Liam Girdwood, LKML, Axel Lin This was missing until now and the underlying _regulator_do_set_voltage is using this value when calling list_voltage. Signed-off-by: Heiko Stuebner <heiko@sntech.de> --- drivers/regulator/gpio-regulator.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index 2c38bea..242851a 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c @@ -101,7 +101,7 @@ static int gpio_regulator_get_value(struct regulator_dev *dev) } static int gpio_regulator_set_value(struct regulator_dev *dev, - int min, int max) + int min, int max, unsigned *selector) { struct gpio_regulator_data *data = rdev_get_drvdata(dev); int ptr, target = 0, state, best_val = INT_MAX; @@ -112,6 +112,8 @@ static int gpio_regulator_set_value(struct regulator_dev *dev, data->states[ptr].value <= max) { target = data->states[ptr].gpios; best_val = data->states[ptr].value; + if (selector) + *selector = ptr; } if (best_val == INT_MAX) @@ -130,7 +132,7 @@ static int gpio_regulator_set_voltage(struct regulator_dev *dev, int min_uV, int max_uV, unsigned *selector) { - return gpio_regulator_set_value(dev, min_uV, max_uV); + return gpio_regulator_set_value(dev, min_uV, max_uV, selector); } static int gpio_regulator_list_voltage(struct regulator_dev *dev, @@ -147,7 +149,7 @@ static int gpio_regulator_list_voltage(struct regulator_dev *dev, static int gpio_regulator_set_current_limit(struct regulator_dev *dev, int min_uA, int max_uA) { - return gpio_regulator_set_value(dev, min_uA, max_uA); + return gpio_regulator_set_value(dev, min_uA, max_uA, NULL); } static struct regulator_ops gpio_regulator_voltage_ops = { -- 1.7.2.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] regulator: gpio-regulator: populate selector from set_voltage 2012-06-03 19:32 ` [PATCH 3/3] regulator: gpio-regulator: populate selector from set_voltage Heiko Stübner @ 2012-06-04 0:15 ` Axel Lin 0 siblings, 0 replies; 8+ messages in thread From: Axel Lin @ 2012-06-04 0:15 UTC (permalink / raw) To: Heiko Stübner; +Cc: Mark Brown, Liam Girdwood, LKML 2012/6/4 Heiko Stübner <heiko@sntech.de>: > This was missing until now and the underlying > _regulator_do_set_voltage is using this value when calling list_voltage. > > Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Axel Lin <axel.lin@gmail.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-06-04 9:46 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-06-03 19:29 [PATCH 0/3] regulator: gpio-regulator: Fixes for problems that turned up with 3.5-rc1 Heiko Stübner 2012-06-03 19:30 ` [PATCH 1/3] regulator: gpio-regulator: do not pass drvdata pointer as reference Heiko Stübner 2012-06-04 0:13 ` Axel Lin 2012-06-04 9:46 ` Mark Brown 2012-06-03 19:31 ` [PATCH 2/3] regulator: gpio-regulator: Fix finding of smallest value Heiko Stübner 2012-06-04 0:14 ` Axel Lin 2012-06-03 19:32 ` [PATCH 3/3] regulator: gpio-regulator: populate selector from set_voltage Heiko Stübner 2012-06-04 0:15 ` Axel Lin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.