diff options
Diffstat (limited to 'drivers/usb/class/usbtmc.c')
-rw-r--r-- | drivers/usb/class/usbtmc.c | 54 |
1 files changed, 20 insertions, 34 deletions
diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index b4bd2411c666..7c5f4e32c920 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c | |||
@@ -347,13 +347,8 @@ usbtmc_abort_bulk_out_check_status: | |||
347 | goto exit; | 347 | goto exit; |
348 | 348 | ||
349 | usbtmc_abort_bulk_out_clear_halt: | 349 | usbtmc_abort_bulk_out_clear_halt: |
350 | rv = usb_control_msg(data->usb_dev, | 350 | rv = usb_clear_halt(data->usb_dev, |
351 | usb_sndctrlpipe(data->usb_dev, 0), | 351 | usb_sndbulkpipe(data->usb_dev, data->bulk_out)); |
352 | USB_REQ_CLEAR_FEATURE, | ||
353 | USB_DIR_OUT | USB_TYPE_STANDARD | | ||
354 | USB_RECIP_ENDPOINT, | ||
355 | USB_ENDPOINT_HALT, data->bulk_out, buffer, | ||
356 | 0, USBTMC_TIMEOUT); | ||
357 | 352 | ||
358 | if (rv < 0) { | 353 | if (rv < 0) { |
359 | dev_err(dev, "usb_control_msg returned %d\n", rv); | 354 | dev_err(dev, "usb_control_msg returned %d\n", rv); |
@@ -562,10 +557,16 @@ static ssize_t usbtmc_write(struct file *filp, const char __user *buf, | |||
562 | n_bytes = roundup(12 + this_part, 4); | 557 | n_bytes = roundup(12 + this_part, 4); |
563 | memset(buffer + 12 + this_part, 0, n_bytes - (12 + this_part)); | 558 | memset(buffer + 12 + this_part, 0, n_bytes - (12 + this_part)); |
564 | 559 | ||
565 | retval = usb_bulk_msg(data->usb_dev, | 560 | do { |
566 | usb_sndbulkpipe(data->usb_dev, | 561 | retval = usb_bulk_msg(data->usb_dev, |
567 | data->bulk_out), | 562 | usb_sndbulkpipe(data->usb_dev, |
568 | buffer, n_bytes, &actual, USBTMC_TIMEOUT); | 563 | data->bulk_out), |
564 | buffer, n_bytes, | ||
565 | &actual, USBTMC_TIMEOUT); | ||
566 | if (retval != 0) | ||
567 | break; | ||
568 | n_bytes -= actual; | ||
569 | } while (n_bytes); | ||
569 | 570 | ||
570 | data->bTag_last_write = data->bTag; | 571 | data->bTag_last_write = data->bTag; |
571 | data->bTag++; | 572 | data->bTag++; |
@@ -702,14 +703,8 @@ usbtmc_clear_check_status: | |||
702 | 703 | ||
703 | usbtmc_clear_bulk_out_halt: | 704 | usbtmc_clear_bulk_out_halt: |
704 | 705 | ||
705 | rv = usb_control_msg(data->usb_dev, | 706 | rv = usb_clear_halt(data->usb_dev, |
706 | usb_sndctrlpipe(data->usb_dev, 0), | 707 | usb_sndbulkpipe(data->usb_dev, data->bulk_out)); |
707 | USB_REQ_CLEAR_FEATURE, | ||
708 | USB_DIR_OUT | USB_TYPE_STANDARD | | ||
709 | USB_RECIP_ENDPOINT, | ||
710 | USB_ENDPOINT_HALT, | ||
711 | data->bulk_out, buffer, 0, | ||
712 | USBTMC_TIMEOUT); | ||
713 | if (rv < 0) { | 708 | if (rv < 0) { |
714 | dev_err(dev, "usb_control_msg returned %d\n", rv); | 709 | dev_err(dev, "usb_control_msg returned %d\n", rv); |
715 | goto exit; | 710 | goto exit; |
@@ -730,13 +725,8 @@ static int usbtmc_ioctl_clear_out_halt(struct usbtmc_device_data *data) | |||
730 | if (!buffer) | 725 | if (!buffer) |
731 | return -ENOMEM; | 726 | return -ENOMEM; |
732 | 727 | ||
733 | rv = usb_control_msg(data->usb_dev, | 728 | rv = usb_clear_halt(data->usb_dev, |
734 | usb_sndctrlpipe(data->usb_dev, 0), | 729 | usb_sndbulkpipe(data->usb_dev, data->bulk_out)); |
735 | USB_REQ_CLEAR_FEATURE, | ||
736 | USB_DIR_OUT | USB_TYPE_STANDARD | | ||
737 | USB_RECIP_ENDPOINT, | ||
738 | USB_ENDPOINT_HALT, data->bulk_out, | ||
739 | buffer, 0, USBTMC_TIMEOUT); | ||
740 | 730 | ||
741 | if (rv < 0) { | 731 | if (rv < 0) { |
742 | dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n", | 732 | dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n", |
@@ -759,12 +749,8 @@ static int usbtmc_ioctl_clear_in_halt(struct usbtmc_device_data *data) | |||
759 | if (!buffer) | 749 | if (!buffer) |
760 | return -ENOMEM; | 750 | return -ENOMEM; |
761 | 751 | ||
762 | rv = usb_control_msg(data->usb_dev, usb_sndctrlpipe(data->usb_dev, 0), | 752 | rv = usb_clear_halt(data->usb_dev, |
763 | USB_REQ_CLEAR_FEATURE, | 753 | usb_rcvbulkpipe(data->usb_dev, data->bulk_in)); |
764 | USB_DIR_OUT | USB_TYPE_STANDARD | | ||
765 | USB_RECIP_ENDPOINT, | ||
766 | USB_ENDPOINT_HALT, data->bulk_in, buffer, 0, | ||
767 | USBTMC_TIMEOUT); | ||
768 | 754 | ||
769 | if (rv < 0) { | 755 | if (rv < 0) { |
770 | dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n", | 756 | dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n", |
@@ -1109,13 +1095,13 @@ static void usbtmc_disconnect(struct usb_interface *intf) | |||
1109 | kref_put(&data->kref, usbtmc_delete); | 1095 | kref_put(&data->kref, usbtmc_delete); |
1110 | } | 1096 | } |
1111 | 1097 | ||
1112 | static int usbtmc_suspend (struct usb_interface *intf, pm_message_t message) | 1098 | static int usbtmc_suspend(struct usb_interface *intf, pm_message_t message) |
1113 | { | 1099 | { |
1114 | /* this driver does not have pending URBs */ | 1100 | /* this driver does not have pending URBs */ |
1115 | return 0; | 1101 | return 0; |
1116 | } | 1102 | } |
1117 | 1103 | ||
1118 | static int usbtmc_resume (struct usb_interface *intf) | 1104 | static int usbtmc_resume(struct usb_interface *intf) |
1119 | { | 1105 | { |
1120 | return 0; | 1106 | return 0; |
1121 | } | 1107 | } |