Commit 20e91268 authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Russell King

[ARM] 2863/1: clarify comment in PXA2xx and SA1x00 timer code

Patch from Nicolas Pitre
Signed-off-by: default avatarNicolas Pitre <nico@cam.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 5c53ff08
...@@ -91,9 +91,10 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -91,9 +91,10 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
/* Loop until we get ahead of the free running timer. /* Loop until we get ahead of the free running timer.
* This ensures an exact clock tick count and time accuracy. * This ensures an exact clock tick count and time accuracy.
* IRQs are disabled inside the loop to ensure coherence between * Since IRQs are disabled at this point, coherence between
* lost_ticks (updated in do_timer()) and the match reg value, so we * lost_ticks(updated in do_timer()) and the match reg value is
* can use do_gettimeofday() from interrupt handlers. * ensured, hence we can use do_gettimeofday() from interrupt
* handlers.
* *
* HACK ALERT: it seems that the PXA timer regs aren't updated right * HACK ALERT: it seems that the PXA timer regs aren't updated right
* away in all cases when a write occurs. We therefore compare with * away in all cases when a write occurs. We therefore compare with
......
...@@ -70,15 +70,6 @@ static unsigned long sa1100_gettimeoffset (void) ...@@ -70,15 +70,6 @@ static unsigned long sa1100_gettimeoffset (void)
return usec; return usec;
} }
/*
* We will be entered with IRQs enabled.
*
* Loop until we get ahead of the free running timer.
* This ensures an exact clock tick count and time accuracy.
* IRQs are disabled inside the loop to ensure coherence between
* lost_ticks (updated in do_timer()) and the match reg value, so we
* can use do_gettimeofday() from interrupt handlers.
*/
static irqreturn_t static irqreturn_t
sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{ {
...@@ -86,6 +77,14 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -86,6 +77,14 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
write_seqlock(&xtime_lock); write_seqlock(&xtime_lock);
/*
* Loop until we get ahead of the free running timer.
* This ensures an exact clock tick count and time accuracy.
* Since IRQs are disabled at this point, coherence between
* lost_ticks(updated in do_timer()) and the match reg value is
* ensured, hence we can use do_gettimeofday() from interrupt
* handlers.
*/
do { do {
timer_tick(regs); timer_tick(regs);
OSSR = OSSR_M0; /* Clear match on timer 0 */ OSSR = OSSR_M0; /* Clear match on timer 0 */
......
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