diff options
Diffstat (limited to 'drivers/tty/serial/serial_core.c')
| -rw-r--r-- | drivers/tty/serial/serial_core.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index d6a58a9e072a..ff85ebd3a007 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2608,7 +2608,12 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,  			port->type = PORT_UNKNOWN;  			flags |= UART_CONFIG_TYPE;  		} +		/* Synchronize with possible boot console. */ +		if (uart_console(port)) +			console_lock();  		port->ops->config_port(port, flags); +		if (uart_console(port)) +			console_unlock();  	}  	if (port->type != PORT_UNKNOWN) { @@ -2616,6 +2621,10 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,  		uart_report_port(drv, port); +		/* Synchronize with possible boot console. */ +		if (uart_console(port)) +			console_lock(); +  		/* Power up port for set_mctrl() */  		uart_change_pm(state, UART_PM_STATE_ON); @@ -2632,6 +2641,9 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,  		uart_rs485_config(port); +		if (uart_console(port)) +			console_unlock(); +  		/*  		 * If this driver supports console, and it hasn't been  		 * successfully registered yet, try to re-register it.  | 
