]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/fx2lafw/protocol.c
Fix #442 by renaming sr_dev_driver.priv to .context
[libsigrok.git] / src / hardware / fx2lafw / protocol.c
index 11e3504e7948b7b6a8899fe51f9e601d85181ab5..c87f659d07e249a28bfc5a771bf324eeb592934c 100644 (file)
@@ -194,7 +194,7 @@ SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di)
        uint8_t revid;
        char connection_id[64];
 
-       drvc = di->priv;
+       drvc = di->context;
        devc = sdi->priv;
        usb = sdi->conn;
 
@@ -244,6 +244,16 @@ SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di)
                        break;
                }
 
+               if (libusb_has_capability(LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER)) {
+                       if (libusb_kernel_driver_active(usb->devhdl, USB_INTERFACE) == 1) {
+                               if ((ret = libusb_detach_kernel_driver(usb->devhdl, USB_INTERFACE)) < 0) {
+                                       sr_err("Failed to detach kernel driver: %s.",
+                                               libusb_error_name(ret));
+                                       return SR_ERR;
+                               }
+                       }
+               }
+
                ret = command_get_fw_version(usb->devhdl, &vi);
                if (ret != SR_OK) {
                        sr_err("Failed to get firmware version.");