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:
Родитель
39707c2a3b
Коммит
f8295ec22c
|
@ -592,6 +592,32 @@ static const struct usb_device_id products [] = {
|
|||
.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!!!
|
||||
*
|
||||
|
@ -604,21 +630,6 @@ static const struct usb_device_id products [] = {
|
|||
* 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 */
|
||||
.match_flags = USB_DEVICE_ID_MATCH_VENDOR
|
||||
| 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),
|
||||
.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 */
|
||||
{QMI_FIXED_INTF(0x19d2, 0x0002, 1)},
|
||||
|
|
Загрузка…
Ссылка в новой задаче