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.patch | 42 |
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) { |
