mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 01:21:28 +00:00
TTY/Serial fix for 4.20-rc8
Here is a single fix, a revert, for the 8250 serial driver to resolve a reported problem. There was some attempted patches to fix the issue, but people are arguing about them, so reverting the patch to revert back to the 4.19 and older behavior is the best thing to do at this late in the release cycle. The revert has been in linux-next with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCXBuJvA8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ylRnQCgqMf3Y5uhohSjyTgagIaV2iVY2w8AniDnYWXe cHDpt5USoLXRUSd8BJBn =xdLq -----END PGP SIGNATURE----- Merge tag 'tty-4.20-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty Pull tty/serial fix from Greg KH: "Here is a single fix, a revert, for the 8250 serial driver to resolve a reported problem. There was some attempted patches to fix the issue, but people are arguing about them, so reverting the patch to revert back to the 4.19 and older behavior is the best thing to do at this late in the release cycle. The revert has been in linux-next with no reported issues" * tag 'tty-4.20-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: Revert "serial: 8250: Fix clearing FIFOs in RS485 mode again"
This commit is contained in:
commit
bfd7bd5b49
@ -552,30 +552,11 @@ static unsigned int serial_icr_read(struct uart_8250_port *up, int offset)
|
||||
*/
|
||||
static void serial8250_clear_fifos(struct uart_8250_port *p)
|
||||
{
|
||||
unsigned char fcr;
|
||||
unsigned char clr_mask = UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT;
|
||||
|
||||
if (p->capabilities & UART_CAP_FIFO) {
|
||||
/*
|
||||
* Make sure to avoid changing FCR[7:3] and ENABLE_FIFO bits.
|
||||
* In case ENABLE_FIFO is not set, there is nothing to flush
|
||||
* so just return. Furthermore, on certain implementations of
|
||||
* the 8250 core, the FCR[7:3] bits may only be changed under
|
||||
* specific conditions and changing them if those conditions
|
||||
* are not met can have nasty side effects. One such core is
|
||||
* the 8250-omap present in TI AM335x.
|
||||
*/
|
||||
fcr = serial_in(p, UART_FCR);
|
||||
|
||||
/* FIFO is not enabled, there's nothing to clear. */
|
||||
if (!(fcr & UART_FCR_ENABLE_FIFO))
|
||||
return;
|
||||
|
||||
fcr |= clr_mask;
|
||||
serial_out(p, UART_FCR, fcr);
|
||||
|
||||
fcr &= ~clr_mask;
|
||||
serial_out(p, UART_FCR, fcr);
|
||||
serial_out(p, UART_FCR, UART_FCR_ENABLE_FIFO);
|
||||
serial_out(p, UART_FCR, UART_FCR_ENABLE_FIFO |
|
||||
UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT);
|
||||
serial_out(p, UART_FCR, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1467,7 +1448,7 @@ static void __do_stop_tx_rs485(struct uart_8250_port *p)
|
||||
* Enable previously disabled RX interrupts.
|
||||
*/
|
||||
if (!(p->port.rs485.flags & SER_RS485_RX_DURING_TX)) {
|
||||
serial8250_clear_fifos(p);
|
||||
serial8250_clear_and_reinit_fifos(p);
|
||||
|
||||
p->ier |= UART_IER_RLSI | UART_IER_RDI;
|
||||
serial_port_out(&p->port, UART_IER, p->ier);
|
||||
|
Loading…
Reference in New Issue
Block a user