Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2f4d4da8f82c2598b8713f4a01f360f3751d90be
Commit:     2f4d4da8f82c2598b8713f4a01f360f3751d90be
Parent:     ddc80bd781590ef6eb8ce30a0f3ac88c5599e41c
Author:     Jay Lubomirski <[EMAIL PROTECTED]>
AuthorDate: Wed Jun 27 14:10:09 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Thu Jun 28 11:38:29 2007 -0700

    serial: clear proper MPSC interrupt cause bits
    
    The interrupt clearing code in mpsc_sdma_intr_ack() mistakenly clears the
    interrupt for both controllers instead of just the one its supposed to.
    This can result in the other controller appearing to hang because its
    interrupt was effectively lost.
    
    So, don't clear the interrupt cause bits for both MPSC controllers when
    clearing the interrupt for one of them.  Just clear the one that is
    supposed to be cleared.
    
    Signed-off-by: Jay Lubomirski <[EMAIL PROTECTED]>
    Acked-by: Mark A. Greer <[EMAIL PROTECTED]>
    Cc: <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/serial/mpsc.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c
index d09f209..00924fe 100644
--- a/drivers/serial/mpsc.c
+++ b/drivers/serial/mpsc.c
@@ -503,7 +503,8 @@ mpsc_sdma_intr_ack(struct mpsc_port_info *pi)
 
        if (pi->mirror_regs)
                pi->shared_regs->SDMA_INTR_CAUSE_m = 0;
-       writel(0, pi->shared_regs->sdma_intr_base + SDMA_INTR_CAUSE);
+       writeb(0x00, pi->shared_regs->sdma_intr_base + SDMA_INTR_CAUSE +
+              pi->port.line);
        return;
 }
 
-
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