From 1f3799f70f4f5d464143b8079dbd09c71863d7d0 Mon Sep 17 00:00:00 2001 From: Jason Wessel Date: Sun, 12 Aug 2012 07:16:43 -0500 Subject: [PATCH] --- yaml --- r: 321771 b: refs/heads/master c: 38f8eefccf3a23c4058a570fa2938a4f553cf8e0 h: refs/heads/master i: 321769: 4cbe03b8107e4c5dd930cf7a7ebff5aade65f85a 321767: 5d6087c983611bae5aa29ea137d1146e3ffceb2d v: v3 --- [refs] | 2 +- trunk/drivers/tty/serial/pmac_zilog.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index fc16a9a2b902..e07a83065e63 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 00592021010ad86d3b26bac7034034f6af145a2c +refs/heads/master: 38f8eefccf3a23c4058a570fa2938a4f553cf8e0 diff --git a/trunk/drivers/tty/serial/pmac_zilog.c b/trunk/drivers/tty/serial/pmac_zilog.c index 654755a990df..333c8d012b0e 100644 --- a/trunk/drivers/tty/serial/pmac_zilog.c +++ b/trunk/drivers/tty/serial/pmac_zilog.c @@ -1348,10 +1348,16 @@ static int pmz_verify_port(struct uart_port *port, struct serial_struct *ser) static int pmz_poll_get_char(struct uart_port *port) { struct uart_pmac_port *uap = (struct uart_pmac_port *)port; + int tries = 2; - while ((read_zsreg(uap, R0) & Rx_CH_AV) == 0) - udelay(5); - return read_zsdata(uap); + while (tries) { + if ((read_zsreg(uap, R0) & Rx_CH_AV) != 0) + return read_zsdata(uap); + if (tries--) + udelay(5); + } + + return NO_POLL_CHAR; } static void pmz_poll_put_char(struct uart_port *port, unsigned char c)