diff options
author | Johann Wilhelm <johann.wilhelm@student.tugraz.at> | 2007-09-05 07:49:29 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 17:55:24 -0400 |
commit | d853d872c14b9adc4adad29e56cd378b291f86e0 (patch) | |
tree | 7304314552d5b4e27d155797d6b56c1a4aa720f7 /drivers | |
parent | 63f991b2871bdb1431e8ff62cae2b7b94b4e5b0c (diff) |
USB: usb-storage: Initialize Huawei E220 properly
This is a reworked version of this patch:
http://www.mail-archive.com/linux-usb-devel%40lists.sourceforge.net/msg55094/activate_huawei_dev.patch
That properly initializes the HUAWEI E220 devices into multi-port mode.
Signed-off-by: Johann Wilhelm <johann.wilhelm@student.tugraz.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/storage/initializers.c | 14 | ||||
-rw-r--r-- | drivers/usb/storage/initializers.h | 3 | ||||
-rw-r--r-- | drivers/usb/storage/unusual_devs.h | 11 |
3 files changed, 28 insertions, 0 deletions
diff --git a/drivers/usb/storage/initializers.c b/drivers/usb/storage/initializers.c index 3a41740cad97..ee5b42aa5363 100644 --- a/drivers/usb/storage/initializers.c +++ b/drivers/usb/storage/initializers.c | |||
@@ -90,3 +90,17 @@ int usb_stor_ucr61s2b_init(struct us_data *us) | |||
90 | 90 | ||
91 | return (res ? -1 : 0); | 91 | return (res ? -1 : 0); |
92 | } | 92 | } |
93 | |||
94 | /* This places the HUAWEI E220 devices in multi-port mode */ | ||
95 | int usb_stor_huawei_e220_init(struct us_data *us) | ||
96 | { | ||
97 | int result; | ||
98 | |||
99 | us->iobuf[0] = 0x1; | ||
100 | result = usb_stor_control_msg(us, us->send_ctrl_pipe, | ||
101 | USB_REQ_SET_FEATURE, | ||
102 | USB_TYPE_STANDARD | USB_RECIP_DEVICE, | ||
103 | 0x01, 0x0, us->iobuf, 0x1, 1000); | ||
104 | US_DEBUGP("usb_control_msg performing result is %d\n", result); | ||
105 | return (result ? 0 : -1); | ||
106 | } | ||
diff --git a/drivers/usb/storage/initializers.h b/drivers/usb/storage/initializers.h index e2967a4d48a2..ad3ffd4236c2 100644 --- a/drivers/usb/storage/initializers.h +++ b/drivers/usb/storage/initializers.h | |||
@@ -47,3 +47,6 @@ int usb_stor_euscsi_init(struct us_data *us); | |||
47 | /* This function is required to activate all four slots on the UCR-61S2B | 47 | /* This function is required to activate all four slots on the UCR-61S2B |
48 | * flash reader */ | 48 | * flash reader */ |
49 | int usb_stor_ucr61s2b_init(struct us_data *us); | 49 | int usb_stor_ucr61s2b_init(struct us_data *us); |
50 | |||
51 | /* This places the HUAWEI E220 devices in multi-port mode */ | ||
52 | int usb_stor_huawei_e220_init(struct us_data *us); | ||
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index c6b78ba815ea..94b1dd2aeb3b 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -1463,6 +1463,17 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x0100, | |||
1463 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1463 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1464 | US_FL_IGNORE_RESIDUE ), | 1464 | US_FL_IGNORE_RESIDUE ), |
1465 | 1465 | ||
1466 | /* Reported by fangxiaozhi <fangxiaozhi60675@huawei.com> | ||
1467 | * and by linlei <linlei83@huawei.com> | ||
1468 | * Patch reworked by Johann Wilhelm <johann.wilhelm@student.tugraz.at> | ||
1469 | * This brings the HUAWEI E220 devices into multi-port mode | ||
1470 | */ | ||
1471 | UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000, | ||
1472 | "HUAWEI MOBILE", | ||
1473 | "Mass Storage", | ||
1474 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1475 | 0), | ||
1476 | |||
1466 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ | 1477 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ |
1467 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, | 1478 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, |
1468 | "Minolta", | 1479 | "Minolta", |