summaryrefslogtreecommitdiffstats
path: root/ch341a_spi.c
diff options
context:
space:
mode:
authorThomas Heijligen <thomas.heijligen@secunet.de>2021-09-23 19:06:47 +0200
committerNico Huber <nico.h@gmx.de>2021-09-29 11:09:44 +0000
commit61181a72a4722a1e55ddd22112ce9f8d26794230 (patch)
tree31dda11d069ef84691251228dd4bfec27946ffd6 /ch341a_spi.c
parentc99945d962352e9082a425b5f845735b9cd2014a (diff)
downloadflashrom-61181a72a4722a1e55ddd22112ce9f8d26794230.tar.gz
flashrom-61181a72a4722a1e55ddd22112ce9f8d26794230.tar.bz2
flashrom-61181a72a4722a1e55ddd22112ce9f8d26794230.zip
ch341a_spi: replace active kernel driver detaching by automatic one
Let libusb_claim_interface() handle the kernel driver detaching for us by allowing automatic kernel driver detachment. Allow this on all platforms. Change-Id: If6f19744503055ab8e22c863b31e696808e0407d Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.de> Reviewed-on: https://review.coreboot.org/c/flashrom/+/57889 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'ch341a_spi.c')
-rw-r--r--ch341a_spi.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/ch341a_spi.c b/ch341a_spi.c
index 4a7628637..48642f301 100644
--- a/ch341a_spi.c
+++ b/ch341a_spi.c
@@ -20,7 +20,6 @@
#include <string.h>
#include <libusb.h>
#include "flash.h"
-#include "platform.h"
#include "programmer.h"
/* LIBUSB_CALL ensures the right calling conventions on libusb callbacks.
@@ -448,17 +447,11 @@ static int ch341a_spi_init(void)
return -1;
}
-/* libusb_detach_kernel_driver() and friends basically only work on Linux. We simply try to detach on Linux
- * without a lot of passion here. If that works fine else we will fail on claiming the interface anyway. */
-#if IS_LINUX
- ret = libusb_detach_kernel_driver(handle, 0);
- if (ret == LIBUSB_ERROR_NOT_SUPPORTED) {
- msg_pwarn("Detaching kernel drivers is not supported. Further accesses may fail.\n");
- } else if (ret != 0 && ret != LIBUSB_ERROR_NOT_FOUND) {
- msg_pwarn("Failed to detach kernel driver: '%s'. Further accesses will probably fail.\n",
- libusb_error_name(ret));
+ ret = libusb_set_auto_detach_kernel_driver(handle, 1);
+ if (ret != 0) {
+ msg_pwarn("Platform does not support detaching of USB kernel drivers.\n"
+ "If an unsupported driver is active, claiming of the interface may fail.\n");
}
-#endif
ret = libusb_claim_interface(handle, 0);
if (ret != 0) {