summaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@wantstofly.org>2006-12-06 20:39:57 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-07 08:39:44 -0800
commita4ed06ad83acc3b7dafc018bc0b27469e787e27d (patch)
tree26ce210d81b77b40d08b96a5a7772f806eb43d89 /drivers/serial
parent9468f687d95d1825fd2f2c2f74e1a59429ef25d3 (diff)
downloadlinux-a4ed06ad83acc3b7dafc018bc0b27469e787e27d.tar.gz
linux-a4ed06ad83acc3b7dafc018bc0b27469e787e27d.tar.bz2
linux-a4ed06ad83acc3b7dafc018bc0b27469e787e27d.zip
[PATCH] amba-pl010: clear error flags on rx error
The pl010 primecell documentation specifies that an error indicated via RSR should be cleared by a write to ECR. We didn't do this, which was causing errors to be re-reported on every call to pl010_rx_chars(). Doing a write to ECR once we detect an error appears to prevent the ep93xx console UART driver from going into a mode where it reports "ttyAM0: X input overrun(s)" every couple of keystrokes. Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/amba-pl010.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c
index 4213fabc62bf..4d3626ef4643 100644
--- a/drivers/serial/amba-pl010.c
+++ b/drivers/serial/amba-pl010.c
@@ -129,6 +129,8 @@ static void pl010_rx_chars(struct uart_port *port)
*/
rsr = readb(port->membase + UART01x_RSR) | UART_DUMMY_RSR_RX;
if (unlikely(rsr & UART01x_RSR_ANY)) {
+ writel(0, port->membase + UART01x_ECR);
+
if (rsr & UART01x_RSR_BE) {
rsr &= ~(UART01x_RSR_FE | UART01x_RSR_PE);
port->icount.brk++;