diff options
Diffstat (limited to 'drivers/usb/serial/option.c')
-rw-r--r-- | drivers/usb/serial/option.c | 104 |
1 files changed, 101 insertions, 3 deletions
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 815656198914..fe22e90bc879 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -148,6 +148,8 @@ static void option_instat_callback(struct urb *urb); | |||
148 | #define HUAWEI_PRODUCT_K4505 0x1464 | 148 | #define HUAWEI_PRODUCT_K4505 0x1464 |
149 | #define HUAWEI_PRODUCT_K3765 0x1465 | 149 | #define HUAWEI_PRODUCT_K3765 0x1465 |
150 | #define HUAWEI_PRODUCT_E14AC 0x14AC | 150 | #define HUAWEI_PRODUCT_E14AC 0x14AC |
151 | #define HUAWEI_PRODUCT_K3806 0x14AE | ||
152 | #define HUAWEI_PRODUCT_K4605 0x14C6 | ||
151 | #define HUAWEI_PRODUCT_K3770 0x14C9 | 153 | #define HUAWEI_PRODUCT_K3770 0x14C9 |
152 | #define HUAWEI_PRODUCT_K3771 0x14CA | 154 | #define HUAWEI_PRODUCT_K3771 0x14CA |
153 | #define HUAWEI_PRODUCT_K4510 0x14CB | 155 | #define HUAWEI_PRODUCT_K4510 0x14CB |
@@ -416,6 +418,56 @@ static void option_instat_callback(struct urb *urb); | |||
416 | #define SAMSUNG_VENDOR_ID 0x04e8 | 418 | #define SAMSUNG_VENDOR_ID 0x04e8 |
417 | #define SAMSUNG_PRODUCT_GT_B3730 0x6889 | 419 | #define SAMSUNG_PRODUCT_GT_B3730 0x6889 |
418 | 420 | ||
421 | /* YUGA products www.yuga-info.com*/ | ||
422 | #define YUGA_VENDOR_ID 0x257A | ||
423 | #define YUGA_PRODUCT_CEM600 0x1601 | ||
424 | #define YUGA_PRODUCT_CEM610 0x1602 | ||
425 | #define YUGA_PRODUCT_CEM500 0x1603 | ||
426 | #define YUGA_PRODUCT_CEM510 0x1604 | ||
427 | #define YUGA_PRODUCT_CEM800 0x1605 | ||
428 | #define YUGA_PRODUCT_CEM900 0x1606 | ||
429 | |||
430 | #define YUGA_PRODUCT_CEU818 0x1607 | ||
431 | #define YUGA_PRODUCT_CEU816 0x1608 | ||
432 | #define YUGA_PRODUCT_CEU828 0x1609 | ||
433 | #define YUGA_PRODUCT_CEU826 0x160A | ||
434 | #define YUGA_PRODUCT_CEU518 0x160B | ||
435 | #define YUGA_PRODUCT_CEU516 0x160C | ||
436 | #define YUGA_PRODUCT_CEU528 0x160D | ||
437 | #define YUGA_PRODUCT_CEU526 0x160F | ||
438 | |||
439 | #define YUGA_PRODUCT_CWM600 0x2601 | ||
440 | #define YUGA_PRODUCT_CWM610 0x2602 | ||
441 | #define YUGA_PRODUCT_CWM500 0x2603 | ||
442 | #define YUGA_PRODUCT_CWM510 0x2604 | ||
443 | #define YUGA_PRODUCT_CWM800 0x2605 | ||
444 | #define YUGA_PRODUCT_CWM900 0x2606 | ||
445 | |||
446 | #define YUGA_PRODUCT_CWU718 0x2607 | ||
447 | #define YUGA_PRODUCT_CWU716 0x2608 | ||
448 | #define YUGA_PRODUCT_CWU728 0x2609 | ||
449 | #define YUGA_PRODUCT_CWU726 0x260A | ||
450 | #define YUGA_PRODUCT_CWU518 0x260B | ||
451 | #define YUGA_PRODUCT_CWU516 0x260C | ||
452 | #define YUGA_PRODUCT_CWU528 0x260D | ||
453 | #define YUGA_PRODUCT_CWU526 0x260F | ||
454 | |||
455 | #define YUGA_PRODUCT_CLM600 0x2601 | ||
456 | #define YUGA_PRODUCT_CLM610 0x2602 | ||
457 | #define YUGA_PRODUCT_CLM500 0x2603 | ||
458 | #define YUGA_PRODUCT_CLM510 0x2604 | ||
459 | #define YUGA_PRODUCT_CLM800 0x2605 | ||
460 | #define YUGA_PRODUCT_CLM900 0x2606 | ||
461 | |||
462 | #define YUGA_PRODUCT_CLU718 0x2607 | ||
463 | #define YUGA_PRODUCT_CLU716 0x2608 | ||
464 | #define YUGA_PRODUCT_CLU728 0x2609 | ||
465 | #define YUGA_PRODUCT_CLU726 0x260A | ||
466 | #define YUGA_PRODUCT_CLU518 0x260B | ||
467 | #define YUGA_PRODUCT_CLU516 0x260C | ||
468 | #define YUGA_PRODUCT_CLU528 0x260D | ||
469 | #define YUGA_PRODUCT_CLU526 0x260F | ||
470 | |||
419 | /* some devices interfaces need special handling due to a number of reasons */ | 471 | /* some devices interfaces need special handling due to a number of reasons */ |
420 | enum option_blacklist_reason { | 472 | enum option_blacklist_reason { |
421 | OPTION_BLACKLIST_NONE = 0, | 473 | OPTION_BLACKLIST_NONE = 0, |
@@ -551,6 +603,8 @@ static const struct usb_device_id option_ids[] = { | |||
551 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, | 603 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, |
552 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, | 604 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, |
553 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, | 605 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, |
606 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) }, | ||
607 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff) }, | ||
554 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, | 608 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, |
555 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, | 609 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, |
556 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, | 610 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, |
@@ -1005,6 +1059,48 @@ static const struct usb_device_id option_ids[] = { | |||
1005 | { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ | 1059 | { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ |
1006 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ | 1060 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ |
1007 | { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ | 1061 | { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ |
1062 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, | ||
1063 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) }, | ||
1064 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM500) }, | ||
1065 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM510) }, | ||
1066 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM800) }, | ||
1067 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM900) }, | ||
1068 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU818) }, | ||
1069 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU816) }, | ||
1070 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU828) }, | ||
1071 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU826) }, | ||
1072 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU518) }, | ||
1073 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU516) }, | ||
1074 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU528) }, | ||
1075 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU526) }, | ||
1076 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM600) }, | ||
1077 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM610) }, | ||
1078 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM500) }, | ||
1079 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM510) }, | ||
1080 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM800) }, | ||
1081 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM900) }, | ||
1082 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU718) }, | ||
1083 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU716) }, | ||
1084 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU728) }, | ||
1085 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU726) }, | ||
1086 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU518) }, | ||
1087 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU516) }, | ||
1088 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU528) }, | ||
1089 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU526) }, | ||
1090 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM600) }, | ||
1091 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM610) }, | ||
1092 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM500) }, | ||
1093 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM510) }, | ||
1094 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM800) }, | ||
1095 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM900) }, | ||
1096 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU718) }, | ||
1097 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU716) }, | ||
1098 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU728) }, | ||
1099 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU726) }, | ||
1100 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU518) }, | ||
1101 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) }, | ||
1102 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) }, | ||
1103 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) }, | ||
1008 | { } /* Terminating entry */ | 1104 | { } /* Terminating entry */ |
1009 | }; | 1105 | }; |
1010 | MODULE_DEVICE_TABLE(usb, option_ids); | 1106 | MODULE_DEVICE_TABLE(usb, option_ids); |
@@ -1134,11 +1230,13 @@ static int option_probe(struct usb_serial *serial, | |||
1134 | serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff) | 1230 | serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff) |
1135 | return -ENODEV; | 1231 | return -ENODEV; |
1136 | 1232 | ||
1137 | /* Don't bind network interfaces on Huawei K3765 & K4505 */ | 1233 | /* Don't bind network interfaces on Huawei K3765, K4505 & K4605 */ |
1138 | if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID && | 1234 | if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID && |
1139 | (serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 || | 1235 | (serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 || |
1140 | serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505) && | 1236 | serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505 || |
1141 | serial->interface->cur_altsetting->desc.bInterfaceNumber == 1) | 1237 | serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4605) && |
1238 | (serial->interface->cur_altsetting->desc.bInterfaceNumber == 1 || | ||
1239 | serial->interface->cur_altsetting->desc.bInterfaceNumber == 2)) | ||
1142 | return -ENODEV; | 1240 | return -ENODEV; |
1143 | 1241 | ||
1144 | /* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */ | 1242 | /* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */ |