--- /dev/null
+From ab4b71644a26d1ab92b987b2fd30e17c25e89f85 Mon Sep 17 00:00:00 2001
+From: Bjørn Mork <bjorn@mork.no>
+Date: Mon, 4 Mar 2013 14:19:21 +0100
+Subject: USB: storage: fix Huawei mode switching regression
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit ab4b71644a26d1ab92b987b2fd30e17c25e89f85 upstream.
+
+This reverts commit 200e0d99 ("USB: storage: optimize to match the
+Huawei USB storage devices and support new switch command" and the
+followup bugfix commit cd060956 ("USB: storage: properly handle
+the endian issues of idProduct").
+
+The commit effectively added a large number of Huawei devices to
+the deprecated usb-storage mode switching logic. Many of these
+devices have been in use and supported by the userspace
+usb_modeswitch utility for years. Forcing the switching inside
+the kernel causes a number of regressions as a result of ignoring
+existing onfigurations, and also completely takes away the ability
+to configure mode switching per device/system/user.
+
+Known regressions caused by this:
+ - Some of the devices support multiple modes, using different
+ switching commands. There are existing configurations taking
+ advantage of this.
+
+ - There is a real use case for disabling mode switching and
+ instead mounting the exposed storage device. This becomes
+ impossible with switching logic inside the usb-storage driver.
+
+ - At least on device fail as a result of the usb-storage switching
+ command, becoming completely unswitchable. This is possibly a
+ firmware bug, but still a regression because the device work as
+ expected using usb_modeswitch defaults.
+
+In-kernel mode switching was deprecated years ago with the
+development of the more user friendly userspace alternatives. The
+existing list of devices in usb-storage was only kept to prevent
+breaking already working systems. The long term plan is to remove
+the list, not to add to it. Ref:
+http://permalink.gmane.org/gmane.linux.usb.general/28543
+
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Cc: <fangxiaozhi@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/storage/initializers.c | 76 --------
+ drivers/usb/storage/initializers.h | 4
+ drivers/usb/storage/unusual_devs.h | 329 ++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 331 insertions(+), 78 deletions(-)
+
+--- a/drivers/usb/storage/initializers.c
++++ b/drivers/usb/storage/initializers.c
+@@ -92,8 +92,8 @@ int usb_stor_ucr61s2b_init(struct us_dat
+ return 0;
+ }
+
+-/* This places the HUAWEI usb dongles in multi-port mode */
+-static int usb_stor_huawei_feature_init(struct us_data *us)
++/* This places the HUAWEI E220 devices in multi-port mode */
++int usb_stor_huawei_e220_init(struct us_data *us)
+ {
+ int result;
+
+@@ -104,75 +104,3 @@ static int usb_stor_huawei_feature_init(
+ US_DEBUGP("Huawei mode set result is %d\n", result);
+ return 0;
+ }
+-
+-/*
+- * It will send a scsi switch command called rewind' to huawei dongle.
+- * When the dongle receives this command at the first time,
+- * it will reboot immediately. After rebooted, it will ignore this command.
+- * So it is unnecessary to read its response.
+- */
+-static int usb_stor_huawei_scsi_init(struct us_data *us)
+-{
+- int result = 0;
+- int act_len = 0;
+- struct bulk_cb_wrap *bcbw = (struct bulk_cb_wrap *) us->iobuf;
+- char rewind_cmd[] = {0x11, 0x06, 0x20, 0x00, 0x00, 0x01, 0x01, 0x00,
+- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+-
+- bcbw->Signature = cpu_to_le32(US_BULK_CB_SIGN);
+- bcbw->Tag = 0;
+- bcbw->DataTransferLength = 0;
+- bcbw->Flags = bcbw->Lun = 0;
+- bcbw->Length = sizeof(rewind_cmd);
+- memset(bcbw->CDB, 0, sizeof(bcbw->CDB));
+- memcpy(bcbw->CDB, rewind_cmd, sizeof(rewind_cmd));
+-
+- result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcbw,
+- US_BULK_CB_WRAP_LEN, &act_len);
+- US_DEBUGP("transfer actual length=%d, result=%d\n", act_len, result);
+- return result;
+-}
+-
+-/*
+- * It tries to find the supported Huawei USB dongles.
+- * In Huawei, they assign the following product IDs
+- * for all of their mobile broadband dongles,
+- * including the new dongles in the future.
+- * So if the product ID is not included in this list,
+- * it means it is not Huawei's mobile broadband dongles.
+- */
+-static int usb_stor_huawei_dongles_pid(struct us_data *us)
+-{
+- struct usb_interface_descriptor *idesc;
+- int idProduct;
+-
+- idesc = &us->pusb_intf->cur_altsetting->desc;
+- idProduct = le16_to_cpu(us->pusb_dev->descriptor.idProduct);
+- /* The first port is CDROM,
+- * means the dongle in the single port mode,
+- * and a switch command is required to be sent. */
+- if (idesc && idesc->bInterfaceNumber == 0) {
+- if ((idProduct == 0x1001)
+- || (idProduct == 0x1003)
+- || (idProduct == 0x1004)
+- || (idProduct >= 0x1401 && idProduct <= 0x1500)
+- || (idProduct >= 0x1505 && idProduct <= 0x1600)
+- || (idProduct >= 0x1c02 && idProduct <= 0x2202)) {
+- return 1;
+- }
+- }
+- return 0;
+-}
+-
+-int usb_stor_huawei_init(struct us_data *us)
+-{
+- int result = 0;
+-
+- if (usb_stor_huawei_dongles_pid(us)) {
+- if (le16_to_cpu(us->pusb_dev->descriptor.idProduct) >= 0x1446)
+- result = usb_stor_huawei_scsi_init(us);
+- else
+- result = usb_stor_huawei_feature_init(us);
+- }
+- return result;
+-}
+--- a/drivers/usb/storage/initializers.h
++++ b/drivers/usb/storage/initializers.h
+@@ -46,5 +46,5 @@ int usb_stor_euscsi_init(struct us_data
+ * flash reader */
+ int usb_stor_ucr61s2b_init(struct us_data *us);
+
+-/* This places the HUAWEI usb dongles in multi-port mode */
+-int usb_stor_huawei_init(struct us_data *us);
++/* This places the HUAWEI E220 devices in multi-port mode */
++int usb_stor_huawei_e220_init(struct us_data *us);
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1515,10 +1515,335 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x
+ /* Reported by fangxiaozhi <huananhu@huawei.com>
+ * This brings the HUAWEI data card devices into multi-port mode
+ */
+-UNUSUAL_VENDOR_INTF(0x12d1, 0x08, 0x06, 0x50,
++UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+- USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_init,
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1402, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1404, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1407, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x140A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x140B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x140C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x140D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x140E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x140F, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141F, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1420, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1421, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1422, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1423, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1424, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1425, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1426, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1427, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1428, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1429, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142F, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1430, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1431, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1432, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1433, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1434, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1435, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1436, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1437, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1438, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1439, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143F, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+
+ /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */