aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/class/usbtmc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/class/usbtmc.c')
-rw-r--r--drivers/usb/class/usbtmc.c54
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
349usbtmc_abort_bulk_out_clear_halt: 349usbtmc_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
703usbtmc_clear_bulk_out_halt: 704usbtmc_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
1112static int usbtmc_suspend (struct usb_interface *intf, pm_message_t message) 1098static 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
1118static int usbtmc_resume (struct usb_interface *intf) 1104static int usbtmc_resume(struct usb_interface *intf)
1119{ 1105{
1120 return 0; 1106 return 0;
1121} 1107}