--- /dev/null
+From 1460e5e44cc5ecad7704f63b10dcb3a59d0e008b Mon Sep 17 00:00:00 2001
+From: fangxiaozhi <huananhu@huawei.com>
+Date: Wed, 15 Oct 2008 14:15:36 +0800
+Subject: USB: unusual-devs: support Huawei data card product IDs
+
+From: fangxiaozhi <huananhu@huawei.com>
+
+commit 1460e5e44cc5ecad7704f63b10dcb3a59d0e008b upstream.
+
+In this patch, we want to do one thing: add more Huawei product IDs into the
+USB driver. Then it can support more Huawei data card devices. So to declare
+the unusual device for new Huawei data card devices in unusual_devs.h and to
+declare more new product IDs in option.c.
+
+To modify the data value and length in the function of
+usb_stor_huawei_e220_init in initializers.c That's because based on the USB
+standard, while sending SET_FETURE_D to the device, it requires the
+corresponding data to be zero, and its sending length also must be zero. In
+our old solution, it can be compatible with our WCDMA data card devices, but
+can not support our CDMA data card devices. But in this new solution, it can
+be compatible with all of our data card devices.
+
+Signed-off-by: fangxiaozhi <huananhu@huawei.com>
+Signed-off-by: Phil Dibowitz <phil@ipom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/storage/unusual_devs.h | 273 ++++++++++++++++++++++++++++++++++---
+ 1 file changed, 254 insertions(+), 19 deletions(-)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1635,97 +1635,332 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x
+ /* Reported by fangxiaozhi <huananhu@huawei.com>
+ * This brings the HUAWEI data card devices into multi-port mode
+ */
+-UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1402, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1404, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1407, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x140A, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x140B, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x140C, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x140D, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x140E, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x140F, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
+ 0),
+-UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000,
++UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x141F, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1420, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1421, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1422, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1423, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1424, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1425, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1426, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1427, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1428, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1429, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x142F, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1430, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1431, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1432, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1433, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1434, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1435, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1436, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1437, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1438, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x1439, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143A, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143B, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143C, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143D, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143E, 0x0000, 0x0000,
++ "HUAWEI MOBILE",
++ "Mass Storage",
++ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
++ 0),
++UNUSUAL_DEV( 0x12d1, 0x143F, 0x0000, 0x0000,
+ "HUAWEI MOBILE",
+ "Mass Storage",
+ US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,