@@ -1140,6 +1140,7 @@ static void autoconfig(struct uart_8250_port *up)
struct uart_port *port = &up->port;
unsigned long flags;
unsigned int old_capabilities;
+ unsigned int preserved_capabilities;
if (!port->iobase && !port->mapbase && !port->membase)
return;
@@ -1155,7 +1156,8 @@ static void autoconfig(struct uart_8250_port *up)
*/
uart_port_lock_irqsave(port, &flags);
- up->capabilities = 0;
+ preserved_capabilities = up->capabilities & UART_CAP_NOTEMT;
+ up->capabilities = preserved_capabilities;
up->bugs = 0;
if (!(port->flags & UPF_BUGGY_UART)) {
@@ -1266,7 +1268,7 @@ static void autoconfig(struct uart_8250_port *up)
port->fifosize = uart_config[up->port.type].fifo_size;
old_capabilities = up->capabilities;
- up->capabilities = uart_config[port->type].flags;
+ up->capabilities = uart_config[port->type].flags | preserved_capabilities;
up->tx_loadsz = uart_config[port->type].tx_loadsz;
if (port->type == PORT_UNKNOWN)