qmi_wwan/cdc_ether: move Novatel 551 and E362 to qmi_wwan
These devices provide QMI and ethernet functionality via a standard CDC ethernet descriptor. But when driven by cdc_ether, the QMI functionality is unavailable because only cdc_ether can claim the USB interface. Thus blacklist the devices in cdc_ether and add their IDs to qmi_wwan, which enables both QMI and ethernet simultaneously. Signed-off-by: Dan Williams <dcbw@redhat.com> Cc: stable@vger.kernel.org Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
39707c2a3b
commit
f8295ec22c
@@ -592,6 +592,32 @@ static const struct usb_device_id products [] = {
|
|||||||
.driver_info = 0,
|
.driver_info = 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/* Novatel USB551L and MC551 - handled by qmi_wwan */
|
||||||
|
{
|
||||||
|
.match_flags = USB_DEVICE_ID_MATCH_VENDOR
|
||||||
|
| USB_DEVICE_ID_MATCH_PRODUCT
|
||||||
|
| USB_DEVICE_ID_MATCH_INT_INFO,
|
||||||
|
.idVendor = NOVATEL_VENDOR_ID,
|
||||||
|
.idProduct = 0xB001,
|
||||||
|
.bInterfaceClass = USB_CLASS_COMM,
|
||||||
|
.bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET,
|
||||||
|
.bInterfaceProtocol = USB_CDC_PROTO_NONE,
|
||||||
|
.driver_info = 0,
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Novatel E362 - handled by qmi_wwan */
|
||||||
|
{
|
||||||
|
.match_flags = USB_DEVICE_ID_MATCH_VENDOR
|
||||||
|
| USB_DEVICE_ID_MATCH_PRODUCT
|
||||||
|
| USB_DEVICE_ID_MATCH_INT_INFO,
|
||||||
|
.idVendor = NOVATEL_VENDOR_ID,
|
||||||
|
.idProduct = 0x9010,
|
||||||
|
.bInterfaceClass = USB_CLASS_COMM,
|
||||||
|
.bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET,
|
||||||
|
.bInterfaceProtocol = USB_CDC_PROTO_NONE,
|
||||||
|
.driver_info = 0,
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WHITELIST!!!
|
* WHITELIST!!!
|
||||||
*
|
*
|
||||||
@@ -604,21 +630,6 @@ static const struct usb_device_id products [] = {
|
|||||||
* because of bugs/quirks in a given product (like Zaurus, above).
|
* because of bugs/quirks in a given product (like Zaurus, above).
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
/* Novatel USB551L */
|
|
||||||
/* This match must come *before* the generic CDC-ETHER match so that
|
|
||||||
* we get FLAG_WWAN set on the device, since it's descriptors are
|
|
||||||
* generic CDC-ETHER.
|
|
||||||
*/
|
|
||||||
.match_flags = USB_DEVICE_ID_MATCH_VENDOR
|
|
||||||
| USB_DEVICE_ID_MATCH_PRODUCT
|
|
||||||
| USB_DEVICE_ID_MATCH_INT_INFO,
|
|
||||||
.idVendor = NOVATEL_VENDOR_ID,
|
|
||||||
.idProduct = 0xB001,
|
|
||||||
.bInterfaceClass = USB_CLASS_COMM,
|
|
||||||
.bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET,
|
|
||||||
.bInterfaceProtocol = USB_CDC_PROTO_NONE,
|
|
||||||
.driver_info = (unsigned long)&wwan_info,
|
|
||||||
}, {
|
|
||||||
/* ZTE (Vodafone) K3805-Z */
|
/* ZTE (Vodafone) K3805-Z */
|
||||||
.match_flags = USB_DEVICE_ID_MATCH_VENDOR
|
.match_flags = USB_DEVICE_ID_MATCH_VENDOR
|
||||||
| USB_DEVICE_ID_MATCH_PRODUCT
|
| USB_DEVICE_ID_MATCH_PRODUCT
|
||||||
|
@@ -369,6 +369,20 @@ static const struct usb_device_id products[] = {
|
|||||||
USB_VENDOR_AND_INTERFACE_INFO(0x106c, USB_CLASS_VENDOR_SPEC, 0xf1, 0xff),
|
USB_VENDOR_AND_INTERFACE_INFO(0x106c, USB_CLASS_VENDOR_SPEC, 0xf1, 0xff),
|
||||||
.driver_info = (unsigned long)&qmi_wwan_info,
|
.driver_info = (unsigned long)&qmi_wwan_info,
|
||||||
},
|
},
|
||||||
|
{ /* Novatel USB551L and MC551 */
|
||||||
|
USB_DEVICE_AND_INTERFACE_INFO(0x1410, 0xb001,
|
||||||
|
USB_CLASS_COMM,
|
||||||
|
USB_CDC_SUBCLASS_ETHERNET,
|
||||||
|
USB_CDC_PROTO_NONE),
|
||||||
|
.driver_info = (unsigned long)&qmi_wwan_info,
|
||||||
|
},
|
||||||
|
{ /* Novatel E362 */
|
||||||
|
USB_DEVICE_AND_INTERFACE_INFO(0x1410, 0x9010,
|
||||||
|
USB_CLASS_COMM,
|
||||||
|
USB_CDC_SUBCLASS_ETHERNET,
|
||||||
|
USB_CDC_PROTO_NONE),
|
||||||
|
.driver_info = (unsigned long)&qmi_wwan_info,
|
||||||
|
},
|
||||||
|
|
||||||
/* 3. Combined interface devices matching on interface number */
|
/* 3. Combined interface devices matching on interface number */
|
||||||
{QMI_FIXED_INTF(0x19d2, 0x0002, 1)},
|
{QMI_FIXED_INTF(0x19d2, 0x0002, 1)},
|
||||||
|
Reference in New Issue
Block a user