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: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
ec3ee5086c
commit
f26788da3b
@ -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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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 */
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user