mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 00:50:54 +07:00
net: qmi_wwan: support Sierra Wireless MC77xx devices in QMI mode
The MC77xx devices can operate in two modes: "Direct IP" or "QMI", switchable using a password protected AT command. Both product ID and USB interface configuration will change when switched. The "sierra_net" driver supports the "Direct IP" mode. This driver supports the "QMI" mode. There are also multiple possible USB interface configurations in each mode, some providing more than one wwan interface. Like many other devices made for Windows, different interface types are identified using a static interface number. We define a Sierra specific interface whitelist to support this. Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7e5998aa74
commit
3bc17d10c9
@ -365,6 +365,27 @@ static const struct driver_info qmi_wwan_force_int4 = {
|
||||
.data = BIT(4), /* interface whitelist bitmap */
|
||||
};
|
||||
|
||||
/* Sierra Wireless provide equally useless interface descriptors
|
||||
* Devices in QMI mode can be switched between two different
|
||||
* configurations:
|
||||
* a) USB interface #8 is QMI/wwan
|
||||
* b) USB interfaces #8, #19 and #20 are QMI/wwan
|
||||
*
|
||||
* Both configurations provide a number of other interfaces (serial++),
|
||||
* some of which have the same endpoint configuration as we expect, so
|
||||
* a whitelist or blacklist is necessary.
|
||||
*
|
||||
* FIXME: The below whitelist should include BIT(20). It does not
|
||||
* because I cannot get it to work...
|
||||
*/
|
||||
static const struct driver_info qmi_wwan_sierra = {
|
||||
.description = "Sierra Wireless wwan/QMI device",
|
||||
.flags = FLAG_WWAN,
|
||||
.bind = qmi_wwan_bind_gobi,
|
||||
.unbind = qmi_wwan_unbind_shared,
|
||||
.manage_power = qmi_wwan_manage_power,
|
||||
.data = BIT(8) | BIT(19), /* interface whitelist bitmap */
|
||||
};
|
||||
|
||||
#define HUAWEI_VENDOR_ID 0x12D1
|
||||
#define QMI_GOBI_DEVICE(vend, prod) \
|
||||
@ -445,6 +466,15 @@ static const struct usb_device_id products[] = {
|
||||
.bInterfaceProtocol = 0xff,
|
||||
.driver_info = (unsigned long)&qmi_wwan_force_int4,
|
||||
},
|
||||
{ /* Sierra Wireless MC77xx in QMI mode */
|
||||
.match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
|
||||
.idVendor = 0x1199,
|
||||
.idProduct = 0x68a2,
|
||||
.bInterfaceClass = 0xff,
|
||||
.bInterfaceSubClass = 0xff,
|
||||
.bInterfaceProtocol = 0xff,
|
||||
.driver_info = (unsigned long)&qmi_wwan_sierra,
|
||||
},
|
||||
{QMI_GOBI_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
|
||||
{QMI_GOBI_DEVICE(0x03f0, 0x1f1d)}, /* HP un2400 Gobi Modem Device */
|
||||
{QMI_GOBI_DEVICE(0x03f0, 0x371d)}, /* HP un2430 Mobile Broadband Module */
|
||||
|
Loading…
Reference in New Issue
Block a user