aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/serial/sunsu.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 0cc879eb1c02..5959e6755a81 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -269,7 +269,10 @@ static void sunsu_stop_tx(struct uart_port *port)
269 269
270 __stop_tx(up); 270 __stop_tx(up);
271 271
272 if (up->port.type == PORT_16C950 && tty_stop /*FIXME*/) { 272 /*
273 * We really want to stop the transmitter from sending.
274 */
275 if (up->port.type == PORT_16C950) {
273 up->acr |= UART_ACR_TXDIS; 276 up->acr |= UART_ACR_TXDIS;
274 serial_icr_write(up, UART_ACR, up->acr); 277 serial_icr_write(up, UART_ACR, up->acr);
275 } 278 }
@@ -283,10 +286,11 @@ static void sunsu_start_tx(struct uart_port *port)
283 up->ier |= UART_IER_THRI; 286 up->ier |= UART_IER_THRI;
284 serial_out(up, UART_IER, up->ier); 287 serial_out(up, UART_IER, up->ier);
285 } 288 }
289
286 /* 290 /*
287 * We only do this from uart_start 291 * Re-enable the transmitter if we disabled it.
288 */ 292 */
289 if (tty_start && up->port.type == PORT_16C950 /*FIXME*/) { 293 if (up->port.type == PORT_16C950 && up->acr & UART_ACR_TXDIS) {
290 up->acr &= ~UART_ACR_TXDIS; 294 up->acr &= ~UART_ACR_TXDIS;
291 serial_icr_write(up, UART_ACR, up->acr); 295 serial_icr_write(up, UART_ACR, up->acr);
292 } 296 }