From: Felix Fietkau Date: Thu, 30 May 2013 17:28:19 +0000 (+0200) Subject: detach the kernel driver before mode switch X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fusbmode.git;a=commitdiff_plain;h=c90c4320a4b60fe299505d5186fb501002b0f625;ds=sidebyside detach the kernel driver before mode switch --- diff --git a/switch.c b/switch.c index 7c5cff4..15933d4 100644 --- a/switch.c +++ b/switch.c @@ -7,9 +7,14 @@ enum { __DATA_MAX }; +static void detach_driver(struct usbdev_data *data) +{ + libusb_detach_kernel_driver(data->devh, data->interface); +} + static void handle_generic(struct usbdev_data *data, struct blob_attr **tb) { - fprintf(stderr, "Do generic switch!\n"); + detach_driver(data); } static void handle_huawei(struct usbdev_data *data, struct blob_attr **tb) @@ -34,11 +39,13 @@ static void handle_qisda(struct usbdev_data *data, struct blob_attr **tb) static void handle_gct(struct usbdev_data *data, struct blob_attr **tb) { + detach_driver(data); /* TODO */ } static void handle_kobil(struct usbdev_data *data, struct blob_attr **tb) { + detach_driver(data); /* TODO */ } @@ -54,6 +61,7 @@ static void handle_mobile_action(struct usbdev_data *data, struct blob_attr **tb static void handle_cisco(struct usbdev_data *data, struct blob_attr **tb) { + detach_driver(data); /* TODO */ }