projects
/
project
/
usbmode.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5da2894
)
detach the kernel driver before mode switch
author
Felix Fietkau
<nbd@openwrt.org>
Thu, 30 May 2013 17:28:19 +0000
(19:28 +0200)
committer
Felix Fietkau
<nbd@openwrt.org>
Thu, 30 May 2013 17:28:19 +0000
(19:28 +0200)
switch.c
patch
|
blob
|
history
diff --git
a/switch.c
b/switch.c
index 7c5cff4831ba637b909eb6bb56a9a2c2bb8f5756..15933d4eb2ccf45c55156c0835c1b78cb1a0ad95 100644
(file)
--- a/
switch.c
+++ b/
switch.c
@@
-7,9
+7,14
@@
enum {
__DATA_MAX
};
__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)
{
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)
}
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)
{
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)
{
/* TODO */
}
static void handle_kobil(struct usbdev_data *data, struct blob_attr **tb)
{
+ detach_driver(data);
/* TODO */
}
/* 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)
{
static void handle_cisco(struct usbdev_data *data, struct blob_attr **tb)
{
+ detach_driver(data);
/* TODO */
}
/* TODO */
}