Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=26c671c6b7c02bc9f9c42331e6ecbeccdf67164c
Commit:     26c671c6b7c02bc9f9c42331e6ecbeccdf67164c
Parent:     3945a567d0c1d6721994a88f58f028c27d8249d2
Author:     Uwe Kleine-König <[EMAIL PROTECTED]>
AuthorDate: Thu Jul 19 22:13:05 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Fri Jul 20 10:01:37 2007 +0100

    [ARM] 4493/1: ns9xxx: disable a non-reloading timer before ack'ing its irq
    
    The HRM states that is must be done this way ...
    
    Signed-off-by: Uwe Kleine-König <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mach-ns9xxx/irq.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-ns9xxx/irq.c b/arch/arm/mach-ns9xxx/irq.c
index cd8f836..b8c7b00 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)
 {
        u32 tc = SYS_TC(irq - IRQ_TIMER0);
 
+       /*
+        * If the timer is programmed to halt on terminal count, the
+        * timer must be disabled before clearing the interrupt.
+        */
+       if (REGGET(tc, SYS_TCx, REN) == 0) {
+               REGSET(tc, SYS_TCx, TEN, DIS);
+               SYS_TC(irq - IRQ_TIMER0) = tc;
+       }
+
        REGSET(tc, SYS_TCx, INTC, SET);
        SYS_TC(irq - IRQ_TIMER0) = tc;
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to