linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] regulator: Set apply_uV only when min and max voltages are defined
@ 2012-01-25  9:31 Karol Lewandowski
  2012-01-25 10:15 ` Karol Lewandowski
  2012-01-25 11:39 ` Mark Brown
  0 siblings, 2 replies; 5+ messages in thread
From: Karol Lewandowski @ 2012-01-25  9:31 UTC (permalink / raw)
  To: broonie
  Cc: linux-kernel, m.szyprowski, s.nawrocki, lrg, Karol Lewandowski,
	Kyungmin Park, Thomas Abraham

apply_uV is errornously set when regulator is instantiated from device
tree, even when it doesn't contain any voltage constraints.

This commit fixes error:

  machine_constraints_voltage: CHARGER: failed to apply 0uV constraint

for following regulator description in DTS:

  CHARGER {
	regulator-min-microamp = <100000>;
	regulator-max-microamp = <200000>;
  }

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
---
 drivers/regulator/of_regulator.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/regulator/of_regulator.c b/drivers/regulator/of_regulator.c
index f1651eb..679734d 100644
--- a/drivers/regulator/of_regulator.c
+++ b/drivers/regulator/of_regulator.c
@@ -35,7 +35,7 @@ static void of_get_regulation_constraints(struct device_node *np,
 	if (constraints->min_uV != constraints->max_uV)
 		constraints->valid_ops_mask |= REGULATOR_CHANGE_VOLTAGE;
 	/* Only one voltage?  Then make sure it's set. */
-	if (constraints->min_uV == constraints->max_uV)
+	if (min_uV && max_uV && constraints->min_uV == constraints->max_uV)
 		constraints->apply_uV = true;
 
 	uV_offset = of_get_property(np, "regulator-microvolt-offset", NULL);
-- 
1.7.8.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] regulator: Set apply_uV only when min and max voltages are defined
  2012-01-25  9:31 [PATCH] regulator: Set apply_uV only when min and max voltages are defined Karol Lewandowski
@ 2012-01-25 10:15 ` Karol Lewandowski
  2012-01-25 10:33   ` Karol Lewandowski
  2012-01-25 11:22   ` Mark Brown
  2012-01-25 11:39 ` Mark Brown
  1 sibling, 2 replies; 5+ messages in thread
From: Karol Lewandowski @ 2012-01-25 10:15 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: broonie, linux-kernel, m.szyprowski, s.nawrocki, lrg,
	Kyungmin Park, Thomas Abraham

On 25.01.2012 10:31, Karol Lewandowski wrote:
> apply_uV is errornously set when regulator is instantiated from device
> tree, even when it doesn't contain any voltage constraints.
...
> -	if (constraints->min_uV == constraints->max_uV)
> +	if (min_uV&&  max_uV&&  constraints->min_uV == constraints->max_uV)
>   		constraints->apply_uV = true;

While this fixes obvious error I doubt that apply_uV should be set based 
on min max equality. It have required fix to fixed regulator[1]
as well for max8997[2].  It'll probably require fixes in other places too.

Wouldn't it be better to explicitly use property like 
"regulator-voltage-apply" in DT to set apply_uV?

   if (min_uV && max_uV && constraints->min_uV == constraints->max_uV
       && of_find_property "regulator-voltage-apply")
          constraints->apply_uV = true;

This would be consistent with handling of this flag from platform data.

[1] http://permalink.gmane.org/gmane.linux.kernel/1234969
[2] http://permalink.gmane.org/gmane.linux.kernel/1243714

