diff options
author | Johan Hovold <jhovold@gmail.com> | 2010-03-17 18:00:45 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-20 16:21:33 -0400 |
commit | f26788da3b342099d2b02d99ba1cb7f154d6ef7b (patch) | |
tree | 91b6af77130e5f93b9226254a651434af5d8340b | |
parent | ec3ee5086c1e1b883292eaf795b5c1b0c25bcffe (diff) |
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>
-rw-r--r-- | drivers/usb/serial/ark3116.c | 7 | ||||
-rw-r--r-- | drivers/usb/serial/belkin_sa.c | 4 | ||||
-rw-r--r-- | drivers/usb/serial/ch341.c | 5 | ||||
-rw-r--r-- | drivers/usb/serial/cp210x.c | 5 | ||||
-rw-r--r-- | drivers/usb/serial/generic.c | 1 | ||||
-rw-r--r-- | drivers/usb/serial/mct_u232.c | 7 |
6 files changed, 8 insertions, 21 deletions
diff --git a/drivers/usb/serial/ark3116.c b/drivers/usb/serial/ark3116.c index 9b66bf19f751..0ae610efa23d 100644 --- a/drivers/usb/serial/ark3116.c +++ b/drivers/usb/serial/ark3116.c | |||
@@ -355,14 +355,11 @@ static void ark3116_close(struct usb_serial_port *port) | |||
355 | /* deactivate interrupts */ | 355 | /* deactivate interrupts */ |
356 | ark3116_write_reg(serial, UART_IER, 0); | 356 | ark3116_write_reg(serial, UART_IER, 0); |
357 | 357 | ||
358 | /* shutdown any bulk reads that might be going on */ | 358 | usb_serial_generic_close(port); |
359 | if (serial->num_bulk_out) | ||
360 | usb_kill_urb(port->write_urb); | ||
361 | if (serial->num_bulk_in) | ||
362 | usb_kill_urb(port->read_urb); | ||
363 | if (serial->num_interrupt_in) | 359 | if (serial->num_interrupt_in) |
364 | usb_kill_urb(port->interrupt_in_urb); | 360 | usb_kill_urb(port->interrupt_in_urb); |
365 | } | 361 | } |
362 | |||
366 | } | 363 | } |
367 | 364 | ||
368 | static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port) | 365 | static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port) |
diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c index 1295e44e3f1c..bdab31afc37d 100644 --- a/drivers/usb/serial/belkin_sa.c +++ b/drivers/usb/serial/belkin_sa.c | |||
@@ -246,9 +246,7 @@ static void belkin_sa_close(struct usb_serial_port *port) | |||
246 | { | 246 | { |
247 | dbg("%s port %d", __func__, port->number); | 247 | dbg("%s port %d", __func__, port->number); |
248 | 248 | ||
249 | /* shutdown our bulk reads and writes */ | 249 | usb_serial_generic_close(port); |
250 | usb_kill_urb(port->write_urb); | ||
251 | usb_kill_urb(port->read_urb); | ||
252 | usb_kill_urb(port->interrupt_in_urb); | 250 | usb_kill_urb(port->interrupt_in_urb); |
253 | } /* belkin_sa_close */ | 251 | } /* belkin_sa_close */ |
254 | 252 | ||
diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c index 7e8e39818414..63f7cc45bcac 100644 --- a/drivers/usb/serial/ch341.c +++ b/drivers/usb/serial/ch341.c | |||
@@ -305,10 +305,7 @@ static void ch341_close(struct usb_serial_port *port) | |||
305 | { | 305 | { |
306 | dbg("%s - port %d", __func__, port->number); | 306 | dbg("%s - port %d", __func__, port->number); |
307 | 307 | ||
308 | /* shutdown our urbs */ | 308 | usb_serial_generic_close(port); |
309 | dbg("%s - shutting down urbs", __func__); | ||
310 | usb_kill_urb(port->write_urb); | ||
311 | usb_kill_urb(port->read_urb); | ||
312 | usb_kill_urb(port->interrupt_in_urb); | 309 | usb_kill_urb(port->interrupt_in_urb); |
313 | } | 310 | } |
314 | 311 | ||
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index 705a7e7a9746..fa4fb5e0cf12 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c | |||
@@ -422,10 +422,7 @@ static void cp210x_close(struct usb_serial_port *port) | |||
422 | { | 422 | { |
423 | dbg("%s - port %d", __func__, port->number); | 423 | dbg("%s - port %d", __func__, port->number); |
424 | 424 | ||
425 | /* shutdown our urbs */ | 425 | usb_serial_generic_close(port); |
426 | dbg("%s - shutting down urbs", __func__); | ||
427 | usb_kill_urb(port->write_urb); | ||
428 | usb_kill_urb(port->read_urb); | ||
429 | 426 | ||
430 | mutex_lock(&port->serial->disc_mutex); | 427 | mutex_lock(&port->serial->disc_mutex); |
431 | if (!port->serial->disconnected) | 428 | if (!port->serial->disconnected) |
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index 583244bd84b1..e1d245aa4a1d 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c | |||
@@ -179,6 +179,7 @@ void usb_serial_generic_close(struct usb_serial_port *port) | |||
179 | dbg("%s - port %d", __func__, port->number); | 179 | dbg("%s - port %d", __func__, port->number); |
180 | generic_cleanup(port); | 180 | generic_cleanup(port); |
181 | } | 181 | } |
182 | EXPORT_SYMBOL_GPL(usb_serial_generic_close); | ||
182 | 183 | ||
183 | static int usb_serial_multi_urb_write(struct tty_struct *tty, | 184 | static int usb_serial_multi_urb_write(struct tty_struct *tty, |
184 | struct usb_serial_port *port, const unsigned char *buf, int count) | 185 | struct usb_serial_port *port, const unsigned char *buf, int count) |
diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c index 2849f8c32015..7aa01b95b1d4 100644 --- a/drivers/usb/serial/mct_u232.c +++ b/drivers/usb/serial/mct_u232.c | |||
@@ -549,12 +549,9 @@ static void mct_u232_close(struct usb_serial_port *port) | |||
549 | { | 549 | { |
550 | dbg("%s port %d", __func__, port->number); | 550 | dbg("%s port %d", __func__, port->number); |
551 | 551 | ||
552 | if (port->serial->dev) { | 552 | usb_serial_generic_close(port); |
553 | /* shutdown our urbs */ | 553 | if (port->serial->dev) |
554 | usb_kill_urb(port->write_urb); | ||
555 | usb_kill_urb(port->read_urb); | ||
556 | usb_kill_urb(port->interrupt_in_urb); | 554 | usb_kill_urb(port->interrupt_in_urb); |
557 | } | ||
558 | } /* mct_u232_close */ | 555 | } /* mct_u232_close */ |
559 | 556 | ||
560 | 557 | ||