diff options
author | Nishanth Menon <nm@ti.com> | 2011-05-18 07:17:31 +0200 |
---|---|---|
committer | Kevin Hilman <khilman@ti.com> | 2011-09-15 21:09:36 +0200 |
commit | 366494250b60af14fbab4d94d6bb1d1b6d17f10b (patch) | |
tree | 47557a9d03cb7249dea97b430d86138bfecc2c6a | |
parent | OMAP4: PM: TWL6030: fix voltage conversion formula (diff) | |
download | linux-366494250b60af14fbab4d94d6bb1d1b6d17f10b.tar.xz linux-366494250b60af14fbab4d94d6bb1d1b6d17f10b.zip |
OMAP4: PM: TWL6030: fix uv to voltage for >0x39
using 1.35V as a check is not correct, we know that beyond 0x39,
voltages are non linear - hence use the conversion iff uV greater
than that for 0x39. For example, with 709mV as the smps offset,
the max linear is actually 1.41V(0x39vsel)!
Signed-off-by: Nishanth Menon <nm@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/omap_twl.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_twl.c b/arch/arm/mach-omap2/omap_twl.c index a66bf6b9fb05..5def7c274f75 100644 --- a/arch/arm/mach-omap2/omap_twl.c +++ b/arch/arm/mach-omap2/omap_twl.c @@ -134,8 +134,13 @@ static u8 twl6030_uv_to_vsel(unsigned long uv) * hardcoding only for 1.35 V which is used for 1GH OPP for * OMAP4430. */ - if (uv == 1350000) + if (uv > twl6030_vsel_to_uv(0x39)) { + if (uv == 1350000) + return 0x3A; + pr_err("%s:OUT OF RANGE! non mapped vsel for %ld Vs max %ld\n", + __func__, uv, twl6030_vsel_to_uv(0x39)); return 0x3A; + } if (smps_offset & 0x8) return DIV_ROUND_UP(uv - 709000, 12660) + 1; |