diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-22 14:22:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-22 14:22:59 -0400 |
commit | 7578634990fb47cc30083fbd812689aa6deacfc0 (patch) | |
tree | f493860658579d9572a19b3a41fcea2de035e49f /arch/arm/mach-ns9xxx/irq.c | |
parent | d7f5e3df3574c6e38b99f5fe22f15540b2b9811d (diff) | |
parent | 5957a4eb284dd6f522b248b674792416466555b2 (diff) |
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (60 commits)
[ARM] 4524/1: S3C: Move register out of include/asm-arm/arch-s3c2410
[ARM] 4523/1: S3C: Remove FIFO_MAX from uncompression headers
[ARM] 4522/1: S3C: split include/asm-arm/arch/memory.h
[ARM] 4521/2: S3C: Reorganise VA mapping headers
[ARM] 4520/1: S3C: Remove old VA values from static map
[ARM] 4519/1: S3C: split S3C2400 values out of S3C24XX map.h
[ARM] 4518/1: S3C: Rename watchdog configuration options
[ARM] 4517/1: S3C: Fix debug macros for ARM926 output
[ARM] 4516/1: S3C: Fix uncompressor serial output for ARM926
[ARM] 4515/1: S3C: Move uncompress code to plat-s3c
[ARM] 4514/1: S3C: Rename DEBUG_S3C2410_PORT and DEBUG_S3C_UART
[ARM] 4513/1: S3C: Rename CONFIG_S3C2410_LOWLEVEL_UART_PORT
[ARM] 4512/1: S3C: rename the debug macros for per-cpu updates
[ARM] 4511/1: S3C: updated LLSERIAL Kconfig defines for CPU support
[ARM] 4510/1: S3C: split debug-macro support into plat-s3c
[ARM] 4509/1: S3C: Create initial arch/arm/plat-s3c
[ARM] 4508/1: S3C: Move items to include/asm-arm/plat-s3c
[ARM] 4461/1: MXC platform and i.MX31ADS core support
[ARM] 4507/1: pxa2xx clock_event_device
[ARM] 4497/1: Only allow safe cache configurations on ARMv6 and later
...
Diffstat (limited to 'arch/arm/mach-ns9xxx/irq.c')
-rw-r--r-- | arch/arm/mach-ns9xxx/irq.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-ns9xxx/irq.c b/arch/arm/mach-ns9xxx/irq.c index 83d92724a971..b8c7b00522e6 100644 --- a/arch/arm/mach-ns9xxx/irq.c +++ b/arch/arm/mach-ns9xxx/irq.c | |||
@@ -21,6 +21,15 @@ static void ns9xxx_ack_irq_timer(unsigned int irq) | |||
21 | { | 21 | { |
22 | u32 tc = SYS_TC(irq - IRQ_TIMER0); | 22 | u32 tc = SYS_TC(irq - IRQ_TIMER0); |
23 | 23 | ||
24 | /* | ||
25 | * If the timer is programmed to halt on terminal count, the | ||
26 | * timer must be disabled before clearing the interrupt. | ||
27 | */ | ||
28 | if (REGGET(tc, SYS_TCx, REN) == 0) { | ||
29 | REGSET(tc, SYS_TCx, TEN, DIS); | ||
30 | SYS_TC(irq - IRQ_TIMER0) = tc; | ||
31 | } | ||
32 | |||
24 | REGSET(tc, SYS_TCx, INTC, SET); | 33 | REGSET(tc, SYS_TCx, INTC, SET); |
25 | SYS_TC(irq - IRQ_TIMER0) = tc; | 34 | SYS_TC(irq - IRQ_TIMER0) = tc; |
26 | 35 | ||
@@ -28,7 +37,7 @@ static void ns9xxx_ack_irq_timer(unsigned int irq) | |||
28 | SYS_TC(irq - IRQ_TIMER0) = tc; | 37 | SYS_TC(irq - IRQ_TIMER0) = tc; |
29 | } | 38 | } |
30 | 39 | ||
31 | void (*ns9xxx_ack_irq_functions[NR_IRQS])(unsigned int) = { | 40 | static void (*ns9xxx_ack_irq_functions[NR_IRQS])(unsigned int) = { |
32 | [IRQ_TIMER0] = ns9xxx_ack_irq_timer, | 41 | [IRQ_TIMER0] = ns9xxx_ack_irq_timer, |
33 | [IRQ_TIMER1] = ns9xxx_ack_irq_timer, | 42 | [IRQ_TIMER1] = ns9xxx_ack_irq_timer, |
34 | [IRQ_TIMER2] = ns9xxx_ack_irq_timer, | 43 | [IRQ_TIMER2] = ns9xxx_ack_irq_timer, |