[ARM] 2863/1: clarify comment in PXA2xx and SA1x00 timer code
Patch from Nicolas Pitre Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
5c53ff088c
commit
20e9126808
@@ -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)
|
|||||||
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)
|
|||||||
|
|
||||||
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 */
|
||||||
|
Reference in New Issue
Block a user