| --- a/drivers/tty/serial/8250/8250.h |
| +++ b/drivers/tty/serial/8250/8250.h |
| @@ -82,6 +82,7 @@ struct serial8250_config { |
| #define UART_CAP_MINI (1 << 17) /* Mini UART on BCM283X family lacks: |
| * STOP PARITY EPAR SPAR WLEN5 WLEN6 |
| */ |
| +#define UART_CAP_NMOD (1 << 18) /* UART doesn't do termios */ |
| |
| #define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */ |
| #define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */ |
| --- a/drivers/tty/serial/8250/8250_port.c |
| +++ b/drivers/tty/serial/8250/8250_port.c |
| @@ -291,7 +291,7 @@ static const struct serial8250_config ua |
| .tx_loadsz = 16, |
| .fcr = UART_FCR_ENABLE_FIFO | |
| UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT, |
| - .flags = UART_CAP_FIFO, |
| + .flags = UART_CAP_FIFO | UART_CAP_NMOD, |
| }, |
| [PORT_NPCM] = { |
| .name = "Nuvoton 16550", |
| @@ -2615,6 +2615,11 @@ serial8250_do_set_termios(struct uart_po |
| unsigned long flags; |
| unsigned int baud, quot, frac = 0; |
| |
| + if (up->capabilities & UART_CAP_NMOD) { |
| + termios->c_cflag = 0; |
| + return; |
| + } |
| + |
| if (up->capabilities & UART_CAP_MINI) { |
| termios->c_cflag &= ~(CSTOPB | PARENB | PARODD | CMSPAR); |
| if ((termios->c_cflag & CSIZE) == CS5 || |