summaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2018-05-04 09:58:56 -0400
committerDavid S. Miller <davem@davemloft.net>2018-05-04 09:58:56 -0400
commita7b15ab887e5b8e9803136b5a4a0008d7a3dea86 (patch)
treeca5342d29badb2a3cce2a353b786c8ab4a993c1e /drivers/net/usb
parentb05f03b232ab4f8f173eeae291a4c9cd662a6676 (diff)
parent1504269814263c9676b4605a6a91e14dc6ceac21 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Overlapping changes in selftests Makefile. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb')
-rw-r--r--drivers/net/usb/qmi_wwan.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index c853e7410f5a..42565dd33aa6 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1098,6 +1098,7 @@ static const struct usb_device_id products[] = {
1098 {QMI_FIXED_INTF(0x05c6, 0x9080, 8)}, 1098 {QMI_FIXED_INTF(0x05c6, 0x9080, 8)},
1099 {QMI_FIXED_INTF(0x05c6, 0x9083, 3)}, 1099 {QMI_FIXED_INTF(0x05c6, 0x9083, 3)},
1100 {QMI_FIXED_INTF(0x05c6, 0x9084, 4)}, 1100 {QMI_FIXED_INTF(0x05c6, 0x9084, 4)},
1101 {QMI_FIXED_INTF(0x05c6, 0x90b2, 3)}, /* ublox R410M */
1101 {QMI_FIXED_INTF(0x05c6, 0x920d, 0)}, 1102 {QMI_FIXED_INTF(0x05c6, 0x920d, 0)},
1102 {QMI_FIXED_INTF(0x05c6, 0x920d, 5)}, 1103 {QMI_FIXED_INTF(0x05c6, 0x920d, 5)},
1103 {QMI_QUIRK_SET_DTR(0x05c6, 0x9625, 4)}, /* YUGA CLM920-NC5 */ 1104 {QMI_QUIRK_SET_DTR(0x05c6, 0x9625, 4)}, /* YUGA CLM920-NC5 */
@@ -1343,6 +1344,18 @@ static int qmi_wwan_probe(struct usb_interface *intf,
1343 id->driver_info = (unsigned long)&qmi_wwan_info; 1344 id->driver_info = (unsigned long)&qmi_wwan_info;
1344 } 1345 }
1345 1346
1347 /* There are devices where the same interface number can be
1348 * configured as different functions. We should only bind to
1349 * vendor specific functions when matching on interface number
1350 */
1351 if (id->match_flags & USB_DEVICE_ID_MATCH_INT_NUMBER &&
1352 desc->bInterfaceClass != USB_CLASS_VENDOR_SPEC) {
1353 dev_dbg(&intf->dev,
1354 "Rejecting interface number match for class %02x\n",
1355 desc->bInterfaceClass);
1356 return -ENODEV;
1357 }
1358
1346 /* Quectel EC20 quirk where we've QMI on interface 4 instead of 0 */ 1359 /* Quectel EC20 quirk where we've QMI on interface 4 instead of 0 */
1347 if (quectel_ec20_detected(intf) && desc->bInterfaceNumber == 0) { 1360 if (quectel_ec20_detected(intf) && desc->bInterfaceNumber == 0) {
1348 dev_dbg(&intf->dev, "Quectel EC20 quirk, skipping interface 0\n"); 1361 dev_dbg(&intf->dev, "Quectel EC20 quirk, skipping interface 0\n");