summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuresh Mangipudi <smangipudi@nvidia.com>2010-06-22 15:45:32 +0530
committerGary King <gking@nvidia.com>2010-06-22 22:47:23 -0700
commita2f6d4d0337a6c67335404c4140bab95a53d8336 (patch)
tree7c71c2b790003aac6abc5e3cf3a28c6aaa0049d3
parent67ff721112df58bedcd8afdaf8fe5292d2313d61 (diff)
[ARM/tegra]Serial:Check xmit buffer before updating xmit fifo
Checking explicitly number of available bytes in transmit buffer before writing into the transmit buffer. Removing additional checks. Bug 700035 Change-Id: Ica2a6649e9acb2e059ebf6bb08dc5eaecdad8ed7 Reviewed-on: http://git-master/r/2990 Tested-by: Suresh Mangipudi <smangipudi@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
-rwxr-xr-x[-rw-r--r--]drivers/serial/tegra_hsuart.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/serial/tegra_hsuart.c b/drivers/serial/tegra_hsuart.c
index 39a6035e9955..0f6102f7bfb0 100644..100755
--- a/drivers/serial/tegra_hsuart.c
+++ b/drivers/serial/tegra_hsuart.c
@@ -154,8 +154,12 @@ static void fill_tx_fifo(struct tegra_uart_port *t, int max_bytes)
{
int i;
struct circ_buf *xmit = &t->uport.state->xmit;
+ int count;
+ int xmit_nr;
+ count = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE);
+ xmit_nr = min_t(int, count, max_bytes);
- for (i = 0; i < max_bytes; i++) {
+ for (i = 0; i < xmit_nr; i++) {
BUG_ON(uart_circ_empty(xmit));
uart_writeb(t, xmit->buf[xmit->tail], UART_TX);
xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);