diff options
Diffstat (limited to 'drivers/tty/serial/m32r_sio.c')
| -rw-r--r-- | drivers/tty/serial/m32r_sio.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/tty/serial/m32r_sio.c b/drivers/tty/serial/m32r_sio.c index 9cd9b4eba9fc..5702828fb62e 100644 --- a/drivers/tty/serial/m32r_sio.c +++ b/drivers/tty/serial/m32r_sio.c @@ -266,9 +266,11 @@ static void m32r_sio_start_tx(struct uart_port *port)  	if (!(up->ier & UART_IER_THRI)) {  		up->ier |= UART_IER_THRI;  		serial_out(up, UART_IER, up->ier); -		serial_out(up, UART_TX, xmit->buf[xmit->tail]); -		xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); -		up->port.icount.tx++; +		if (!uart_circ_empty(xmit)) { +			serial_out(up, UART_TX, xmit->buf[xmit->tail]); +			xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); +			up->port.icount.tx++; +		}  	}  	while((serial_in(up, UART_LSR) & UART_EMPTY) != UART_EMPTY);  #else @@ -737,7 +739,7 @@ static void m32r_sio_set_termios(struct uart_port *port,  	up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR;  	if (termios->c_iflag & INPCK)  		up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE; -	if (termios->c_iflag & (BRKINT | PARMRK)) +	if (termios->c_iflag & (IGNBRK | BRKINT | PARMRK))  		up->port.read_status_mask |= UART_LSR_BI;  	/*  |