summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonghwa Lee <jonghwa3.lee@samsung.com>2014-10-10 17:54:37 +0900
committerChanho Park <chanho61.park@samsung.com>2014-10-13 19:16:08 -0700
commitbfc7923da1112e6dd09f31181c6c135123d01405 (patch)
treeb9b95ac4e5d400f01bae6de2c759de5c6c8a3fc8
parentd2f21461de09012424d362a13eb7bffdc671618f (diff)
downloadlinux-3.10-bfc7923da1112e6dd09f31181c6c135123d01405.tar.gz
linux-3.10-bfc7923da1112e6dd09f31181c6c135123d01405.tar.bz2
linux-3.10-bfc7923da1112e6dd09f31181c6c135123d01405.zip
power: charger-manager: Prevent ktimer's nsecs value exceeds its size.
When charger-manager sets alarmtimer, it has used nanoseconds converted from polling period which is in milliseconds. However ktimer's nanoseconds is limited to represent as size of unsinged long type, and the previous use often exceeds its limitation. It fixes to divide target timer period into seconds part and remains in nanoseconds to prevent abnormal timer period is set. Change-Id: I7a5cad5569505c901a4822bbd7a4ad0fa149570b Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
-rw-r--r--drivers/power/charger-manager.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/power/charger-manager.c b/drivers/power/charger-manager.c
index 6e8c5fe7b10..0a258ee22b0 100644
--- a/drivers/power/charger-manager.c
+++ b/drivers/power/charger-manager.c
@@ -849,7 +849,8 @@ static bool cm_setup_timer(void)
pr_info("Charger Manager wakeup timer: %u ms\n", wakeup_ms);
now = ktime_get_boottime();
- add = ktime_set(0, wakeup_ms * NSEC_PER_MSEC);
+ add = ktime_set(wakeup_ms / MSEC_PER_SEC,
+ (wakeup_ms % MSEC_PER_SEC) * NSEC_PER_MSEC);
alarm_start(cm_timer, ktime_add(now, add));
cm_suspend_duration_ms = wakeup_ms;