8345e2abaab91f139848ce3cb5b68b5063be7b56
[openwrt/svn-archive/archive.git] / target / linux / brcm63xx / patches-2.6.25 / 070-bcm963xx_fix_uart_isr.patch
1 From 7bc3950017d2c54883591367723b7fd84cc65d6f Mon Sep 17 00:00:00 2001
2 From: Axel Gembe <ago@bastart.eu.org>
3 Date: Sun, 18 May 2008 12:09:14 +0200
4 Subject: [PATCH] bcm963xx: fix uart isr
5
6 The ISR ended up in an endless loop because the TX ISR never got used or masked.
7 This patch basically makes the TX ISR mask the the TX interrupt when it
8 encounters it, because it doesn't even use the TX interrupt.
9
10 Signed-off-by: Axel Gembe <ago@bastart.eu.org>
11 ---
12 drivers/serial/bcm63xx_cons.c | 6 ++++++
13 1 files changed, 6 insertions(+), 0 deletions(-)
14
15 diff --git a/drivers/serial/bcm63xx_cons.c b/drivers/serial/bcm63xx_cons.c
16 index 2302ea6..c60b8f0 100644
17 --- a/drivers/serial/bcm63xx_cons.c
18 +++ b/drivers/serial/bcm63xx_cons.c
19 @@ -258,8 +258,14 @@ static void bcm_interrupt(int irq, void *dev, struct pt_regs *regs)
20 while (intStat) {
21 if (intStat & RXINT)
22 receive_chars(info);
23 +
24 +#if 0 /* This code is total bullshit, TXINT doesn't get masked anywhere, so this will give an endless loop */
25 +
26 else if (intStat & TXINT)
27 info->port->intStatus = TXINT;
28 +
29 +#endif /* 0 */
30 +
31 else /* don't know what it was, so let's mask it */
32 info->port->intMask &= ~intStat;
33
34 --
35 1.5.5.1
36