diff options
Diffstat (limited to 'drivers/usb/serial/pl2303.c')
| -rw-r--r-- | drivers/usb/serial/pl2303.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 7eab5d4cf3a8..3cf245bdda54 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
| @@ -95,6 +95,7 @@ static struct usb_device_id id_table [] = { | |||
| 95 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) }, | 95 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) }, |
| 96 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, | 96 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, |
| 97 | { USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) }, | 97 | { USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) }, |
| 98 | { USB_DEVICE( NOKIA_CA42_VENDOR_ID, NOKIA_CA42_PRODUCT_ID ) }, | ||
| 98 | { } /* Terminating entry */ | 99 | { } /* Terminating entry */ |
| 99 | }; | 100 | }; |
| 100 | 101 | ||
| @@ -538,8 +539,10 @@ static int pl2303_open (struct usb_serial_port *port, struct file *filp) | |||
| 538 | 539 | ||
| 539 | dbg("%s - port %d", __FUNCTION__, port->number); | 540 | dbg("%s - port %d", __FUNCTION__, port->number); |
| 540 | 541 | ||
| 541 | usb_clear_halt(serial->dev, port->write_urb->pipe); | 542 | if (priv->type != HX) { |
| 542 | usb_clear_halt(serial->dev, port->read_urb->pipe); | 543 | usb_clear_halt(serial->dev, port->write_urb->pipe); |
| 544 | usb_clear_halt(serial->dev, port->read_urb->pipe); | ||
| 545 | } | ||
| 543 | 546 | ||
| 544 | buf = kmalloc(10, GFP_KERNEL); | 547 | buf = kmalloc(10, GFP_KERNEL); |
| 545 | if (buf==NULL) | 548 | if (buf==NULL) |
| @@ -650,8 +653,7 @@ static void pl2303_close (struct usb_serial_port *port, struct file *filp) | |||
| 650 | timeout = max((HZ*2560)/bps,HZ/10); | 653 | timeout = max((HZ*2560)/bps,HZ/10); |
| 651 | else | 654 | else |
| 652 | timeout = 2*HZ; | 655 | timeout = 2*HZ; |
| 653 | set_current_state(TASK_INTERRUPTIBLE); | 656 | schedule_timeout_interruptible(timeout); |
| 654 | schedule_timeout(timeout); | ||
| 655 | 657 | ||
| 656 | /* shutdown our urbs */ | 658 | /* shutdown our urbs */ |
| 657 | dbg("%s - shutting down urbs", __FUNCTION__); | 659 | dbg("%s - shutting down urbs", __FUNCTION__); |
