aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scd/ccid-driver.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
index c165f6e30..69df17355 100644
--- a/scd/ccid-driver.c
+++ b/scd/ccid-driver.c
@@ -1653,15 +1653,13 @@ ccid_open_usb_reader (const char *spec_reader_name,
goto leave;
}
- if (set_no != 0)
+ /* Submit SET_INTERFACE control transfer which can reset the device. */
+ rc = libusb_set_interface_alt_setting (idev, ifc_no, set_no);
+ if (rc)
{
- rc = libusb_set_interface_alt_setting (idev, ifc_no, set_no);
- if (rc)
- {
- DEBUGOUT_1 ("usb_set_interface_alt_setting failed: %d\n", rc);
- rc = CCID_DRIVER_ERR_CARD_IO_ERROR;
- goto leave;
- }
+ DEBUGOUT_1 ("usb_set_interface_alt_setting failed: %d\n", rc);
+ rc = CCID_DRIVER_ERR_CARD_IO_ERROR;
+ goto leave;
}
rc = ccid_vendor_specific_init (*handle);