aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/storage
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2013-03-04 08:19:21 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-06 23:23:17 -0500
commitab4b71644a26d1ab92b987b2fd30e17c25e89f85 (patch)
treed262332166a26363ab1fdbfb1402b42f50bf6ecb /drivers/usb/storage
parentfbb8c745ec20fd9e6ba9af56dabab987c765263c (diff)
USB: storage: fix Huawei mode switching regression
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 Cc: <fangxiaozhi@huawei.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/storage')
-rw-r--r--drivers/usb/storage/initializers.c76
-rw-r--r--drivers/usb/storage/initializers.h4
-rw-r--r--drivers/usb/storage/unusual_devs.h329
3 files changed, 331 insertions, 78 deletions
diff --git a/drivers/usb/storage/initializers.c b/drivers/usb/storage/initializers.c
index 7ab9046ae0ec..105d900150c1 100644
--- a/drivers/usb/storage/initializers.c
+++ b/drivers/usb/storage/initializers.c
@@ -92,8 +92,8 @@ int usb_stor_ucr61s2b_init(struct us_data *us)
92 return 0; 92 return 0;
93} 93}
94 94
95/* This places the HUAWEI usb dongles in multi-port mode */ 95/* This places the HUAWEI E220 devices in multi-port mode */
96static int usb_stor_huawei_feature_init(struct us_data *us) 96int usb_stor_huawei_e220_init(struct us_data *us)
97{ 97{
98 int result; 98 int result;
99 99
@@ -104,75 +104,3 @@ static int usb_stor_huawei_feature_init(struct us_data *us)
104 US_DEBUGP("Huawei mode set result is %d\n", result); 104 US_DEBUGP("Huawei mode set result is %d\n", result);
105 return 0; 105 return 0;
106} 106}
107
108/*
109 * It will send a scsi switch command called rewind' to huawei dongle.
110 * When the dongle receives this command at the first time,
111 * it will reboot immediately. After rebooted, it will ignore this command.
112 * So it is unnecessary to read its response.
113 */
114static int usb_stor_huawei_scsi_init(struct us_data *us)
115{
116 int result = 0;
117 int act_len = 0;
118 struct bulk_cb_wrap *bcbw = (struct bulk_cb_wrap *) us->iobuf;
119 char rewind_cmd[] = {0x11, 0x06, 0x20, 0x00, 0x00, 0x01, 0x01, 0x00,
120 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
121
122 bcbw->Signature = cpu_to_le32(US_BULK_CB_SIGN);
123 bcbw->Tag = 0;
124 bcbw->DataTransferLength = 0;
125 bcbw->Flags = bcbw->Lun = 0;
126 bcbw->Length = sizeof(rewind_cmd);
127 memset(bcbw->CDB, 0, sizeof(bcbw->CDB));
128 memcpy(bcbw->CDB, rewind_cmd, sizeof(rewind_cmd));
129
130 result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcbw,
131 US_BULK_CB_WRAP_LEN, &act_len);
132 US_DEBUGP("transfer actual length=%d, result=%d\n", act_len, result);
133 return result;
134}
135
136/*
137 * It tries to find the supported Huawei USB dongles.
138 * In Huawei, they assign the following product IDs
139 * for all of their mobile broadband dongles,
140 * including the new dongles in the future.
141 * So if the product ID is not included in this list,
142 * it means it is not Huawei's mobile broadband dongles.
143 */
144static int usb_stor_huawei_dongles_pid(struct us_data *us)
145{
146 struct usb_interface_descriptor *idesc;
147 int idProduct;
148
149 idesc = &us->pusb_intf->cur_altsetting->desc;
150 idProduct = le16_to_cpu(us->pusb_dev->descriptor.idProduct);
151 /* The first port is CDROM,
152 * means the dongle in the single port mode,
153 * and a switch command is required to be sent. */
154 if (idesc && idesc->bInterfaceNumber == 0) {
155 if ((idProduct == 0x1001)
156 || (idProduct == 0x1003)
157 || (idProduct == 0x1004)
158 || (idProduct >= 0x1401 && idProduct <= 0x1500)
159 || (idProduct >= 0x1505 && idProduct <= 0x1600)
160 || (idProduct >= 0x1c02 && idProduct <= 0x2202)) {
161 return 1;
162 }
163 }
164 return 0;
165}
166
167int usb_stor_huawei_init(struct us_data *us)
168{
169 int result = 0;
170
171 if (usb_stor_huawei_dongles_pid(us)) {
172 if (le16_to_cpu(us->pusb_dev->descriptor.idProduct) >= 0x1446)
173 result = usb_stor_huawei_scsi_init(us);
174 else
175 result = usb_stor_huawei_feature_init(us);
176 }
177 return result;
178}
diff --git a/drivers/usb/storage/initializers.h b/drivers/usb/storage/initializers.h
index 5376d4fc76f0..529327fbb06b 100644
--- a/drivers/usb/storage/initializers.h
+++ b/drivers/usb/storage/initializers.h
@@ -46,5 +46,5 @@ int usb_stor_euscsi_init(struct us_data *us);
46 * flash reader */ 46 * flash reader */
47int usb_stor_ucr61s2b_init(struct us_data *us); 47int usb_stor_ucr61s2b_init(struct us_data *us);
48 48
49/* This places the HUAWEI usb dongles in multi-port mode */ 49/* This places the HUAWEI E220 devices in multi-port mode */
50int usb_stor_huawei_init(struct us_data *us); 50int 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 731c1d75716d..da04a074e790 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -1535,10 +1535,335 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x0100,
1535/* Reported by fangxiaozhi <huananhu@huawei.com> 1535/* Reported by fangxiaozhi <huananhu@huawei.com>
1536 * This brings the HUAWEI data card devices into multi-port mode 1536 * This brings the HUAWEI data card devices into multi-port mode
1537 */ 1537 */
1538UNUSUAL_VENDOR_INTF(0x12d1, 0x08, 0x06, 0x50, 1538UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000,
1539 "HUAWEI MOBILE", 1539 "HUAWEI MOBILE",
1540 "Mass Storage", 1540 "Mass Storage",
1541 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_init, 1541 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1542 0),
1543UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000,
1544 "HUAWEI MOBILE",
1545 "Mass Storage",
1546 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1547 0),
1548UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000,
1549 "HUAWEI MOBILE",
1550 "Mass Storage",
1551 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1552 0),
1553UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000,
1554 "HUAWEI MOBILE",
1555 "Mass Storage",
1556 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1557 0),
1558UNUSUAL_DEV( 0x12d1, 0x1402, 0x0000, 0x0000,
1559 "HUAWEI MOBILE",
1560 "Mass Storage",
1561 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1562 0),
1563UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000,
1564 "HUAWEI MOBILE",
1565 "Mass Storage",
1566 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1567 0),
1568UNUSUAL_DEV( 0x12d1, 0x1404, 0x0000, 0x0000,
1569 "HUAWEI MOBILE",
1570 "Mass Storage",
1571 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1572 0),
1573UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000,
1574 "HUAWEI MOBILE",
1575 "Mass Storage",
1576 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1577 0),
1578UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000,
1579 "HUAWEI MOBILE",
1580 "Mass Storage",
1581 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1582 0),
1583UNUSUAL_DEV( 0x12d1, 0x1407, 0x0000, 0x0000,
1584 "HUAWEI MOBILE",
1585 "Mass Storage",
1586 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1587 0),
1588UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000,
1589 "HUAWEI MOBILE",
1590 "Mass Storage",
1591 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1592 0),
1593UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000,
1594 "HUAWEI MOBILE",
1595 "Mass Storage",
1596 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1597 0),
1598UNUSUAL_DEV( 0x12d1, 0x140A, 0x0000, 0x0000,
1599 "HUAWEI MOBILE",
1600 "Mass Storage",
1601 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1602 0),
1603UNUSUAL_DEV( 0x12d1, 0x140B, 0x0000, 0x0000,
1604 "HUAWEI MOBILE",
1605 "Mass Storage",
1606 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1607 0),
1608UNUSUAL_DEV( 0x12d1, 0x140C, 0x0000, 0x0000,
1609 "HUAWEI MOBILE",
1610 "Mass Storage",
1611 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1612 0),
1613UNUSUAL_DEV( 0x12d1, 0x140D, 0x0000, 0x0000,
1614 "HUAWEI MOBILE",
1615 "Mass Storage",
1616 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1617 0),
1618UNUSUAL_DEV( 0x12d1, 0x140E, 0x0000, 0x0000,
1619 "HUAWEI MOBILE",
1620 "Mass Storage",
1621 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1622 0),
1623UNUSUAL_DEV( 0x12d1, 0x140F, 0x0000, 0x0000,
1624 "HUAWEI MOBILE",
1625 "Mass Storage",
1626 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1627 0),
1628UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000,
1629 "HUAWEI MOBILE",
1630 "Mass Storage",
1631 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1632 0),
1633UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000,
1634 "HUAWEI MOBILE",
1635 "Mass Storage",
1636 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1637 0),
1638UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000,
1639 "HUAWEI MOBILE",
1640 "Mass Storage",
1641 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1642 0),
1643UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000,
1644 "HUAWEI MOBILE",
1645 "Mass Storage",
1646 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1647 0),
1648UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000,
1649 "HUAWEI MOBILE",
1650 "Mass Storage",
1651 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1652 0),
1653UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000,
1654 "HUAWEI MOBILE",
1655 "Mass Storage",
1656 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1657 0),
1658UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000,
1659 "HUAWEI MOBILE",
1660 "Mass Storage",
1661 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1662 0),
1663UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000,
1664 "HUAWEI MOBILE",
1665 "Mass Storage",
1666 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1667 0),
1668UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000,
1669 "HUAWEI MOBILE",
1670 "Mass Storage",
1671 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1672 0),
1673UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000,
1674 "HUAWEI MOBILE",
1675 "Mass Storage",
1676 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1677 0),
1678UNUSUAL_DEV( 0x12d1, 0x141A, 0x0000, 0x0000,
1679 "HUAWEI MOBILE",
1680 "Mass Storage",
1681 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1682 0),
1683UNUSUAL_DEV( 0x12d1, 0x141B, 0x0000, 0x0000,
1684 "HUAWEI MOBILE",
1685 "Mass Storage",
1686 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1687 0),
1688UNUSUAL_DEV( 0x12d1, 0x141C, 0x0000, 0x0000,
1689 "HUAWEI MOBILE",
1690 "Mass Storage",
1691 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1692 0),
1693UNUSUAL_DEV( 0x12d1, 0x141D, 0x0000, 0x0000,
1694 "HUAWEI MOBILE",
1695 "Mass Storage",
1696 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1697 0),
1698UNUSUAL_DEV( 0x12d1, 0x141E, 0x0000, 0x0000,
1699 "HUAWEI MOBILE",
1700 "Mass Storage",
1701 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1702 0),
1703UNUSUAL_DEV( 0x12d1, 0x141F, 0x0000, 0x0000,
1704 "HUAWEI MOBILE",
1705 "Mass Storage",
1706 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1707 0),
1708UNUSUAL_DEV( 0x12d1, 0x1420, 0x0000, 0x0000,
1709 "HUAWEI MOBILE",
1710 "Mass Storage",
1711 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1712 0),
1713UNUSUAL_DEV( 0x12d1, 0x1421, 0x0000, 0x0000,
1714 "HUAWEI MOBILE",
1715 "Mass Storage",
1716 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1717 0),
1718UNUSUAL_DEV( 0x12d1, 0x1422, 0x0000, 0x0000,
1719 "HUAWEI MOBILE",
1720 "Mass Storage",
1721 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1722 0),
1723UNUSUAL_DEV( 0x12d1, 0x1423, 0x0000, 0x0000,
1724 "HUAWEI MOBILE",
1725 "Mass Storage",
1726 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1727 0),
1728UNUSUAL_DEV( 0x12d1, 0x1424, 0x0000, 0x0000,
1729 "HUAWEI MOBILE",
1730 "Mass Storage",
1731 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1732 0),
1733UNUSUAL_DEV( 0x12d1, 0x1425, 0x0000, 0x0000,
1734 "HUAWEI MOBILE",
1735 "Mass Storage",
1736 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1737 0),
1738UNUSUAL_DEV( 0x12d1, 0x1426, 0x0000, 0x0000,
1739 "HUAWEI MOBILE",
1740 "Mass Storage",
1741 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1742 0),
1743UNUSUAL_DEV( 0x12d1, 0x1427, 0x0000, 0x0000,
1744 "HUAWEI MOBILE",
1745 "Mass Storage",
1746 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1747 0),
1748UNUSUAL_DEV( 0x12d1, 0x1428, 0x0000, 0x0000,
1749 "HUAWEI MOBILE",
1750 "Mass Storage",
1751 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1752 0),
1753UNUSUAL_DEV( 0x12d1, 0x1429, 0x0000, 0x0000,
1754 "HUAWEI MOBILE",
1755 "Mass Storage",
1756 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1757 0),
1758UNUSUAL_DEV( 0x12d1, 0x142A, 0x0000, 0x0000,
1759 "HUAWEI MOBILE",
1760 "Mass Storage",
1761 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1762 0),
1763UNUSUAL_DEV( 0x12d1, 0x142B, 0x0000, 0x0000,
1764 "HUAWEI MOBILE",
1765 "Mass Storage",
1766 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1767 0),
1768UNUSUAL_DEV( 0x12d1, 0x142C, 0x0000, 0x0000,
1769 "HUAWEI MOBILE",
1770 "Mass Storage",
1771 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1772 0),
1773UNUSUAL_DEV( 0x12d1, 0x142D, 0x0000, 0x0000,
1774 "HUAWEI MOBILE",
1775 "Mass Storage",
1776 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1777 0),
1778UNUSUAL_DEV( 0x12d1, 0x142E, 0x0000, 0x0000,
1779 "HUAWEI MOBILE",
1780 "Mass Storage",
1781 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1782 0),
1783UNUSUAL_DEV( 0x12d1, 0x142F, 0x0000, 0x0000,
1784 "HUAWEI MOBILE",
1785 "Mass Storage",
1786 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1787 0),
1788UNUSUAL_DEV( 0x12d1, 0x1430, 0x0000, 0x0000,
1789 "HUAWEI MOBILE",
1790 "Mass Storage",
1791 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1792 0),
1793UNUSUAL_DEV( 0x12d1, 0x1431, 0x0000, 0x0000,
1794 "HUAWEI MOBILE",
1795 "Mass Storage",
1796 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1797 0),
1798UNUSUAL_DEV( 0x12d1, 0x1432, 0x0000, 0x0000,
1799 "HUAWEI MOBILE",
1800 "Mass Storage",
1801 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1802 0),
1803UNUSUAL_DEV( 0x12d1, 0x1433, 0x0000, 0x0000,
1804 "HUAWEI MOBILE",
1805 "Mass Storage",
1806 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1807 0),
1808UNUSUAL_DEV( 0x12d1, 0x1434, 0x0000, 0x0000,
1809 "HUAWEI MOBILE",
1810 "Mass Storage",
1811 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1812 0),
1813UNUSUAL_DEV( 0x12d1, 0x1435, 0x0000, 0x0000,
1814 "HUAWEI MOBILE",
1815 "Mass Storage",
1816 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1817 0),
1818UNUSUAL_DEV( 0x12d1, 0x1436, 0x0000, 0x0000,
1819 "HUAWEI MOBILE",
1820 "Mass Storage",
1821 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1822 0),
1823UNUSUAL_DEV( 0x12d1, 0x1437, 0x0000, 0x0000,
1824 "HUAWEI MOBILE",
1825 "Mass Storage",
1826 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1827 0),
1828UNUSUAL_DEV( 0x12d1, 0x1438, 0x0000, 0x0000,
1829 "HUAWEI MOBILE",
1830 "Mass Storage",
1831 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1832 0),
1833UNUSUAL_DEV( 0x12d1, 0x1439, 0x0000, 0x0000,
1834 "HUAWEI MOBILE",
1835 "Mass Storage",
1836 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1837 0),
1838UNUSUAL_DEV( 0x12d1, 0x143A, 0x0000, 0x0000,
1839 "HUAWEI MOBILE",
1840 "Mass Storage",
1841 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1842 0),
1843UNUSUAL_DEV( 0x12d1, 0x143B, 0x0000, 0x0000,
1844 "HUAWEI MOBILE",
1845 "Mass Storage",
1846 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1847 0),
1848UNUSUAL_DEV( 0x12d1, 0x143C, 0x0000, 0x0000,
1849 "HUAWEI MOBILE",
1850 "Mass Storage",
1851 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1852 0),
1853UNUSUAL_DEV( 0x12d1, 0x143D, 0x0000, 0x0000,
1854 "HUAWEI MOBILE",
1855 "Mass Storage",
1856 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1857 0),
1858UNUSUAL_DEV( 0x12d1, 0x143E, 0x0000, 0x0000,
1859 "HUAWEI MOBILE",
1860 "Mass Storage",
1861 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1862 0),
1863UNUSUAL_DEV( 0x12d1, 0x143F, 0x0000, 0x0000,
1864 "HUAWEI MOBILE",
1865 "Mass Storage",
1866 USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
1542 0), 1867 0),
1543 1868
1544/* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ 1869/* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */