USB: serial: set drain delay at port probe

The port drain delay is constant and should be set at port probe rather
than open.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Johan Hovold 2013-06-26 16:47:23 +02:00 committed by Greg Kroah-Hartman
parent f5f4530451
commit d7be622111
7 changed files with 15 additions and 10 deletions

View File

@ -495,6 +495,8 @@ static int cypress_generic_port_probe(struct usb_serial_port *port)
} }
usb_set_serial_port_data(port, priv); usb_set_serial_port_data(port, priv);
port->port.drain_delay = 256;
return 0; return 0;
} }
@ -625,7 +627,7 @@ static int cypress_open(struct tty_struct *tty, struct usb_serial_port *port)
__func__, result); __func__, result);
cypress_set_dead(port); cypress_set_dead(port);
} }
port->port.drain_delay = 256;
return result; return result;
} /* cypress_open */ } /* cypress_open */

View File

@ -207,7 +207,6 @@ static int f81232_open(struct tty_struct *tty, struct usb_serial_port *port)
return result; return result;
} }
port->port.drain_delay = 256;
return 0; return 0;
} }
@ -322,6 +321,8 @@ static int f81232_port_probe(struct usb_serial_port *port)
usb_set_serial_port_data(port, priv); usb_set_serial_port_data(port, priv);
port->port.drain_delay = 256;
return 0; return 0;
} }

View File

@ -1872,8 +1872,6 @@ static int edge_open(struct tty_struct *tty, struct usb_serial_port *port)
++edge_serial->num_ports_open; ++edge_serial->num_ports_open;
port->port.drain_delay = 1;
goto release_es_lock; goto release_es_lock;
unlink_int_urb: unlink_int_urb:
@ -2473,6 +2471,7 @@ static int edge_port_probe(struct usb_serial_port *port)
} }
port->port.closing_wait = msecs_to_jiffies(closing_wait * 10); port->port.closing_wait = msecs_to_jiffies(closing_wait * 10);
port->port.drain_delay = 1;
return 0; return 0;
} }

View File

@ -343,6 +343,8 @@ static int oti6858_port_probe(struct usb_serial_port *port)
usb_set_serial_port_data(port, priv); usb_set_serial_port_data(port, priv);
port->port.drain_delay = 256; /* FIXME: check the FIFO length */
return 0; return 0;
} }
@ -558,7 +560,7 @@ static int oti6858_open(struct tty_struct *tty, struct usb_serial_port *port)
/* setup termios */ /* setup termios */
if (tty) if (tty)
oti6858_set_termios(tty, port, &tmp_termios); oti6858_set_termios(tty, port, &tmp_termios);
port->port.drain_delay = 256; /* FIXME: check the FIFO length */
return 0; return 0;
} }

View File

@ -235,6 +235,8 @@ static int pl2303_port_probe(struct usb_serial_port *port)
usb_set_serial_port_data(port, priv); usb_set_serial_port_data(port, priv);
port->port.drain_delay = 256;
return 0; return 0;
} }
@ -521,7 +523,6 @@ static int pl2303_open(struct tty_struct *tty, struct usb_serial_port *port)
return result; return result;
} }
port->port.drain_delay = 256;
return 0; return 0;
} }

View File

@ -169,6 +169,8 @@ static int spcp8x5_port_probe(struct usb_serial_port *port)
usb_set_serial_port_data(port, priv); usb_set_serial_port_data(port, priv);
port->port.drain_delay = 256;
return 0; return 0;
} }
@ -411,8 +413,6 @@ static int spcp8x5_open(struct tty_struct *tty, struct usb_serial_port *port)
if (tty) if (tty)
spcp8x5_set_termios(tty, port, NULL); spcp8x5_set_termios(tty, port, NULL);
port->port.drain_delay = 256;
return usb_serial_generic_open(tty, port); return usb_serial_generic_open(tty, port);
} }

View File

@ -441,6 +441,8 @@ static int ti_port_probe(struct usb_serial_port *port)
usb_set_serial_port_data(port, tport); usb_set_serial_port_data(port, tport);
port->port.drain_delay = 3;
return 0; return 0;
} }
@ -582,8 +584,6 @@ static int ti_open(struct tty_struct *tty, struct usb_serial_port *port)
tport->tp_is_open = 1; tport->tp_is_open = 1;
++tdev->td_open_port_count; ++tdev->td_open_port_count;
port->port.drain_delay = 3;
goto release_lock; goto release_lock;
unlink_int_urb: unlink_int_urb: