|
@@ -145,6 +145,8 @@ static void option_instat_callback(struct urb *urb);
|
|
|
#define HUAWEI_PRODUCT_E143D 0x143D
|
|
|
#define HUAWEI_PRODUCT_E143E 0x143E
|
|
|
#define HUAWEI_PRODUCT_E143F 0x143F
|
|
|
+#define HUAWEI_PRODUCT_K4505 0x1464
|
|
|
+#define HUAWEI_PRODUCT_K3765 0x1465
|
|
|
#define HUAWEI_PRODUCT_E14AC 0x14AC
|
|
|
#define HUAWEI_PRODUCT_ETS1220 0x1803
|
|
|
|
|
@@ -480,6 +482,8 @@ static const struct usb_device_id option_ids[] = {
|
|
|
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) },
|
|
|
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) },
|
|
|
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) },
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505, 0xff, 0xff, 0xff) },
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) },
|
|
|
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) },
|
|
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC) },
|
|
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */
|
|
@@ -1015,6 +1019,13 @@ static int option_probe(struct usb_serial *serial,
|
|
|
serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff)
|
|
|
return -ENODEV;
|
|
|
|
|
|
+ /* Don't bind network interfaces on Huawei K3765 & K4505 */
|
|
|
+ if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID &&
|
|
|
+ (serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 ||
|
|
|
+ serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505) &&
|
|
|
+ serial->interface->cur_altsetting->desc.bInterfaceNumber == 1)
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
data = serial->private = kzalloc(sizeof(struct usb_wwan_intf_private), GFP_KERNEL);
|
|
|
|
|
|
if (!data)
|