Commit f9cd0342 authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Russell King

[ARM PATCH] 2094/1: don't lose the system timer after resuming from sleep on SA11x0 and

 PXA2xx

Patch from Nicolas Pitre

Let's make sure OSCR doesn't end up to be restored with a value
past OSMR0 otherwise the system timer won't start ticking until
OSCR wraps around (aprox 17 min.

Also set OSCR _after_ OIER is restored to avoid matching when
corresponding match interrupt is masked out.

Signed-off-by: Nicolas Pitre 
parent 38dd6915
......@@ -45,7 +45,7 @@ extern void pxa_cpu_resume(void);
*/
enum { SLEEP_SAVE_START = 0,
SLEEP_SAVE_OSCR, SLEEP_SAVE_OIER,
SLEEP_SAVE_OIER,
SLEEP_SAVE_OSMR0, SLEEP_SAVE_OSMR1, SLEEP_SAVE_OSMR2, SLEEP_SAVE_OSMR3,
SLEEP_SAVE_GPLR0, SLEEP_SAVE_GPLR1, SLEEP_SAVE_GPLR2,
......@@ -78,7 +78,6 @@ static int pxa_pm_enter(u32 state)
delta = xtime.tv_sec - RCNR;
/* save vital registers */
SAVE(OSCR);
SAVE(OSMR0);
SAVE(OSMR1);
SAVE(OSMR2);
......@@ -149,9 +148,11 @@ static int pxa_pm_enter(u32 state)
RESTORE(OSMR1);
RESTORE(OSMR2);
RESTORE(OSMR3);
RESTORE(OSCR);
RESTORE(OIER);
/* OSMR0 is the system timer: make sure OSCR is sufficiently behind */
OSCR = OSMR0 - LATCH;
RESTORE(CKEN);
ICLR = 0;
......
......@@ -44,7 +44,7 @@ extern void sa1100_cpu_resume(void);
*/
enum { SLEEP_SAVE_SP = 0,
SLEEP_SAVE_OSCR, SLEEP_SAVE_OIER,
SLEEP_SAVE_OIER,
SLEEP_SAVE_OSMR0, SLEEP_SAVE_OSMR1, SLEEP_SAVE_OSMR2, SLEEP_SAVE_OSMR3,
SLEEP_SAVE_GPDR, SLEEP_SAVE_GAFR,
......@@ -69,7 +69,6 @@ static int sa11x0_pm_enter(u32 state)
gpio = GPLR;
/* save vital registers */
SAVE(OSCR);
SAVE(OSMR0);
SAVE(OSMR1);
SAVE(OSMR2);
......@@ -131,9 +130,11 @@ static int sa11x0_pm_enter(u32 state)
RESTORE(OSMR1);
RESTORE(OSMR2);
RESTORE(OSMR3);
RESTORE(OSCR);
RESTORE(OIER);
/* OSMR0 is the system timer: make sure OSCR is sufficiently behind */
OSCR = OSMR0 - LATCH;
/* restore current time */
xtime.tv_sec = RCNR + delta;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment