[PATCH 5/5] serial: set DTR in uart for kernel serial console
Some UARTs on other side need host uart DTR is set, otherwise will not
receive char from the host that kernel is runing during kernel boot stage.
BTW:
earlyprintk and early_uart are hard coded to set DTR/RTS.
Signed-off-by: Yinghai Lu <[email protected]>
Cc: Russell King <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Bjorn Helgaas <[email protected]>
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 326020f..bec5eb5 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -2303,8 +2303,14 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
* It may be that the port was not available.
*/
if (port->type != PORT_UNKNOWN &&
- port->cons && !(port->cons->flags & CON_ENABLED))
+ port->cons && !(port->cons->flags & CON_ENABLED)) {
+ /*
+ * some uarts on other side don't support no flow control.
+ * So we set DTR in host uart to make them happy --- YHLU
+ */
+ port->mctrl |= TIOCM_DTR;
register_console(port->cons);
+ }
/*
* Ensure UPF_DEAD is not set.