diff options
Diffstat (limited to 'drivers/usb/serial/kl5kusb105.c')
-rw-r--r-- | drivers/usb/serial/kl5kusb105.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c index 769d910ae0a5..1b4054fe52a5 100644 --- a/drivers/usb/serial/kl5kusb105.c +++ b/drivers/usb/serial/kl5kusb105.c | |||
@@ -341,28 +341,20 @@ static void klsi_105_close(struct usb_serial_port *port) | |||
341 | { | 341 | { |
342 | int rc; | 342 | int rc; |
343 | 343 | ||
344 | mutex_lock(&port->serial->disc_mutex); | 344 | /* send READ_OFF */ |
345 | if (!port->serial->disconnected) { | 345 | rc = usb_control_msg(port->serial->dev, |
346 | /* send READ_OFF */ | 346 | usb_sndctrlpipe(port->serial->dev, 0), |
347 | rc = usb_control_msg(port->serial->dev, | 347 | KL5KUSB105A_SIO_CONFIGURE, |
348 | usb_sndctrlpipe(port->serial->dev, 0), | 348 | USB_TYPE_VENDOR | USB_DIR_OUT, |
349 | KL5KUSB105A_SIO_CONFIGURE, | 349 | KL5KUSB105A_SIO_CONFIGURE_READ_OFF, |
350 | USB_TYPE_VENDOR | USB_DIR_OUT, | 350 | 0, /* index */ |
351 | KL5KUSB105A_SIO_CONFIGURE_READ_OFF, | 351 | NULL, 0, |
352 | 0, /* index */ | 352 | KLSI_TIMEOUT); |
353 | NULL, 0, | 353 | if (rc < 0) |
354 | KLSI_TIMEOUT); | 354 | dev_err(&port->dev, "failed to disable read: %d\n", rc); |
355 | if (rc < 0) | ||
356 | dev_err(&port->dev, | ||
357 | "Disabling read failed (error = %d)\n", rc); | ||
358 | } | ||
359 | mutex_unlock(&port->serial->disc_mutex); | ||
360 | 355 | ||
361 | /* shutdown our bulk reads and writes */ | 356 | /* shutdown our bulk reads and writes */ |
362 | usb_serial_generic_close(port); | 357 | usb_serial_generic_close(port); |
363 | |||
364 | /* wgg - do I need this? I think so. */ | ||
365 | usb_kill_urb(port->interrupt_in_urb); | ||
366 | } | 358 | } |
367 | 359 | ||
368 | /* We need to write a complete 64-byte data block and encode the | 360 | /* We need to write a complete 64-byte data block and encode the |