提交 f26788da 编写于 作者: J Johan Hovold 提交者: Greg Kroah-Hartman

USB: serial: refactor generic close

Export usb_serial_generic_close so that drivers can easily kill the read
and write urb and make sure that the write fifo is reset.
Signed-off-by: NJohan Hovold <jhovold@gmail.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 ec3ee508
...@@ -355,14 +355,11 @@ static void ark3116_close(struct usb_serial_port *port) ...@@ -355,14 +355,11 @@ static void ark3116_close(struct usb_serial_port *port)
/* deactivate interrupts */ /* deactivate interrupts */
ark3116_write_reg(serial, UART_IER, 0); ark3116_write_reg(serial, UART_IER, 0);
/* shutdown any bulk reads that might be going on */ usb_serial_generic_close(port);
if (serial->num_bulk_out)
usb_kill_urb(port->write_urb);
if (serial->num_bulk_in)
usb_kill_urb(port->read_urb);
if (serial->num_interrupt_in) if (serial->num_interrupt_in)
usb_kill_urb(port->interrupt_in_urb); usb_kill_urb(port->interrupt_in_urb);
} }
} }
static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port) static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port)
......
...@@ -246,9 +246,7 @@ static void belkin_sa_close(struct usb_serial_port *port) ...@@ -246,9 +246,7 @@ static void belkin_sa_close(struct usb_serial_port *port)
{ {
dbg("%s port %d", __func__, port->number); dbg("%s port %d", __func__, port->number);
/* shutdown our bulk reads and writes */ usb_serial_generic_close(port);
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_kill_urb(port->interrupt_in_urb); usb_kill_urb(port->interrupt_in_urb);
} /* belkin_sa_close */ } /* belkin_sa_close */
......
...@@ -305,10 +305,7 @@ static void ch341_close(struct usb_serial_port *port) ...@@ -305,10 +305,7 @@ static void ch341_close(struct usb_serial_port *port)
{ {
dbg("%s - port %d", __func__, port->number); dbg("%s - port %d", __func__, port->number);
/* shutdown our urbs */ usb_serial_generic_close(port);
dbg("%s - shutting down urbs", __func__);
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_kill_urb(port->interrupt_in_urb); usb_kill_urb(port->interrupt_in_urb);
} }
......
...@@ -422,10 +422,7 @@ static void cp210x_close(struct usb_serial_port *port) ...@@ -422,10 +422,7 @@ static void cp210x_close(struct usb_serial_port *port)
{ {
dbg("%s - port %d", __func__, port->number); dbg("%s - port %d", __func__, port->number);
/* shutdown our urbs */ usb_serial_generic_close(port);
dbg("%s - shutting down urbs", __func__);
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
mutex_lock(&port->serial->disc_mutex); mutex_lock(&port->serial->disc_mutex);
if (!port->serial->disconnected) if (!port->serial->disconnected)
......
...@@ -179,6 +179,7 @@ void usb_serial_generic_close(struct usb_serial_port *port) ...@@ -179,6 +179,7 @@ void usb_serial_generic_close(struct usb_serial_port *port)
dbg("%s - port %d", __func__, port->number); dbg("%s - port %d", __func__, port->number);
generic_cleanup(port); generic_cleanup(port);
} }
EXPORT_SYMBOL_GPL(usb_serial_generic_close);
static int usb_serial_multi_urb_write(struct tty_struct *tty, static int usb_serial_multi_urb_write(struct tty_struct *tty,
struct usb_serial_port *port, const unsigned char *buf, int count) struct usb_serial_port *port, const unsigned char *buf, int count)
......
...@@ -549,12 +549,9 @@ static void mct_u232_close(struct usb_serial_port *port) ...@@ -549,12 +549,9 @@ static void mct_u232_close(struct usb_serial_port *port)
{ {
dbg("%s port %d", __func__, port->number); dbg("%s port %d", __func__, port->number);
if (port->serial->dev) { usb_serial_generic_close(port);
/* shutdown our urbs */ if (port->serial->dev)
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_kill_urb(port->interrupt_in_urb); usb_kill_urb(port->interrupt_in_urb);
}
} /* mct_u232_close */ } /* mct_u232_close */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册