Regards,
-- 
Karol Lewandowski | Samsung Poland R&D Center | Linux/Platform

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] regulator: Set apply_uV only when min and max voltages are defined
  2012-01-25 10:15 ` Karol Lewandowski
@ 2012-01-25 10:33   ` Karol Lewandowski
  2012-01-25 11:22   ` Mark Brown
  1 sibling, 0 replies; 5+ messages in thread
From: Karol Lewandowski @ 2012-01-25 10:33 UTC (permalink / raw)
  To: linux-kernel
  Cc: Karol Lewandowski, broonie, m.szyprowski, s.nawrocki, lrg,
	Kyungmin Park, Thomas Abraham, Rajendra Nayak

Cc added, link to original posting: https://lkml.org/lkml/2012/1/25/62

On 25.01.2012 11:15, Karol Lewandowski wrote:
> On 25.01.2012 10:31, Karol Lewandowski wrote:
>> apply_uV is errornously set when regulator is instantiated from device
>> tree, even when it doesn't contain any voltage constraints.
> ...
>> - if (constraints->min_uV == constraints->max_uV)
>> + if (min_uV&& max_uV&& constraints->min_uV == constraints->max_uV)
>> constraints->apply_uV = true;
>
> While this fixes obvious error I doubt that apply_uV should be set based
> on min max equality. It have required fix to fixed regulator[1]
> as well for max8997[2]. It'll probably require fixes in other places too.
>
> Wouldn't it be better to explicitly use property like
> "regulator-voltage-apply" in DT to set apply_uV?
>
> if (min_uV && max_uV && constraints->min_uV == constraints->max_uV
> && of_find_property "regulator-voltage-apply")
> constraints->apply_uV = true;
>
> This would be consistent with handling of this flag from platform data.
>
> [1] http://permalink.gmane.org/gmane.linux.kernel/1234969
> [2] http://permalink.gmane.org/gmane.linux.kernel/1243714
>
> Regards,


-- 
Karol Lewandowski | Samsung Poland R&D Center | Linux/Platform

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] regulator: Set apply_uV only when min and max voltages are defined
  2012-01-25 10:15 ` Karol Lewandowski
  2012-01-25 10:33   ` Karol Lewandowski
@ 2012-01-25 11:22   ` Mark Brown
  1 sibling, 0 replies; 5+ messages in thread
From: Mark Brown @ 2012-01-25 11:22 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-kernel, m.szyprowski, s.nawrocki, lrg, Kyungmin Park,
	Thomas Abraham

On Wed, Jan 25, 2012 at 11:15:12AM +0100, Karol Lewandowski wrote:
> On 25.01.2012 10:31, Karol Lewandowski wrote:

> >apply_uV is errornously set when regulator is instantiated from device
> >tree, even when it doesn't contain any voltage constraints.

> While this fixes obvious error I doubt that apply_uV should be set
> based on min max equality. It have required fix to fixed
> regulator[1]

No, I think this is fine.  The only reason the fixed voltage regulator
required anything was that it overloads the constraint voltage values to
specify the voltage which we probably shouldn't have done in the first
place.  If the device is can't change voltages specifying a voltage
range for changes is silly.

> as well for max8997[2].  It'll probably require fixes in other places too.

The big problem there seems like specifying voltages in the first place,
if we know what device it is we should already know what's going on.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] regulator: Set apply_uV only when min and max voltages are defined
  2012-01-25  9:31 [PATCH] regulator: Set apply_uV only when min and max voltages are defined Karol Lewandowski
  2012-01-25 10:15 ` Karol Lewandowski
@ 2012-01-25 11:39 ` Mark Brown
  1 sibling, 0 replies; 5+ messages in thread
From: Mark Brown @ 2012-01-25 11:39 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-kernel, m.szyprowski, s.nawrocki, lrg, Kyungmin Park,
	Thomas Abraham

[-- Attachment #1: Type: text/plain, Size: 441 bytes --]

On Wed, Jan 25, 2012 at 10:31:45AM +0100, Karol Lewandowski wrote:
> apply_uV is errornously set when regulator is instantiated from device
> tree, even when it doesn't contain any voltage constraints.

Applied, thanks.  But really

> -	if (constraints->min_uV == constraints->max_uV)
> +	if (min_uV && max_uV && constraints->min_uV == constraints->max_uV)

we only actually need to check one of min_uV and max_uV due to the
equality check.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-01-25 11:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-25  9:31 [PATCH] regulator: Set apply_uV only when min and max voltages are defined Karol Lewandowski
2012-01-25 10:15 ` Karol Lewandowski
2012-01-25 10:33   ` Karol Lewandowski
2012-01-25 11:22   ` Mark Brown
2012-01-25 11:39 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).