aboutsummaryrefslogtreecommitdiffstats
path: root/tty/serial-8250-don-t-delay-after-transmitter-is-ready.patch
diff options
Diffstat (limited to 'tty/serial-8250-don-t-delay-after-transmitter-is-ready.patch')
-rw-r--r--tty/serial-8250-don-t-delay-after-transmitter-is-ready.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/tty/serial-8250-don-t-delay-after-transmitter-is-ready.patch b/tty/serial-8250-don-t-delay-after-transmitter-is-ready.patch
new file mode 100644
index 00000000000000..76cc960d869b85
--- /dev/null
+++ b/tty/serial-8250-don-t-delay-after-transmitter-is-ready.patch
@@ -0,0 +1,42 @@
+From David.Daney@caviumnetworks.com Wed Oct 6 13:21:08 2010
+From: David Daney <ddaney@caviumnetworks.com>
+To: linux-serial@vger.kernel.org, gregkh@suse.de,
+ linux-kernel@vger.kernel.org
+Cc: David Daney <ddaney@caviumnetworks.com>
+Subject: serial: 8250: Don't delay after transmitter is ready.
+Date: Tue, 5 Oct 2010 11:40:07 -0700
+Message-Id: <1286304007-4715-1-git-send-email-ddaney@caviumnetworks.com>
+
+The loop in wait_for_xmitr() is delaying one extra uS after the ready
+condition has been met. Rewrite the loop to only delay if the
+transmitter is not ready.
+
+Signed-off-by: David Daney <ddaney@caviumnetworks.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/8250.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/serial/8250.c
++++ b/drivers/serial/8250.c
+@@ -1867,15 +1867,17 @@ static void wait_for_xmitr(struct uart_8
+ unsigned int status, tmout = 10000;
+
+ /* Wait up to 10ms for the character(s) to be sent. */
+- do {
++ for (;;) {
+ status = serial_in(up, UART_LSR);
+
+ up->lsr_saved_flags |= status & LSR_SAVE_FLAGS;
+
++ if ((status & bits) == bits)
++ break;
+ if (--tmout == 0)
+ break;
+ udelay(1);
+- } while ((status & bits) != bits);
++ }
+
+ /* Wait up to 1s for flow control if necessary */
+ if (up->port.flags & UPF_CONS_FLOW) {