drivers: cpuidle: lpm-levels: Fix wakeup time for suspend

During suspend, where there isn't a explicit timer requirement, suspend
driver adds a ~0ULL value to current timer value and passes it on to RPM as
the wakeup timer. However, RPM doesn't handle overflow of timer wakeups,
which could indicate that the master is requesting a wakeup in the past
and causes a crash.

Adding 1 to current wakeup times, sets the wakeup time to 0 for suspend
usecases. MPM maps a 0 wakeup time to ~0ULL which would be handled
correctly on the RPM side.

Change-Id: Ida24c83eb2f1ae94ad7168b6065db69da35c3ec9
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
Signed-off-by: Girish S Ghongdemath <girishsg@codeaurora.org>
This commit is contained in:
Mahesh Sivasubramanian 2016-04-20 14:58:45 -06:00 committed by Gerrit - the friendly Code Review server
parent 9e2d528dc4
commit 95725d4dc6

View file

@ -674,6 +674,7 @@ static int cluster_configure(struct lpm_cluster *cluster, int idx,
goto failed_set_mode;
}
us = us + 1;
do_div(us, USEC_PER_SEC/SCLK_HZ);
msm_mpm_enter_sleep(us, from_idle, cpumask);
}