mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00
usb_device.c: detach/attach usb kernel driver explicitly
Use `libusb_detach_kernel_driver` and `libusb_attach_kernel_driver` instead of `libusb_auto_detach_kernel_driver` to be compatible with older libusb versions without changing the behavior. TEST=Build with libusb >= 1.0.9 Change-Id: I1363fea13368b7ac1e9a3829864d06d123c4e157 Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/67073 Reviewed-by: Peter Marheine <pmarheine@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:
parent
3eaef7528b
commit
cb85aec5ce
12
usb_device.c
12
usb_device.c
@ -342,9 +342,11 @@ int usb_device_claim(struct usb_device *device)
|
||||
}
|
||||
}
|
||||
|
||||
ret = LIBUSB(libusb_set_auto_detach_kernel_driver(device->handle, 1));
|
||||
if (ret != 0) {
|
||||
msg_perr("USB: Failed to enable auto kernel driver detach\n");
|
||||
ret = LIBUSB(libusb_detach_kernel_driver(device->handle,
|
||||
device->interface_descriptor->bInterfaceNumber));
|
||||
if (ret != 0 && ret != LIBUSB_ERROR_NOT_FOUND && ret != LIBUSB_ERROR_NOT_SUPPORTED) {
|
||||
msg_perr("Cannot detach the existing usb driver. %s\n",
|
||||
libusb_error_name(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -355,6 +357,8 @@ int usb_device_claim(struct usb_device *device)
|
||||
if (ret != 0) {
|
||||
msg_perr("USB: Could not claim device interface %d\n",
|
||||
device->interface_descriptor->bInterfaceNumber);
|
||||
libusb_attach_kernel_driver(device->handle,
|
||||
device->interface_descriptor->bInterfaceNumber);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -384,6 +388,8 @@ struct usb_device *usb_device_free(struct usb_device *device)
|
||||
if (device->handle != NULL) {
|
||||
libusb_release_interface(device->handle,
|
||||
device->interface_descriptor->bInterfaceNumber);
|
||||
libusb_attach_kernel_driver(device->handle,
|
||||
device->interface_descriptor->bInterfaceNumber);
|
||||
libusb_close(device->handle);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user