On Wed, 2013-02-13 at 18:27 +0100, Johan Hovold wrote:
> Move HUPCL handling to port shutdown so that DTR/RTS is dropped also on
> hang up.
> 
> Currently a hung up port will return immediately from
> tty_port_close_start leaving DTR/RTS unchanged.
> ---
>  drivers/tty/tty_port.c | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c
> index 57a061e..ffe3689 100644
> --- a/drivers/tty/tty_port.c
> +++ b/drivers/tty/tty_port.c
> @@ -198,11 +198,20 @@ EXPORT_SYMBOL(tty_port_tty_set);
>  
>  static void tty_port_shutdown(struct tty_port *port)
>  {
> +     struct tty_struct *tty = port->tty;
> +
>       mutex_lock(&port->mutex);
>       if (port->console)
>               goto out;
>  
>       if (test_and_clear_bit(ASYNCB_INITIALIZED, &port->flags)) {
> +             /*
> +              * Drop DTR/RTS if HUPCL is set. This causes any attached
> +              * modem to hang up the line.
> +              */
> +             if (!tty || tty->termios.c_cflag & HUPCL)
> +                     tty_port_lower_dtr_rts(port);
> +

port->ops->shutdown() requires the hardware to reset anyway, including
the DTR/RTS state.



--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to