mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-kernel@vger.kernel.org
Cc: Sonic Zhang <sonic.zhang@analog.com>,
	Mike Frysinger <vapier@gentoo.org>,
	Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH 02/25] serial: bfin_sport_uart: shorten the SPORT TX waiting loop
Date: Fri, 21 May 2010 09:51:31 -0700	[thread overview]
Message-ID: <1274460714-11277-2-git-send-email-gregkh@suse.de> (raw)
In-Reply-To: <20100521165113.GB11216@kroah.com>

From: Sonic Zhang <sonic.zhang@analog.com>

The waiting loop to stop SPORT TX from TX interrupt is too long.  This may
block the SPORT RX interrupts and cause the RX FIFO to overflow. So, do
stop sport TX only after the last char in TX FIFO is moved into the shift
register.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/serial/bfin_sport_uart.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index c88f8ad..6991c36 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -271,7 +271,13 @@ static void sport_uart_tx_chars(struct sport_uart_port *up)
 	}
 
 	if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {
-		sport_stop_tx(&up->port);
+		/* The waiting loop to stop SPORT TX from TX interrupt is
+		 * too long. This may block SPORT RX interrupts and cause
+		 * RX FIFO overflow. So, do stop sport TX only after the last
+		 * char in TX FIFO is moved into the shift register.
+		 */
+		if (SPORT_GET_STAT(up) & TXHRE)
+			sport_stop_tx(&up->port);
 		return;
 	}
 
-- 
1.7.0.3


  parent reply	other threads:[~2010-05-21 16:52 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-21 16:51 [GIT PATCH] TTY patches for 2.6.35 Greg KH
2010-05-21 16:51 ` [PATCH 01/25] serial: bfin_sport_uart: work around anomaly 05000473 (make 32bit fifo read atomic) Greg Kroah-Hartman
2010-05-21 16:51 ` Greg Kroah-Hartman [this message]
2010-05-21 16:51 ` [PATCH 03/25] serial: bfin_sport_uart: remove unused peripheral pin lists Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 04/25] serial: bfin_sport_uart: add missing mapbase initialization Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 05/25] serial: bfin_sport_uart: rename early platform driver class string Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 06/25] serial: bfin_sport_uart: add support for CTS/RTS via GPIOs Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 07/25] serial: bfin_sport_uart: protect changes to uart_port Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 08/25] serial: bfin_sport_uart: zero sport_uart_port if allocated dynamically Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 09/25] serial: bfin_sport_uart: drop useless status masks Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 10/25] serial: bfin_sport_uart: only enable SPORT TX if data is to be sent Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 11/25] serial: bfin_sport_uart: pull in bfin_sport.h for SPORT defines Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 12/25] serial: bfin_sport_uart: drop the experimental markings Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 13/25] serial: bfin_sport_uart: drop redundant cpu depends Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 14/25] serial: TTY: new ldiscs for staging Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 15/25] tty: n_gsm line discipline Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 16/25] tty: n_gsm: depends on NET Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 17/25] serial: uartlite: move from byte accesses to word accesses Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 18/25] serial: two branches the same in timbuart_set_mctrl() Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 19/25] serial: timbuart: make sure last byte is sent when port is closed Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 20/25] serial: Add driver for the Altera JTAG UART Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 21/25] serial: Add driver for the Altera UART Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 22/25] tty: fix obsolete comment on tty_insert_flip_string_fixed_flag Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 23/25] serial: bfin_sport_uart: Use resource size to fix off-by-one error Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 24/25] serial: isicomm: handle running out of slots Greg Kroah-Hartman
2010-05-21 16:51 ` [PATCH 25/25] serial: Tidy REMOTE_DEBUG Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1274460714-11277-2-git-send-email-gregkh@suse.de \
    --to=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sonic.zhang@analog.com \
    --cc=vapier@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome