diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-04 15:11:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-04 15:11:57 -0400 |
commit | eca8258be3e60c88383aa439751d3e2069b56241 (patch) | |
tree | 44d407781fd4a85423fd55ac15ff2d78bc2b9ae9 | |
parent | 1cced5015b171415169d938fb179c44fe060dc15 (diff) | |
parent | 8e4934c6d6c659e22b1b746af4196683e77ce6ca (diff) |
Merge tag 'tty-4.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial fixes from Greg KH:
"Here are 3 serial driver fixes for 4.0-rc6. They fix some reported
issues with the samsung and fsl_lpuart drivers.
All have been in linux-next for a while"
* tag 'tty-4.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
tty: serial: fsl_lpuart: clear receive flag on FIFO flush
tty: serial: fsl_lpuart: specify transmit FIFO size
serial: samsung: Clear operation mode on UART shutdown
-rw-r--r-- | drivers/tty/serial/fsl_lpuart.c | 5 | ||||
-rw-r--r-- | drivers/tty/serial/samsung.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index b1893f3f88f1..3ad1458bfeb0 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c | |||
@@ -921,6 +921,9 @@ static void lpuart_setup_watermark(struct lpuart_port *sport) | |||
921 | writeb(val | UARTPFIFO_TXFE | UARTPFIFO_RXFE, | 921 | writeb(val | UARTPFIFO_TXFE | UARTPFIFO_RXFE, |
922 | sport->port.membase + UARTPFIFO); | 922 | sport->port.membase + UARTPFIFO); |
923 | 923 | ||
924 | /* explicitly clear RDRF */ | ||
925 | readb(sport->port.membase + UARTSR1); | ||
926 | |||
924 | /* flush Tx and Rx FIFO */ | 927 | /* flush Tx and Rx FIFO */ |
925 | writeb(UARTCFIFO_TXFLUSH | UARTCFIFO_RXFLUSH, | 928 | writeb(UARTCFIFO_TXFLUSH | UARTCFIFO_RXFLUSH, |
926 | sport->port.membase + UARTCFIFO); | 929 | sport->port.membase + UARTCFIFO); |
@@ -1076,6 +1079,8 @@ static int lpuart_startup(struct uart_port *port) | |||
1076 | sport->txfifo_size = 0x1 << (((temp >> UARTPFIFO_TXSIZE_OFF) & | 1079 | sport->txfifo_size = 0x1 << (((temp >> UARTPFIFO_TXSIZE_OFF) & |
1077 | UARTPFIFO_FIFOSIZE_MASK) + 1); | 1080 | UARTPFIFO_FIFOSIZE_MASK) + 1); |
1078 | 1081 | ||
1082 | sport->port.fifosize = sport->txfifo_size; | ||
1083 | |||
1079 | sport->rxfifo_size = 0x1 << (((temp >> UARTPFIFO_RXSIZE_OFF) & | 1084 | sport->rxfifo_size = 0x1 << (((temp >> UARTPFIFO_RXSIZE_OFF) & |
1080 | UARTPFIFO_FIFOSIZE_MASK) + 1); | 1085 | UARTPFIFO_FIFOSIZE_MASK) + 1); |
1081 | 1086 | ||
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c index af821a908720..cf08876922f1 100644 --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c | |||
@@ -963,6 +963,7 @@ static void s3c24xx_serial_shutdown(struct uart_port *port) | |||
963 | free_irq(ourport->tx_irq, ourport); | 963 | free_irq(ourport->tx_irq, ourport); |
964 | tx_enabled(port) = 0; | 964 | tx_enabled(port) = 0; |
965 | ourport->tx_claimed = 0; | 965 | ourport->tx_claimed = 0; |
966 | ourport->tx_mode = 0; | ||
966 | } | 967 | } |
967 | 968 | ||
968 | if (ourport->rx_claimed) { | 969 | if (ourport->rx_claimed) { |