Thread (35 messages) 35 messages, 5 authors, 2012-07-11
STALE5085d

[PATCH 3/3] ARM: dt: tegra: paz00: add regulators

From: marvin24@gmx.de (Marc Dietrich)
Date: 2012-06-24 12:01:58
Also in: linux-tegra

On Sunday 24 June 2012 12:03:06 Mark Brown wrote:
On Sat, Jun 23, 2012 at 06:35:01PM +0200, Marc Dietrich wrote:
quoted
quoted
The regulator configurations were all taken from the AC100 kernel used
by
quoted
quoted
the Ubuntu port, specifically:
These generally all look pretty broken...
quoted
quoted
+				regulator at 0 {
+					reg = <0>;
+					regulator-compatible = "sm0";
+					regulator-name = "+1.2vs_sm0";
+					regulator-min-microvolt = < 725000>;
+					regulator-max-microvolt = <1300000>;
Most of these ranges look suspiciously like the maximum possible
variation the regulator has, not what the board actually requires (which
is a depressingly common error, I've no idea why people seem to think
they're supposed to cut'n'paste the physical limits of the regualtor out
of the driver).  If something decides to take advantage of the variation
this could be problematic.
AFAIR we saw some instabilities with 1.2 V here, but looking back, that could 
also be related to something else. Finding these "undervolt" bugs is really 
hard to do. I indeed just copied the values from the original source ( 
http://gitorious.org/ac100/kernel/blobs/2.6.32/arch/arm/mach-
tegra/odm_kit/adaptations/pmu/tps6586x/nvodm_pmu_tps6586x.c#line136 ) and 
bumped up sm0 by 100 mV for the said stabilty reasons. 

According to the datasheet, sm0 can go up to 1.5 V if I read it correctly, so 
1.3 V is still inside the spec and not the maximum the regulator can provide.
quoted
quoted
+				regulator at 3 {
+					reg = <3>;
+					regulator-compatible = "ldo0";
+					regulator-name = "+3.3vs_ldo0";
+					regulator-min-microvolt = <1250000>;
I think the common sense was that this should also be 3.3 V as it is the
pex clock (which is not used at all on this board). I guess it doesn't
matter much. So ...

Acked-By: Marc Dietrich <marvin24@gmx.de>
quoted
+					regulator-max-microvolt = <3300000>;
This is one example, it looks like the rail needs to be fixed to 3.3V.
I think nowhere in the code a regulator (beside sm*) is programmed to some 
different value that the maximum given here (this is not the maximum the 
regulator can provide). I never understood why the kernel code always sets the 
regulator to the maximum value if no other value was specified. IMHO, there 
should be some initial value, e.g. regulator-default-microvolt, as the 
original driver (from 2.6.32 ages) did. This way the maximum value can be set 
to the hw limits, but maybe this is a bit dangerous.

Marc
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help