[PM-WIP-OPP][PATCH v3] pm: opp: twl/tps: optimize uv to vsel function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Romit Dasgupta <romit@xxxxxx>

For integer values x and y; int div x / y causes truncation. Current
omap_twl_uv_to_vsel function implements an equivalent of ceil which
is based on an if condition to check truncation and round up. We can
do this in a more optimal manner without the if condition. The round
up is handled by adding the round off factor prior to truncation as:
(x + (y - 1)) / y

Cc: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx>
Acked-by: Nishanth Menon <nm@xxxxxx>

Signed-off-by: Romit Dasgupta <romit@xxxxxx>
---
Discussions:
v2: http://marc.info/?t=126318930800001&r=1&w=2
v1: http://marc.info/?t=126226623800006&r=1&w=2

 arch/arm/plat-omap/opp_twl_tps.c |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/arch/arm/plat-omap/opp_twl_tps.c b/arch/arm/plat-omap/opp_twl_tps.c
index e0db39b..468fb97 100644
--- a/arch/arm/plat-omap/opp_twl_tps.c
+++ b/arch/arm/plat-omap/opp_twl_tps.c
@@ -36,14 +36,6 @@ unsigned long omap_twl_vsel_to_uv(const u8 vsel)
  */
 u8 omap_twl_uv_to_vsel(unsigned long uv)
 {
-	u8 vsel;
-
-	vsel = ((uv / 100) - 6000) / 125;
-
-	/* round off to higher voltage */
-	/* XXX Surely not the best way to handle this. */
-	if (uv > omap_twl_vsel_to_uv(vsel))
-		vsel++;
-
-	return vsel;
+	/* Round up to higher voltage */
+	return (((uv + 99) / 100 - 6000) + 124) / 125;
 }
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux