hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/drivers/usb/serial/option.c
....@@ -162,8 +162,6 @@
162162 #define NOVATELWIRELESS_PRODUCT_G2 0xA010
163163 #define NOVATELWIRELESS_PRODUCT_MC551 0xB001
164164
165
-#define UBLOX_VENDOR_ID 0x1546
166
-
167165 /* AMOI PRODUCTS */
168166 #define AMOI_VENDOR_ID 0x1614
169167 #define AMOI_PRODUCT_H01 0x0800
....@@ -199,9 +197,6 @@
199197 #define DELL_PRODUCT_5804_MINICARD_ATT 0x819b /* Novatel E371 */
200198
201199 #define DELL_PRODUCT_5821E 0x81d7
202
-#define DELL_PRODUCT_5821E_ESIM 0x81e0
203
-#define DELL_PRODUCT_5829E_ESIM 0x81e4
204
-#define DELL_PRODUCT_5829E 0x81e6
205200
206201 #define KYOCERA_VENDOR_ID 0x0c88
207202 #define KYOCERA_PRODUCT_KPC650 0x17da
....@@ -248,33 +243,10 @@
248243 #define QUECTEL_VENDOR_ID 0x2c7c
249244 /* These Quectel products use Quectel's vendor ID */
250245 #define QUECTEL_PRODUCT_EC21 0x0121
251
-#define QUECTEL_PRODUCT_EM061K_LTA 0x0123
252
-#define QUECTEL_PRODUCT_EM061K_LMS 0x0124
253246 #define QUECTEL_PRODUCT_EC25 0x0125
254
-#define QUECTEL_PRODUCT_EM060K_128 0x0128
255
-#define QUECTEL_PRODUCT_EG91 0x0191
256
-#define QUECTEL_PRODUCT_EG95 0x0195
257247 #define QUECTEL_PRODUCT_BG96 0x0296
258248 #define QUECTEL_PRODUCT_EP06 0x0306
259
-#define QUECTEL_PRODUCT_EM05G 0x030a
260
-#define QUECTEL_PRODUCT_EM060K 0x030b
261
-#define QUECTEL_PRODUCT_EM05G_CS 0x030c
262
-#define QUECTEL_PRODUCT_EM05GV2 0x030e
263
-#define QUECTEL_PRODUCT_EM05CN_SG 0x0310
264
-#define QUECTEL_PRODUCT_EM05G_SG 0x0311
265
-#define QUECTEL_PRODUCT_EM05CN 0x0312
266
-#define QUECTEL_PRODUCT_EM05G_GR 0x0313
267
-#define QUECTEL_PRODUCT_EM05G_RS 0x0314
268249 #define QUECTEL_PRODUCT_EM12 0x0512
269
-#define QUECTEL_PRODUCT_RM500Q 0x0800
270
-#define QUECTEL_PRODUCT_RM520N 0x0801
271
-#define QUECTEL_PRODUCT_EC200U 0x0901
272
-#define QUECTEL_PRODUCT_EC200S_CN 0x6002
273
-#define QUECTEL_PRODUCT_EC200A 0x6005
274
-#define QUECTEL_PRODUCT_EM061K_LWW 0x6008
275
-#define QUECTEL_PRODUCT_EM061K_LCN 0x6009
276
-#define QUECTEL_PRODUCT_EC200T 0x6026
277
-#define QUECTEL_PRODUCT_RM500K 0x7001
278250
279251 #define CMOTECH_VENDOR_ID 0x16d8
280252 #define CMOTECH_PRODUCT_6001 0x6001
....@@ -409,8 +381,6 @@
409381 #define LONGCHEER_VENDOR_ID 0x1c9e
410382
411383 /* 4G Systems products */
412
-/* This one was sold as the VW and Skoda "Carstick LTE" */
413
-#define FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE 0x7605
414384 /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick *
415385 * It seems to contain a Qualcomm QSC6240/6290 chipset */
416386 #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603
....@@ -445,20 +415,10 @@
445415 #define CINTERION_PRODUCT_PH8 0x0053
446416 #define CINTERION_PRODUCT_AHXX 0x0055
447417 #define CINTERION_PRODUCT_PLXX 0x0060
448
-#define CINTERION_PRODUCT_EXS82 0x006c
449418 #define CINTERION_PRODUCT_PH8_2RMNET 0x0082
450419 #define CINTERION_PRODUCT_PH8_AUDIO 0x0083
451420 #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084
452421 #define CINTERION_PRODUCT_AHXX_AUDIO 0x0085
453
-#define CINTERION_PRODUCT_CLS8 0x00b0
454
-#define CINTERION_PRODUCT_MV31_MBIM 0x00b3
455
-#define CINTERION_PRODUCT_MV31_RMNET 0x00b7
456
-#define CINTERION_PRODUCT_MV31_2_MBIM 0x00b8
457
-#define CINTERION_PRODUCT_MV31_2_RMNET 0x00b9
458
-#define CINTERION_PRODUCT_MV32_WA 0x00f1
459
-#define CINTERION_PRODUCT_MV32_WB 0x00f2
460
-#define CINTERION_PRODUCT_MV32_WA_RMNET 0x00f3
461
-#define CINTERION_PRODUCT_MV32_WB_RMNET 0x00f4
462422
463423 /* Olivetti products */
464424 #define OLIVETTI_VENDOR_ID 0x0b3c
....@@ -564,7 +524,6 @@
564524 /* Cellient products */
565525 #define CELLIENT_VENDOR_ID 0x2692
566526 #define CELLIENT_PRODUCT_MEN200 0x9005
567
-#define CELLIENT_PRODUCT_MPL200 0x9025
568527
569528 /* Hyundai Petatel Inc. products */
570529 #define PETATEL_VENDOR_ID 0x1ff4
....@@ -594,23 +553,8 @@
594553 #define WETELECOM_PRODUCT_6802 0x6802
595554 #define WETELECOM_PRODUCT_WMD300 0x6803
596555
597
-/* OPPO products */
598
-#define OPPO_VENDOR_ID 0x22d9
599
-#define OPPO_PRODUCT_R11 0x276c
600
-
601
-/* Sierra Wireless products */
602
-#define SIERRA_VENDOR_ID 0x1199
603
-#define SIERRA_PRODUCT_EM9191 0x90d3
604
-
605
-/* UNISOC (Spreadtrum) products */
606
-#define UNISOC_VENDOR_ID 0x1782
607
-/* TOZED LT70-C based on UNISOC SL8563 uses UNISOC's vendor ID */
608
-#define TOZED_PRODUCT_LT70C 0x4055
609556
610557 /* Device flags */
611
-
612
-/* Highest interface number which can be used with NCTRL() and RSVD() */
613
-#define FLAG_IFNUM_MAX 7
614558
615559 /* Interface does not support modem-control requests */
616560 #define NCTRL(ifnum) ((BIT(ifnum) & 0xff) << 8)
....@@ -621,11 +565,34 @@
621565 /* Interface must have two endpoints */
622566 #define NUMEP2 BIT(16)
623567
624
-/* Device needs ZLP */
625
-#define ZLP BIT(17)
626
-
627568
628569 static const struct usb_device_id option_ids[] = {
570
+#if 1 //Added by Quectel
571
+ { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
572
+ { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
573
+ { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20(MDM9215) */
574
+ { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20(MDM9x07)/EC25/EG25 */
575
+ { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
576
+ { USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
577
+ { USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
578
+ { USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
579
+ { USB_DEVICE(0x2C7C, 0x030B) }, /* Quectel EG065K/EG060K */
580
+ { USB_DEVICE(0x2C7C, 0x0514) }, /* Quectel BL EG060K RNDIS Only */
581
+ { USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EP12/EM12/EG16/EG18 */
582
+ { USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
583
+ { USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */
584
+ { USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
585
+ { USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */
586
+ { USB_DEVICE(0x2C7C, 0x0452) }, /* Quectel AG520 */
587
+ { USB_DEVICE(0x2C7C, 0x0455) }, /* Quectel AG550 */
588
+ { USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
589
+ { USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500/RM500/RG510/RM510 */
590
+ { USB_DEVICE(0x2C7C, 0x0801) }, /* Quectel RG520/RM520/SG520 */
591
+ { USB_DEVICE(0x2C7C, 0x6026) }, /* Quectel EC200 */
592
+ { USB_DEVICE(0x2C7C, 0x6120) }, /* Quectel UC200 */
593
+ { USB_DEVICE(0x2C7C, 0x6000) }, /* Quectel EC200/UC200 */
594
+ { .match_flags = USB_DEVICE_ID_MATCH_VENDOR, .idVendor = 0x2C7C }, /* Match All Quectel Modules */
595
+#endif
629596 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
630597 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
631598 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
....@@ -1027,11 +994,6 @@
1027994 { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x7B) },
1028995 { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x06, 0x7C) },
1029996
1030
- /* Motorola devices */
1031
- { USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x2a70, 0xff, 0xff, 0xff) }, /* mdm6600 */
1032
- { USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x2e0a, 0xff, 0xff, 0xff) }, /* mdm9600 */
1033
- { USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x4281, 0x0a, 0x00, 0xfc) }, /* mdm ram dl */
1034
- { USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x900e, 0xff, 0xff, 0xff) }, /* mdm qc dl */
1035997
1036998 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) },
1037999 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
....@@ -1102,12 +1064,6 @@
11021064 { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5804_MINICARD_ATT, 0xff, 0xff, 0xff) },
11031065 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E),
11041066 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
1105
- { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E_ESIM),
1106
- .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
1107
- { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E),
1108
- .driver_info = RSVD(0) | RSVD(6) },
1109
- { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E_ESIM),
1110
- .driver_info = RSVD(0) | RSVD(6) },
11111067 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
11121068 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
11131069 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
....@@ -1149,96 +1105,19 @@
11491105 /* u-blox products using Qualcomm vendor ID */
11501106 { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
11511107 .driver_info = RSVD(1) | RSVD(3) },
1152
- { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x908b), /* u-blox LARA-R6 00B */
1153
- .driver_info = RSVD(4) },
1154
- { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x90fa),
1155
- .driver_info = RSVD(3) },
1156
- /* u-blox products */
1157
- { USB_DEVICE(UBLOX_VENDOR_ID, 0x1311) }, /* u-blox LARA-R6 01B */
1158
- { USB_DEVICE(UBLOX_VENDOR_ID, 0x1312), /* u-blox LARA-R6 01B (RMNET) */
1159
- .driver_info = RSVD(4) },
1160
- { USB_DEVICE_INTERFACE_CLASS(UBLOX_VENDOR_ID, 0x1313, 0xff) }, /* u-blox LARA-R6 01B (ECM) */
1161
- { USB_DEVICE(UBLOX_VENDOR_ID, 0x1341) }, /* u-blox LARA-L6 */
1162
- { USB_DEVICE(UBLOX_VENDOR_ID, 0x1342), /* u-blox LARA-L6 (RMNET) */
1163
- .driver_info = RSVD(4) },
1164
- { USB_DEVICE(UBLOX_VENDOR_ID, 0x1343), /* u-blox LARA-L6 (ECM) */
1165
- .driver_info = RSVD(4) },
11661108 /* Quectel products using Quectel vendor ID */
1167
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff),
1168
- .driver_info = NUMEP2 },
1169
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0, 0) },
1170
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff),
1171
- .driver_info = NUMEP2 },
1172
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0, 0) },
1173
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG91, 0xff, 0xff, 0xff),
1174
- .driver_info = NUMEP2 },
1175
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG91, 0xff, 0, 0) },
1176
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff),
1177
- .driver_info = NUMEP2 },
1178
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
1179
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, 0x0203, 0xff), /* BG95-M3 */
1180
- .driver_info = ZLP },
1109
+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21),
1110
+ .driver_info = RSVD(4) },
1111
+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),
1112
+ .driver_info = RSVD(4) },
11811113 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
11821114 .driver_info = RSVD(4) },
11831115 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
11841116 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11851117 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
1186
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05CN, 0xff),
1187
- .driver_info = RSVD(6) | ZLP },
1188
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05CN_SG, 0xff),
1189
- .driver_info = RSVD(6) | ZLP },
1190
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G, 0xff),
1191
- .driver_info = RSVD(6) | ZLP },
1192
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G_GR, 0xff),
1193
- .driver_info = RSVD(6) | ZLP },
1194
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05GV2, 0xff),
1195
- .driver_info = RSVD(4) | ZLP },
1196
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G_CS, 0xff),
1197
- .driver_info = RSVD(6) | ZLP },
1198
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G_RS, 0xff),
1199
- .driver_info = RSVD(6) | ZLP },
1200
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G_SG, 0xff),
1201
- .driver_info = RSVD(6) | ZLP },
1202
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0x00, 0x40) },
1203
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x30) },
1204
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x40) },
1205
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_128, 0xff, 0xff, 0x30) },
1206
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_128, 0xff, 0x00, 0x40) },
1207
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_128, 0xff, 0xff, 0x40) },
1208
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0xff, 0x30) },
1209
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0x00, 0x40) },
1210
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0xff, 0x40) },
1211
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LMS, 0xff, 0xff, 0x30) },
1212
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LMS, 0xff, 0x00, 0x40) },
1213
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LMS, 0xff, 0xff, 0x40) },
1214
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LTA, 0xff, 0xff, 0x30) },
1215
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LTA, 0xff, 0x00, 0x40) },
1216
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LTA, 0xff, 0xff, 0x40) },
1217
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0xff, 0x30) },
1218
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0x00, 0x40) },
1219
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0xff, 0x40) },
12201118 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff),
12211119 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
12221120 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
1223
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */
1224
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0, 0) },
1225
- { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, 0x0700, 0xff), /* BG95 */
1226
- .driver_info = RSVD(3) | ZLP },
1227
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
1228
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
1229
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
1230
- .driver_info = ZLP },
1231
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0xff, 0x30) },
1232
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0x40) },
1233
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0) },
1234
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0900, 0xff, 0, 0), /* RM500U-CN */
1235
- .driver_info = ZLP },
1236
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200A, 0xff, 0, 0) },
1237
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200U, 0xff, 0, 0) },
1238
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
1239
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
1240
- { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) },
1241
-
12421121 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
12431122 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
12441123 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),
....@@ -1286,10 +1165,6 @@
12861165 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
12871166 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
12881167 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UE910_V2) },
1289
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1031, 0xff), /* Telit LE910C1-EUX */
1290
- .driver_info = NCTRL(0) | RSVD(3) },
1291
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1033, 0xff), /* Telit LE910C1-EUX (ECM) */
1292
- .driver_info = NCTRL(0) },
12931168 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG0),
12941169 .driver_info = RSVD(0) | RSVD(1) | NCTRL(2) | RSVD(3) },
12951170 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG1),
....@@ -1300,66 +1175,14 @@
13001175 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
13011176 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG5, 0xff),
13021177 .driver_info = RSVD(0) | RSVD(1) | NCTRL(2) | RSVD(3) },
1303
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1050, 0xff), /* Telit FN980 (rmnet) */
1304
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1305
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1051, 0xff), /* Telit FN980 (MBIM) */
1306
- .driver_info = NCTRL(0) | RSVD(1) },
1307
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1052, 0xff), /* Telit FN980 (RNDIS) */
1308
- .driver_info = NCTRL(2) | RSVD(3) },
1309
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1053, 0xff), /* Telit FN980 (ECM) */
1310
- .driver_info = NCTRL(0) | RSVD(1) },
1311
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1054, 0xff), /* Telit FT980-KS */
1312
- .driver_info = NCTRL(2) | RSVD(3) },
1313
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */
1314
- .driver_info = NCTRL(0) | RSVD(1) },
1315
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1056, 0xff), /* Telit FD980 */
1316
- .driver_info = NCTRL(2) | RSVD(3) },
1317
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1057, 0xff), /* Telit FN980 */
1318
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1319
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1058, 0xff), /* Telit FN980 (PCIe) */
1320
- .driver_info = NCTRL(0) | RSVD(1) },
1321
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1060, 0xff), /* Telit LN920 (rmnet) */
1322
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1323
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1061, 0xff), /* Telit LN920 (MBIM) */
1324
- .driver_info = NCTRL(0) | RSVD(1) },
1325
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1062, 0xff), /* Telit LN920 (RNDIS) */
1326
- .driver_info = NCTRL(2) | RSVD(3) },
1327
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1063, 0xff), /* Telit LN920 (ECM) */
1328
- .driver_info = NCTRL(0) | RSVD(1) },
1329
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1070, 0xff), /* Telit FN990 (rmnet) */
1330
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1331
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1071, 0xff), /* Telit FN990 (MBIM) */
1332
- .driver_info = NCTRL(0) | RSVD(1) },
1333
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1072, 0xff), /* Telit FN990 (RNDIS) */
1334
- .driver_info = NCTRL(2) | RSVD(3) },
1335
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1073, 0xff), /* Telit FN990 (ECM) */
1336
- .driver_info = NCTRL(0) | RSVD(1) },
1337
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1075, 0xff), /* Telit FN990 (PCIe) */
1338
- .driver_info = RSVD(0) },
1339
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1080, 0xff), /* Telit FE990 (rmnet) */
1340
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1341
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1081, 0xff), /* Telit FE990 (MBIM) */
1342
- .driver_info = NCTRL(0) | RSVD(1) },
1343
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1082, 0xff), /* Telit FE990 (RNDIS) */
1344
- .driver_info = NCTRL(2) | RSVD(3) },
1345
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1083, 0xff), /* Telit FE990 (ECM) */
1346
- .driver_info = NCTRL(0) | RSVD(1) },
13471178 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
13481179 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
13491180 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
13501181 .driver_info = NCTRL(0) | RSVD(3) },
13511182 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1102, 0xff), /* Telit ME910 (ECM) */
13521183 .driver_info = NCTRL(0) },
1353
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x110a, 0xff), /* Telit ME910G1 */
1354
- .driver_info = NCTRL(0) | RSVD(3) },
1355
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x110b, 0xff), /* Telit ME910G1 (ECM) */
1356
- .driver_info = NCTRL(0) },
13571184 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910),
13581185 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1359
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */
1360
- .driver_info = NCTRL(2) | RSVD(3) },
1361
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1204, 0xff), /* Telit LE910Cx (MBIM) */
1362
- .driver_info = NCTRL(0) | RSVD(1) },
13631186 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
13641187 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
13651188 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
....@@ -1374,33 +1197,10 @@
13741197 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) },
13751198 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214),
13761199 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
1377
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1230, 0xff), /* Telit LE910Cx (rmnet) */
1378
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1379
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */
1380
- .driver_info = NCTRL(2) | RSVD(3) },
1381
- { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) }, /* Telit LE910Cx (rmnet) */
1382
- { USB_DEVICE(TELIT_VENDOR_ID, 0x1260),
1383
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1384
- { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
1385
- .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
13861200 { USB_DEVICE(TELIT_VENDOR_ID, 0x1900), /* Telit LN940 (QMI) */
13871201 .driver_info = NCTRL(0) | RSVD(1) },
13881202 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */
13891203 .driver_info = NCTRL(0) },
1390
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x7010, 0xff), /* Telit LE910-S1 (RNDIS) */
1391
- .driver_info = NCTRL(2) },
1392
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x7011, 0xff), /* Telit LE910-S1 (ECM) */
1393
- .driver_info = NCTRL(2) },
1394
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x701a, 0xff), /* Telit LE910R1 (RNDIS) */
1395
- .driver_info = NCTRL(2) },
1396
- { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x701b, 0xff), /* Telit LE910R1 (ECM) */
1397
- .driver_info = NCTRL(2) },
1398
- { USB_DEVICE(TELIT_VENDOR_ID, 0x9010), /* Telit SBL FN980 flashing device */
1399
- .driver_info = NCTRL(0) | ZLP },
1400
- { USB_DEVICE(TELIT_VENDOR_ID, 0x9200), /* Telit LE910S1 flashing device */
1401
- .driver_info = NCTRL(0) | ZLP },
1402
- { USB_DEVICE(TELIT_VENDOR_ID, 0x9201), /* Telit LE910R1 flashing device */
1403
- .driver_info = NCTRL(0) | ZLP },
14041204 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
14051205 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
14061206 .driver_info = RSVD(1) },
....@@ -1565,7 +1365,6 @@
15651365 .driver_info = RSVD(4) },
15661366 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0414, 0xff, 0xff, 0xff) },
15671367 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0417, 0xff, 0xff, 0xff) },
1568
- { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x0601, 0xff) }, /* GosunCn ZTE WeLink ME3630 (RNDIS mode) */
15691368 { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x0602, 0xff) }, /* GosunCn ZTE WeLink ME3630 (MBIM mode) */
15701369 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff),
15711370 .driver_info = RSVD(4) },
....@@ -1728,8 +1527,7 @@
17281527 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },
17291528 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },
17301529 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) },
1731
- { USB_DEVICE(ZTE_VENDOR_ID, 0x1275), /* ZTE P685M */
1732
- .driver_info = RSVD(3) | RSVD(4) },
1530
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) },
17331531 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },
17341532 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },
17351533 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },
....@@ -1772,9 +1570,6 @@
17721570 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G v2 */
17731571 .driver_info = RSVD(2) },
17741572 { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x1476, 0xff) }, /* GosunCn ZTE WeLink ME3630 (ECM/NCM mode) */
1775
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1481, 0xff, 0x00, 0x00) }, /* ZTE MF871A */
1776
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1485, 0xff, 0xff, 0xff), /* ZTE MF286D */
1777
- .driver_info = RSVD(5) },
17781573 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
17791574 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
17801575 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
....@@ -1802,6 +1597,7 @@
18021597 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) },
18031598 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
18041599 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) },
1600
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) },
18051601 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff),
18061602 .driver_info = RSVD(1) },
18071603 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff),
....@@ -2002,10 +1798,6 @@
20021798 { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E),
20031799 .driver_info = RSVD(5) | RSVD(6) },
20041800 { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */
2005
- { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */
2006
- .driver_info = RSVD(7) },
2007
- { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9205, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT+ECM mode */
2008
- { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9206, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT-only mode */
20091801 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200),
20101802 .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) },
20111803 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D),
....@@ -2022,8 +1814,6 @@
20221814 .driver_info = RSVD(2) },
20231815 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
20241816 { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) },
2025
- { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE),
2026
- .driver_info = RSVD(0) },
20271817 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
20281818 .driver_info = NCTRL(0) | NCTRL(1) },
20291819 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100),
....@@ -2070,31 +1860,12 @@
20701860 .driver_info = RSVD(4) },
20711861 { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX_2RMNET, 0xff) },
20721862 { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX_AUDIO, 0xff) },
2073
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_CLS8, 0xff),
2074
- .driver_info = RSVD(0) | RSVD(4) },
2075
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EXS82, 0xff) },
20761863 { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) },
20771864 { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
20781865 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) },
20791866 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
20801867 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
20811868 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
2082
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_MBIM, 0xff),
2083
- .driver_info = RSVD(3)},
2084
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff),
2085
- .driver_info = RSVD(0)},
2086
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_MBIM, 0xff),
2087
- .driver_info = RSVD(3)},
2088
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_RMNET, 0xff),
2089
- .driver_info = RSVD(0)},
2090
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WA, 0xff),
2091
- .driver_info = RSVD(3)},
2092
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WA_RMNET, 0xff),
2093
- .driver_info = RSVD(0) },
2094
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WB, 0xff),
2095
- .driver_info = RSVD(3)},
2096
- { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WB_RMNET, 0xff),
2097
- .driver_info = RSVD(0) },
20981869 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
20991870 .driver_info = RSVD(4) },
21001871 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
....@@ -2182,8 +1953,6 @@
21821953 { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
21831954 { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
21841955 { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
2185
- { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MPL200),
2186
- .driver_info = RSVD(1) | RSVD(4) },
21871956 { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) },
21881957 { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) },
21891958 { USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, TPLINK_PRODUCT_LTE, 0xff, 0x00, 0x00) }, /* TP-Link LTE Module */
....@@ -2202,20 +1971,10 @@
22021971 .driver_info = RSVD(4) },
22031972 { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e35, 0xff), /* D-Link DWM-222 */
22041973 .driver_info = RSVD(4) },
2205
- { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e3d, 0xff), /* D-Link DWM-222 A2 */
2206
- .driver_info = RSVD(4) },
22071974 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
22081975 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */
22091976 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x7e11, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/A3 */
2210
- { USB_DEVICE_INTERFACE_CLASS(0x1435, 0xd191, 0xff), /* Wistron Neweb D19Q1 */
2211
- .driver_info = RSVD(1) | RSVD(4) },
2212
- { USB_DEVICE_INTERFACE_CLASS(0x1690, 0x7588, 0xff), /* ASKEY WWHC050 */
2213
- .driver_info = RSVD(1) | RSVD(4) },
22141977 { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x2031, 0xff), /* Olicard 600 */
2215
- .driver_info = RSVD(4) },
2216
- { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x2033, 0xff), /* BroadMobi BM806U */
2217
- .driver_info = RSVD(4) },
2218
- { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x2060, 0xff), /* BroadMobi BM818 */
22191978 .driver_info = RSVD(4) },
22201979 { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x4000, 0xff) }, /* OLICARD300 - MT6225 */
22211980 { USB_DEVICE(INOVIA_VENDOR_ID, INOVIA_SEW858) },
....@@ -2229,41 +1988,12 @@
22291988 { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x13) },
22301989 { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x14) },
22311990 { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x1b) },
2232
- { USB_DEVICE(0x0489, 0xe0b4), /* Foxconn T77W968 */
2233
- .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
2234
- { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */
2235
- .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
2236
- { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0db, 0xff), /* Foxconn T99W265 MBIM */
2237
- .driver_info = RSVD(3) },
2238
- { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0ee, 0xff), /* Foxconn T99W368 MBIM */
2239
- .driver_info = RSVD(3) },
2240
- { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0f0, 0xff), /* Foxconn T99W373 MBIM */
2241
- .driver_info = RSVD(3) },
2242
- { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */
1991
+ { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 */
22431992 .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
2244
- { USB_DEVICE(0x1782, 0x4d10) }, /* Fibocom L610 (AT mode) */
2245
- { USB_DEVICE_INTERFACE_CLASS(0x1782, 0x4d11, 0xff) }, /* Fibocom L610 (ECM/RNDIS mode) */
22461993 { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
22471994 .driver_info = RSVD(4) | RSVD(5) },
22481995 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
22491996 .driver_info = RSVD(6) },
2250
- { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0106, 0xff) }, /* Fibocom MA510 (ECM mode w/ diag intf.) */
2251
- { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x010a, 0xff) }, /* Fibocom MA510 (ECM mode) */
2252
- { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */
2253
- { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */
2254
- { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0111, 0xff) }, /* Fibocom FM160 (MBIM mode) */
2255
- { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
2256
- { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */
2257
- { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */
2258
- .driver_info = RSVD(4) },
2259
- { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */
2260
- { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
2261
- { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
2262
- { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */
2263
- { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) },
2264
- { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) },
2265
- { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0, 0) },
2266
- { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) },
22671997 { } /* Terminating entry */
22681998 };
22691999 MODULE_DEVICE_TABLE(usb, option_ids);
....@@ -2272,7 +2002,26 @@
22722002 * recognizes separately, thus num_port=1.
22732003 */
22742004
2005
+#if 1 //Added by Quectel
2006
+static void cfmakeraw(struct ktermios *t)
2007
+{
2008
+ t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
2009
+ t->c_oflag &= ~OPOST;
2010
+ t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
2011
+ t->c_cflag &= ~(CSIZE|PARENB);
2012
+ t->c_cflag |= CS8;
2013
+ t->c_cc[VMIN] = 1;
2014
+ t->c_cc[VTIME] = 0;
2015
+}
2016
+
2017
+static void option_init_termios(struct tty_struct *tty)
2018
+{
2019
+ cfmakeraw(&tty->termios);
2020
+}
2021
+#endif
2022
+
22752023 static struct usb_serial_driver option_1port_device = {
2024
+ .init_termios = option_init_termios,
22762025 .driver = {
22772026 .owner = THIS_MODULE,
22782027 .name = "option1",
....@@ -2299,6 +2048,9 @@
22992048 #ifdef CONFIG_PM
23002049 .suspend = usb_wwan_suspend,
23012050 .resume = usb_wwan_resume,
2051
+#if 1 //Added by Quectel
2052
+ .reset_resume = usb_wwan_resume,
2053
+#endif
23022054 #endif
23032055 };
23042056
....@@ -2308,20 +2060,41 @@
23082060
23092061 module_usb_serial_driver(serial_drivers, option_ids);
23102062
2311
-static bool iface_is_reserved(unsigned long device_flags, u8 ifnum)
2312
-{
2313
- if (ifnum > FLAG_IFNUM_MAX)
2314
- return false;
2315
-
2316
- return device_flags & RSVD(ifnum);
2317
-}
2318
-
23192063 static int option_probe(struct usb_serial *serial,
23202064 const struct usb_device_id *id)
23212065 {
23222066 struct usb_interface_descriptor *iface_desc =
23232067 &serial->interface->cur_altsetting->desc;
23242068 unsigned long device_flags = id->driver_info;
2069
+
2070
+#if 1 //Added by Quectel
2071
+ //Quectel UC20's interface 4 can be used as USB Network device
2072
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)
2073
+ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
2074
+ return -ENODEV;
2075
+
2076
+ //Quectel EC20(MDM9215)'s interface 4 can be used as USB Network device
2077
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)
2078
+ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
2079
+ return -ENODEV;
2080
+
2081
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
2082
+ __u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
2083
+ struct usb_interface_descriptor *intf = &serial->interface->cur_altsetting->desc;
2084
+
2085
+ if (intf->bInterfaceClass != 0xFF || intf->bInterfaceSubClass == 0x42) {
2086
+ //ECM, RNDIS, NCM, MBIM, ACM, UAC, ADB
2087
+ return -ENODEV;
2088
+ }
2089
+
2090
+ if ((idProduct&0xF000) == 0x0000) {
2091
+ //MDM interface 4 is QMI
2092
+ if (intf->bInterfaceNumber == 4 && intf->bNumEndpoints == 3
2093
+ && intf->bInterfaceSubClass == 0xFF && intf->bInterfaceProtocol == 0xFF)
2094
+ return -ENODEV;
2095
+ }
2096
+ }
2097
+#endif
23252098
23262099 /* Never bind to the CD-Rom emulation interface */
23272100 if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE)
....@@ -2332,7 +2105,7 @@
23322105 * the same class/subclass/protocol as the serial interfaces. Look at
23332106 * the Windows driver .INF files for reserved interface numbers.
23342107 */
2335
- if (iface_is_reserved(device_flags, iface_desc->bInterfaceNumber))
2108
+ if (device_flags & RSVD(iface_desc->bInterfaceNumber))
23362109 return -ENODEV;
23372110
23382111 /*
....@@ -2346,14 +2119,6 @@
23462119 usb_set_serial_data(serial, (void *)device_flags);
23472120
23482121 return 0;
2349
-}
2350
-
2351
-static bool iface_no_modem_control(unsigned long device_flags, u8 ifnum)
2352
-{
2353
- if (ifnum > FLAG_IFNUM_MAX)
2354
- return false;
2355
-
2356
- return device_flags & NCTRL(ifnum);
23572122 }
23582123
23592124 static int option_attach(struct usb_serial *serial)
....@@ -2371,11 +2136,8 @@
23712136
23722137 iface_desc = &serial->interface->cur_altsetting->desc;
23732138
2374
- if (!iface_no_modem_control(device_flags, iface_desc->bInterfaceNumber))
2139
+ if (!(device_flags & NCTRL(iface_desc->bInterfaceNumber)))
23752140 data->use_send_setup = 1;
2376
-
2377
- if (device_flags & ZLP)
2378
- data->use_zlp = 1;
23792141
23802142 spin_lock_init(&data->susp_lock);
23812143
....@@ -2403,7 +2165,8 @@
24032165 dev_dbg(dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata);
24042166
24052167 if (status == 0) {
2406
- struct usb_ctrlrequest *req_pkt = urb->transfer_buffer;
2168
+ struct usb_ctrlrequest *req_pkt =
2169
+ (struct usb_ctrlrequest *)urb->transfer_buffer;
24072170
24082171 if (!req_pkt) {
24092172 dev_dbg(dev, "%s: NULL req_pkt\n", __func__);
....@@ -2436,7 +2199,7 @@
24362199 dev_dbg(dev, "%s: error %d\n", __func__, status);
24372200
24382201 /* Resubmit urb so we continue receiving IRQ data */
2439
- if (status != -ESHUTDOWN && status != -ENOENT) {
2202
+ if (status != -ESHUTDOWN && status != -ENOENT && status != -EPROTO) {
24402203 usb_mark_last_busy(port->serial->dev);
24412204 err = usb_submit_urb(urb, GFP_ATOMIC);
24422205 if (err)