Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8295ec2 authored by Dan Williams's avatar Dan Williams Committed by David S. Miller
Browse files

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: default avatarDan Williams <dcbw@redhat.com>
Cc: stable@vger.kernel.org
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: default avatarBjørn Mork <bjorn@mork.no>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 39707c2a
Loading
Loading
Loading
Loading
+26 −15
Original line number Original line Diff line number Diff line
@@ -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
+14 −0
Original line number Original line Diff line number Diff line
@@ -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)},