diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 1d79bf098ce0..b05183c432d7 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2681,6 +2681,8 @@ void serial8250_do_set_divisor(struct uart_port *port, unsigned int baud, serial_port_out(port, UART_LCR, up->lcr | UART_LCR_DLAB); serial_dl_write(up, quot); + if (port->type != PORT_16750) + serial_port_out(port, UART_LCR, up->lcr); /* reset DLAB */ #ifdef CONFIG_ARCH_ROCKCHIP serial_port_out(port, UART_MCR, up->mcr); @@ -2852,10 +2854,11 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR * is written without DLAB set, this mode will be disabled. */ - if (port->type == PORT_16750) + if (port->type == PORT_16750) { serial_port_out(port, UART_FCR, up->fcr); + serial_port_out(port, UART_LCR, up->lcr); /* reset DLAB */ + } - serial_port_out(port, UART_LCR, up->lcr); /* reset DLAB */ if (port->type != PORT_16750) { /* emulated UARTs (Lucent Venus 167x) need two steps */ if (up->fcr & UART_FCR_ENABLE_FIFO)