|
@@ -375,6 +375,22 @@ static int serial_chars_in_buffer(struct tty_struct *tty)
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
+static void serial_wait_until_sent(struct tty_struct *tty, int timeout)
|
|
|
+{
|
|
|
+ struct usb_serial_port *port = tty->driver_data;
|
|
|
+ struct usb_serial *serial = port->serial;
|
|
|
+
|
|
|
+ dev_dbg(tty->dev, "%s\n", __func__);
|
|
|
+
|
|
|
+ if (!port->serial->type->wait_until_sent)
|
|
|
+ return;
|
|
|
+
|
|
|
+ mutex_lock(&serial->disc_mutex);
|
|
|
+ if (!serial->disconnected)
|
|
|
+ port->serial->type->wait_until_sent(tty, timeout);
|
|
|
+ mutex_unlock(&serial->disc_mutex);
|
|
|
+}
|
|
|
+
|
|
|
static void serial_throttle(struct tty_struct *tty)
|
|
|
{
|
|
|
struct usb_serial_port *port = tty->driver_data;
|
|
@@ -1191,6 +1207,7 @@ static const struct tty_operations serial_ops = {
|
|
|
.unthrottle = serial_unthrottle,
|
|
|
.break_ctl = serial_break,
|
|
|
.chars_in_buffer = serial_chars_in_buffer,
|
|
|
+ .wait_until_sent = serial_wait_until_sent,
|
|
|
.tiocmget = serial_tiocmget,
|
|
|
.tiocmset = serial_tiocmset,
|
|
|
.get_icount = serial_get_icount,
|