diff options
author | Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> | 2007-08-07 21:08:21 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-10-12 23:43:11 +0100 |
commit | bf62e8626963d0002315facb786a8833d404e21e (patch) | |
tree | 942ee4379efec27289d8c06a28b374bd0d9181b2 /arch/arm/mach-ns9xxx/time.c | |
parent | 9f1ccefe3f74e642515ba58868cfd6924056d9a8 (diff) | |
download | kernel_samsung_aries-bf62e8626963d0002315facb786a8833d404e21e.zip kernel_samsung_aries-bf62e8626963d0002315facb786a8833d404e21e.tar.gz kernel_samsung_aries-bf62e8626963d0002315facb786a8833d404e21e.tar.bz2 |
[ARM] 4545/1: ns9xxx: simplify irq ack'ing
Now the drivers are responsible to clear the irq in the respective
device, which seems to be the normal thing to do.
So the ack'ing of the timer irq moved to time.c.
Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ns9xxx/time.c')
-rw-r--r-- | arch/arm/mach-ns9xxx/time.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/mach-ns9xxx/time.c b/arch/arm/mach-ns9xxx/time.c index b97d0c5..3327d30 100644 --- a/arch/arm/mach-ns9xxx/time.c +++ b/arch/arm/mach-ns9xxx/time.c @@ -24,10 +24,24 @@ static u32 usecs_per_tick; static irqreturn_t ns9xxx_timer_interrupt(int irq, void *dev_id) { + int timerno = irq - IRQ_TIMER0; + u32 tc; + write_seqlock(&xtime_lock); timer_tick(); write_sequnlock(&xtime_lock); + /* clear irq */ + tc = SYS_TC(timerno); + if (REGGET(tc, SYS_TCx, REN) == SYS_TCx_REN_DIS) { + REGSET(tc, SYS_TCx, TEN, DIS); + SYS_TC(timerno) = tc; + } + REGSET(tc, SYS_TCx, INTC, SET); + SYS_TC(timerno) = tc; + REGSET(tc, SYS_TCx, INTC, UNSET); + SYS_TC(timerno) = tc; + return IRQ_HANDLED; } |