hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/drivers/usb/serial/option.c
....@@ -198,6 +198,8 @@
198198
199199 #define DELL_PRODUCT_5821E 0x81d7
200200 #define DELL_PRODUCT_5821E_ESIM 0x81e0
201
+#define DELL_PRODUCT_5829E_ESIM 0x81e4
202
+#define DELL_PRODUCT_5829E 0x81e6
201203
202204 #define KYOCERA_VENDOR_ID 0x0c88
203205 #define KYOCERA_PRODUCT_KPC650 0x17da
....@@ -238,6 +240,7 @@
238240 #define QUECTEL_PRODUCT_UC15 0x9090
239241 /* These u-blox products use Qualcomm's vendor ID */
240242 #define UBLOX_PRODUCT_R410M 0x90b2
243
+#define UBLOX_PRODUCT_R6XX 0x90fa
241244 /* These Yuga products use Qualcomm's vendor ID */
242245 #define YUGA_PRODUCT_CLM920_NC5 0x9625
243246
....@@ -245,11 +248,13 @@
245248 /* These Quectel products use Quectel's vendor ID */
246249 #define QUECTEL_PRODUCT_EC21 0x0121
247250 #define QUECTEL_PRODUCT_EC25 0x0125
251
+#define QUECTEL_PRODUCT_EG91 0x0191
248252 #define QUECTEL_PRODUCT_EG95 0x0195
249253 #define QUECTEL_PRODUCT_BG96 0x0296
250254 #define QUECTEL_PRODUCT_EP06 0x0306
251255 #define QUECTEL_PRODUCT_EM12 0x0512
252256 #define QUECTEL_PRODUCT_RM500Q 0x0800
257
+#define QUECTEL_PRODUCT_EC200S_CN 0x6002
253258 #define QUECTEL_PRODUCT_EC200T 0x6026
254259
255260 #define CMOTECH_VENDOR_ID 0x16d8
....@@ -425,6 +430,8 @@
425430 #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084
426431 #define CINTERION_PRODUCT_AHXX_AUDIO 0x0085
427432 #define CINTERION_PRODUCT_CLS8 0x00b0
433
+#define CINTERION_PRODUCT_MV31_MBIM 0x00b3
434
+#define CINTERION_PRODUCT_MV31_RMNET 0x00b7
428435
429436 /* Olivetti products */
430437 #define OLIVETTI_VENDOR_ID 0x0b3c
....@@ -580,39 +587,6 @@
580587
581588
582589 static const struct usb_device_id option_ids[] = {
583
-#if 1
584
- { USB_DEVICE( 0x2cb7, 0x0a04 ) }, /* Fibocom FG650 ECM */
585
- { USB_DEVICE( 0x2cb7, 0x0a05 ) }, /* Fibocom FG650 NCM */
586
- { USB_DEVICE( 0x2cb7, 0x0a06 ) }, /* Fibocom FG650 RNDIS*/
587
-#endif
588
-
589
-#if 1 //Added by Quectel
590
- { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
591
- { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
592
- { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20(MDM9215) */
593
- { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20(MDM9x07)/EC25/EG25 */
594
- { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
595
- { USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
596
- { USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
597
- { USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
598
- { USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EP12/EM12/EG16/EG18 */
599
- { USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
600
- { USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */
601
- { USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
602
- { USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */
603
- { USB_DEVICE(0x2C7C, 0x0520) }, /* Quectel AG520 */
604
- { USB_DEVICE(0x2C7C, 0x0550) }, /* Quectel AG550 */
605
- { USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
606
- { USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500/RM500/RG510/RM510 */
607
- { USB_DEVICE(0x2C7C, 0x6026) }, /* Quectel EC200 */
608
- { USB_DEVICE(0x2C7C, 0x6120) }, /* Quectel UC200 */
609
- { USB_DEVICE(0x2C7C, 0x6000) }, /* Quectel EC200/UC200 */
610
- { USB_DEVICE(0x2C7C, 0x6002) }, /* Quectel EC200/UC200 */
611
-#endif
612
- { USB_DEVICE(0x19d2, 0x0199) }, /* ZTE ME3860 ME3760_V2*/
613
- { USB_DEVICE(0x19d2, 0x1476) }, /* ZTE ME3620*/
614
- { USB_DEVICE(0x19d2, 0x0117) },
615
-
616590 { USB_DEVICE(0x1286, 0x4e3c) },
617591 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
618592 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
....@@ -1092,6 +1066,10 @@
10921066 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
10931067 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E_ESIM),
10941068 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
1069
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E),
1070
+ .driver_info = RSVD(0) | RSVD(6) },
1071
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E_ESIM),
1072
+ .driver_info = RSVD(0) | RSVD(6) },
10951073 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
10961074 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
10971075 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
....@@ -1133,6 +1111,8 @@
11331111 /* u-blox products using Qualcomm vendor ID */
11341112 { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
11351113 .driver_info = RSVD(1) | RSVD(3) },
1114
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R6XX),
1115
+ .driver_info = RSVD(3) },
11361116 /* Quectel products using Quectel vendor ID */
11371117 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff),
11381118 .driver_info = NUMEP2 },
....@@ -1140,6 +1120,9 @@
11401120 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff),
11411121 .driver_info = NUMEP2 },
11421122 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0, 0) },
1123
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG91, 0xff, 0xff, 0xff),
1124
+ .driver_info = NUMEP2 },
1125
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG91, 0xff, 0, 0) },
11431126 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff),
11441127 .driver_info = NUMEP2 },
11451128 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
....@@ -1157,6 +1140,7 @@
11571140 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
11581141 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
11591142 .driver_info = ZLP },
1143
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
11601144 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
11611145
11621146 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
....@@ -1232,6 +1216,24 @@
12321216 .driver_info = NCTRL(2) | RSVD(3) },
12331217 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */
12341218 .driver_info = NCTRL(0) | RSVD(1) },
1219
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1056, 0xff), /* Telit FD980 */
1220
+ .driver_info = NCTRL(2) | RSVD(3) },
1221
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1060, 0xff), /* Telit LN920 (rmnet) */
1222
+ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1223
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1061, 0xff), /* Telit LN920 (MBIM) */
1224
+ .driver_info = NCTRL(0) | RSVD(1) },
1225
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1062, 0xff), /* Telit LN920 (RNDIS) */
1226
+ .driver_info = NCTRL(2) | RSVD(3) },
1227
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1063, 0xff), /* Telit LN920 (ECM) */
1228
+ .driver_info = NCTRL(0) | RSVD(1) },
1229
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1070, 0xff), /* Telit FN990 (rmnet) */
1230
+ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1231
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1071, 0xff), /* Telit FN990 (MBIM) */
1232
+ .driver_info = NCTRL(0) | RSVD(1) },
1233
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1072, 0xff), /* Telit FN990 (RNDIS) */
1234
+ .driver_info = NCTRL(2) | RSVD(3) },
1235
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1073, 0xff), /* Telit FN990 (ECM) */
1236
+ .driver_info = NCTRL(0) | RSVD(1) },
12351237 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
12361238 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
12371239 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
....@@ -1246,6 +1248,8 @@
12461248 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12471249 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */
12481250 .driver_info = NCTRL(2) | RSVD(3) },
1251
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1204, 0xff), /* Telit LE910Cx (MBIM) */
1252
+ .driver_info = NCTRL(0) | RSVD(1) },
12491253 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
12501254 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
12511255 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
....@@ -1272,7 +1276,19 @@
12721276 .driver_info = NCTRL(0) | RSVD(1) },
12731277 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */
12741278 .driver_info = NCTRL(0) },
1279
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x7010, 0xff), /* Telit LE910-S1 (RNDIS) */
1280
+ .driver_info = NCTRL(2) },
1281
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x7011, 0xff), /* Telit LE910-S1 (ECM) */
1282
+ .driver_info = NCTRL(2) },
1283
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x701a, 0xff), /* Telit LE910R1 (RNDIS) */
1284
+ .driver_info = NCTRL(2) },
1285
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x701b, 0xff), /* Telit LE910R1 (ECM) */
1286
+ .driver_info = NCTRL(2) },
12751287 { USB_DEVICE(TELIT_VENDOR_ID, 0x9010), /* Telit SBL FN980 flashing device */
1288
+ .driver_info = NCTRL(0) | ZLP },
1289
+ { USB_DEVICE(TELIT_VENDOR_ID, 0x9200), /* Telit LE910S1 flashing device */
1290
+ .driver_info = NCTRL(0) | ZLP },
1291
+ { USB_DEVICE(TELIT_VENDOR_ID, 0x9201), /* Telit LE910R1 flashing device */
12761292 .driver_info = NCTRL(0) | ZLP },
12771293 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
12781294 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
....@@ -1601,7 +1617,8 @@
16011617 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },
16021618 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },
16031619 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },
1604
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },
1620
+ { USB_DEVICE(ZTE_VENDOR_ID, 0x1275), /* ZTE P685M */
1621
+ .driver_info = RSVD(3) | RSVD(4) },
16051622 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },
16061623 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },
16071624 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },
....@@ -1645,6 +1662,8 @@
16451662 .driver_info = RSVD(2) },
16461663 { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x1476, 0xff) }, /* GosunCn ZTE WeLink ME3630 (ECM/NCM mode) */
16471664 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1481, 0xff, 0x00, 0x00) }, /* ZTE MF871A */
1665
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1485, 0xff, 0xff, 0xff), /* ZTE MF286D */
1666
+ .driver_info = RSVD(5) },
16481667 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
16491668 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
16501669 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
....@@ -1672,7 +1691,6 @@
16721691 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) },
16731692 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
16741693 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) },
1675
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) },
16761694 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff),
16771695 .driver_info = RSVD(1) },
16781696 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff),
....@@ -1948,6 +1966,10 @@
19481966 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
19491967 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
19501968 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
1969
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_MBIM, 0xff),
1970
+ .driver_info = RSVD(3)},
1971
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff),
1972
+ .driver_info = RSVD(0)},
19511973 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
19521974 .driver_info = RSVD(4) },
19531975 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
....@@ -2086,13 +2108,20 @@
20862108 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
20872109 { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */
20882110 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
2111
+ { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0db, 0xff), /* Foxconn T99W265 MBIM */
2112
+ .driver_info = RSVD(3) },
20892113 { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */
20902114 .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
20912115 { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
20922116 .driver_info = RSVD(4) | RSVD(5) },
20932117 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
20942118 .driver_info = RSVD(6) },
2119
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */
2120
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */
20952121 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
2122
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */
2123
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */
2124
+ .driver_info = RSVD(4) },
20962125 { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */
20972126 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
20982127 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
....@@ -2131,9 +2160,6 @@
21312160 #ifdef CONFIG_PM
21322161 .suspend = usb_wwan_suspend,
21332162 .resume = usb_wwan_resume,
2134
-#if 1 //Added by Quectel
2135
- .reset_resume = usb_wwan_resume,
2136
-#endif
21372163 #endif
21382164 };
21392165
....@@ -2157,101 +2183,6 @@
21572183 struct usb_interface_descriptor *iface_desc =
21582184 &serial->interface->cur_altsetting->desc;
21592185 unsigned long device_flags = id->driver_info;
2160
-
2161
-#if 1
2162
- /*ZTE ME3860 ME3760_V2 ME3620*/
2163
- printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",
2164
- serial->dev->descriptor.idVendor,
2165
- serial->dev->descriptor.idProduct,
2166
- serial->interface->cur_altsetting->desc. bInterfaceNumber);
2167
-
2168
- if (serial->dev->descriptor.idVendor == 0x19d2 &&
2169
- serial->dev->descriptor.idProduct == 0x1476 &&
2170
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
2171
- return -ENODEV;
2172
- if (serial->dev->descriptor.idVendor == 0x19d2 &&
2173
- serial->dev->descriptor.idProduct == 0x1476 &&
2174
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
2175
- return -ENODEV;
2176
- if (serial->dev->descriptor.idVendor == 0x19d2 &&
2177
- serial->dev->descriptor.idProduct == 0x0199 &&
2178
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 0)
2179
- return -ENODEV;
2180
- if (serial->dev->descriptor.idVendor == 0x19d2 &&
2181
- serial->dev->descriptor.idProduct == 0x0199 &&
2182
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 1)
2183
- return -ENODEV;
2184
-#endif
2185
-
2186
-#if 1 //Added by FG650
2187
- if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2cb7) &&
2188
- serial->dev->descriptor.idProduct == cpu_to_le16(0x0a04) &&
2189
- serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1) {
2190
- printk("Discover the 4th interface for fibocom\n");
2191
- return -ENODEV;
2192
- }
2193
-
2194
- if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2cb7) &&
2195
- serial->dev->descriptor.idProduct == cpu_to_le16(0x0a05) &&
2196
- serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1) {
2197
- printk("Discover the 4th interface for fibocom\n");
2198
- return -ENODEV;
2199
- }
2200
-
2201
- if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2cb7) &&
2202
- serial->dev->descriptor.idProduct == cpu_to_le16(0x0a06) &&
2203
- serial->interface->cur_altsetting->desc.bInterfaceNumber <= 1) {
2204
- printk("Discover the 4th interface for fibocom\n");
2205
- return -ENODEV;
2206
- }
2207
-#endif
2208
-
2209
-
2210
-
2211
-if (serial->dev->descriptor.idVendor == 0x19d2 &&
2212
- serial->dev->descriptor.idProduct == 0x1476 &&
2213
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
2214
- return -ENODEV;
2215
-
2216
-if (serial->dev->descriptor.idVendor == 0x19d2 &&
2217
- serial->dev->descriptor.idProduct == 0x1476 &&
2218
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
2219
- return -ENODEV;
2220
-
2221
-if (serial->dev->descriptor.idVendor == 0x19d2 &&
2222
- serial->dev->descriptor.idProduct == 0x1509 &&
2223
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
2224
- return -ENODEV;
2225
-
2226
-if (serial->dev->descriptor.idVendor == 0x19d2 &&
2227
- serial->dev->descriptor.idProduct == 0x1509 &&
2228
- serial->interface->cur_altsetting->desc. bInterfaceNumber == 5)
2229
- return -ENODEV;
2230
-
2231
-
2232
-#if 1 //Added by Quectel
2233
- //Quectel UC20's interface 4 can be used as USB Network device
2234
- if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)
2235
- && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
2236
- return -ENODEV;
2237
-
2238
- //Quectel EC20(MDM9215)'s interface 4 can be used as USB Network device
2239
- if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)
2240
- && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
2241
- return -ENODEV;
2242
-
2243
- if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
2244
- __u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
2245
-
2246
- //Quectel module's some interfaces can be used as USB Network device (ecm, rndis, mbim)
2247
- if (serial->interface->cur_altsetting->desc.bInterfaceClass != 0xFF)
2248
- return -ENODEV;
2249
-
2250
- //Quectel EC25&EC20's interface 4 can be used as USB network device (qmi)
2251
- if ((idProduct != 0x6026 && idProduct != 0x6120) && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
2252
- return -ENODEV;
2253
- }
2254
-#endif
22552186
22562187 /* Never bind to the CD-Rom emulation interface */
22572188 if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE)