Skip to content

Commit

Permalink
USB: serial: refactor generic close
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johan Hovold authored and Greg Kroah-Hartman committed May 20, 2010
1 parent ec3ee50 commit f26788d
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 21 deletions.
7 changes: 2 additions & 5 deletions drivers/usb/serial/ark3116.c
Original file line number Diff line number Diff line change
Expand Up @@ -355,14 +355,11 @@ static void ark3116_close(struct usb_serial_port *port)
/* deactivate interrupts */
ark3116_write_reg(serial, UART_IER, 0);

/* shutdown any bulk reads that might be going on */
if (serial->num_bulk_out)
usb_kill_urb(port->write_urb);
if (serial->num_bulk_in)
usb_kill_urb(port->read_urb);
usb_serial_generic_close(port);
if (serial->num_interrupt_in)
usb_kill_urb(port->interrupt_in_urb);
}

}

static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port)
Expand Down
4 changes: 1 addition & 3 deletions drivers/usb/serial/belkin_sa.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,7 @@ static void belkin_sa_close(struct usb_serial_port *port)
{
dbg("%s port %d", __func__, port->number);

/* shutdown our bulk reads and writes */
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_serial_generic_close(port);
usb_kill_urb(port->interrupt_in_urb);
} /* belkin_sa_close */

Expand Down
5 changes: 1 addition & 4 deletions drivers/usb/serial/ch341.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,10 +305,7 @@ static void ch341_close(struct usb_serial_port *port)
{
dbg("%s - port %d", __func__, port->number);

/* shutdown our urbs */
dbg("%s - shutting down urbs", __func__);
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_serial_generic_close(port);
usb_kill_urb(port->interrupt_in_urb);
}

Expand Down
5 changes: 1 addition & 4 deletions drivers/usb/serial/cp210x.c
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,7 @@ static void cp210x_close(struct usb_serial_port *port)
{
dbg("%s - port %d", __func__, port->number);

/* shutdown our urbs */
dbg("%s - shutting down urbs", __func__);
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_serial_generic_close(port);

mutex_lock(&port->serial->disc_mutex);
if (!port->serial->disconnected)
Expand Down
1 change: 1 addition & 0 deletions drivers/usb/serial/generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ void usb_serial_generic_close(struct usb_serial_port *port)
dbg("%s - port %d", __func__, port->number);
generic_cleanup(port);
}
EXPORT_SYMBOL_GPL(usb_serial_generic_close);

static int usb_serial_multi_urb_write(struct tty_struct *tty,
struct usb_serial_port *port, const unsigned char *buf, int count)
Expand Down
7 changes: 2 additions & 5 deletions drivers/usb/serial/mct_u232.c
Original file line number Diff line number Diff line change
Expand Up @@ -549,12 +549,9 @@ static void mct_u232_close(struct usb_serial_port *port)
{
dbg("%s port %d", __func__, port->number);

if (port->serial->dev) {
/* shutdown our urbs */
usb_kill_urb(port->write_urb);
usb_kill_urb(port->read_urb);
usb_serial_generic_close(port);
if (port->serial->dev)
usb_kill_urb(port->interrupt_in_urb);
}
} /* mct_u232_close */


Expand Down

0 comments on commit f26788d

Please sign in to comment.