summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap_twl.c
diff options
context:
space:
mode:
authorNishanth Menon <nm@ti.com>2011-05-18 07:17:31 +0200
committerKevin Hilman <khilman@ti.com>2011-09-15 21:09:36 +0200
commit366494250b60af14fbab4d94d6bb1d1b6d17f10b (patch)
tree47557a9d03cb7249dea97b430d86138bfecc2c6a /arch/arm/mach-omap2/omap_twl.c
parentOMAP4: PM: TWL6030: fix voltage conversion formula (diff)
downloadlinux-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>
Diffstat (limited to 'arch/arm/mach-omap2/omap_twl.c')
-rw-r--r--arch/arm/mach-omap2/omap_twl.c7
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;