2007-05-31 21:05:35

by Yinghai Lu

[permalink] [raw]
Subject: [PATCH 5/5] serial: assert DTR for serial console devices

[PATCH 5/5] serial: assert DTR for serial console devices

Some RS-232 devices require DTR to be asserted before they can be
used. DTR is normally asserted in uart_startup() when the port is
opened. But we don't actually open serial console ports, so assert
DTR when the port is added.

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]>
Signed-off-by: Bjorn Helgaas <[email protected]>

diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 326020f..e5a3d8b 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)) {
+ /*
+ * We normally assert DTR when a port is opened, but serial
+ * console devices aren't actually opened, so do it here.
+ */
+ uart_set_mctrl(port, TIOCM_DTR);
register_console(port->cons);
+ }

/*
* Ensure UPF_DEAD is not set.