forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-14 982b8cc116118b3463d3f332581945625722acd8
kernel/drivers/usb/serial/option.c
....@@ -162,6 +162,8 @@
162162 #define NOVATELWIRELESS_PRODUCT_G2 0xA010
163163 #define NOVATELWIRELESS_PRODUCT_MC551 0xB001
164164
165
+#define UBLOX_VENDOR_ID 0x1546
166
+
165167 /* AMOI PRODUCTS */
166168 #define AMOI_VENDOR_ID 0x1614
167169 #define AMOI_PRODUCT_H01 0x0800
....@@ -198,6 +200,8 @@
198200
199201 #define DELL_PRODUCT_5821E 0x81d7
200202 #define DELL_PRODUCT_5821E_ESIM 0x81e0
203
+#define DELL_PRODUCT_5829E_ESIM 0x81e4
204
+#define DELL_PRODUCT_5829E 0x81e6
201205
202206 #define KYOCERA_VENDOR_ID 0x0c88
203207 #define KYOCERA_PRODUCT_KPC650 0x17da
....@@ -244,13 +248,33 @@
244248 #define QUECTEL_VENDOR_ID 0x2c7c
245249 /* These Quectel products use Quectel's vendor ID */
246250 #define QUECTEL_PRODUCT_EC21 0x0121
251
+#define QUECTEL_PRODUCT_EM061K_LTA 0x0123
252
+#define QUECTEL_PRODUCT_EM061K_LMS 0x0124
247253 #define QUECTEL_PRODUCT_EC25 0x0125
254
+#define QUECTEL_PRODUCT_EM060K_128 0x0128
255
+#define QUECTEL_PRODUCT_EG91 0x0191
248256 #define QUECTEL_PRODUCT_EG95 0x0195
249257 #define QUECTEL_PRODUCT_BG96 0x0296
250258 #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
251268 #define QUECTEL_PRODUCT_EM12 0x0512
252269 #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
253276 #define QUECTEL_PRODUCT_EC200T 0x6026
277
+#define QUECTEL_PRODUCT_RM500K 0x7001
254278
255279 #define CMOTECH_VENDOR_ID 0x16d8
256280 #define CMOTECH_PRODUCT_6001 0x6001
....@@ -385,6 +409,8 @@
385409 #define LONGCHEER_VENDOR_ID 0x1c9e
386410
387411 /* 4G Systems products */
412
+/* This one was sold as the VW and Skoda "Carstick LTE" */
413
+#define FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE 0x7605
388414 /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick *
389415 * It seems to contain a Qualcomm QSC6240/6290 chipset */
390416 #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603
....@@ -425,6 +451,14 @@
425451 #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084
426452 #define CINTERION_PRODUCT_AHXX_AUDIO 0x0085
427453 #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
428462
429463 /* Olivetti products */
430464 #define OLIVETTI_VENDOR_ID 0x0b3c
....@@ -560,6 +594,18 @@
560594 #define WETELECOM_PRODUCT_6802 0x6802
561595 #define WETELECOM_PRODUCT_WMD300 0x6803
562596
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
563609
564610 /* Device flags */
565611
....@@ -580,40 +626,6 @@
580626
581627
582628 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
-
616
- { USB_DEVICE(0x1286, 0x4e3c) },
617629 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
618630 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
619631 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
....@@ -1092,6 +1104,10 @@
10921104 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
10931105 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E_ESIM),
10941106 .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) },
10951111 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
10961112 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
10971113 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
....@@ -1133,6 +1149,20 @@
11331149 /* u-blox products using Qualcomm vendor ID */
11341150 { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
11351151 .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) },
11361166 /* Quectel products using Quectel vendor ID */
11371167 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff),
11381168 .driver_info = NUMEP2 },
....@@ -1140,24 +1170,74 @@
11401170 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff),
11411171 .driver_info = NUMEP2 },
11421172 { 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) },
11431176 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff),
11441177 .driver_info = NUMEP2 },
11451178 { 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 },
11461181 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
11471182 .driver_info = RSVD(4) },
11481183 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
11491184 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11501185 { 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) },
11511220 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff),
11521221 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11531222 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
11541223 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */
11551224 { 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 },
11561227 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
11571228 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
11581229 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
11591230 .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) },
11601239 { 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) },
11611241
11621242 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
11631243 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
....@@ -1232,6 +1312,38 @@
12321312 .driver_info = NCTRL(2) | RSVD(3) },
12331313 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */
12341314 .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) },
12351347 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
12361348 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
12371349 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
....@@ -1246,6 +1358,8 @@
12461358 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12471359 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */
12481360 .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) },
12491363 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
12501364 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
12511365 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
....@@ -1264,6 +1378,7 @@
12641378 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12651379 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */
12661380 .driver_info = NCTRL(2) | RSVD(3) },
1381
+ { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) }, /* Telit LE910Cx (rmnet) */
12671382 { USB_DEVICE(TELIT_VENDOR_ID, 0x1260),
12681383 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12691384 { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
....@@ -1272,7 +1387,19 @@
12721387 .driver_info = NCTRL(0) | RSVD(1) },
12731388 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */
12741389 .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) },
12751398 { 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 */
12761403 .driver_info = NCTRL(0) | ZLP },
12771404 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
12781405 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
....@@ -1601,7 +1728,8 @@
16011728 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },
16021729 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },
16031730 { 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) },
1731
+ { USB_DEVICE(ZTE_VENDOR_ID, 0x1275), /* ZTE P685M */
1732
+ .driver_info = RSVD(3) | RSVD(4) },
16051733 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },
16061734 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },
16071735 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },
....@@ -1645,6 +1773,8 @@
16451773 .driver_info = RSVD(2) },
16461774 { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x1476, 0xff) }, /* GosunCn ZTE WeLink ME3630 (ECM/NCM mode) */
16471775 { 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) },
16481778 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
16491779 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
16501780 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
....@@ -1672,7 +1802,6 @@
16721802 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) },
16731803 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
16741804 { 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) },
16761805 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff),
16771806 .driver_info = RSVD(1) },
16781807 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff),
....@@ -1893,6 +2022,8 @@
18932022 .driver_info = RSVD(2) },
18942023 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
18952024 { 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) },
18962027 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
18972028 .driver_info = NCTRL(0) | NCTRL(1) },
18982029 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100),
....@@ -1948,6 +2079,22 @@
19482079 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
19492080 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
19502081 { 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) },
19512098 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
19522099 .driver_info = RSVD(4) },
19532100 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
....@@ -2086,17 +2233,37 @@
20862233 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
20872234 { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */
20882235 .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) },
20892242 { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */
20902243 .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) */
20912246 { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
20922247 .driver_info = RSVD(4) | RSVD(5) },
20932248 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
20942249 .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) */
20952255 { 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) },
20962259 { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */
20972260 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
20982261 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
20992262 { 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) },
21002267 { } /* Terminating entry */
21012268 };
21022269 MODULE_DEVICE_TABLE(usb, option_ids);
....@@ -2122,7 +2289,8 @@
21222289 .chars_in_buffer = usb_wwan_chars_in_buffer,
21232290 .tiocmget = usb_wwan_tiocmget,
21242291 .tiocmset = usb_wwan_tiocmset,
2125
- .ioctl = usb_wwan_ioctl,
2292
+ .get_serial = usb_wwan_get_serial_info,
2293
+ .set_serial = usb_wwan_set_serial_info,
21262294 .attach = option_attach,
21272295 .release = option_release,
21282296 .port_probe = usb_wwan_port_probe,
....@@ -2131,9 +2299,6 @@
21312299 #ifdef CONFIG_PM
21322300 .suspend = usb_wwan_suspend,
21332301 .resume = usb_wwan_resume,
2134
-#if 1 //Added by Quectel
2135
- .reset_resume = usb_wwan_resume,
2136
-#endif
21372302 #endif
21382303 };
21392304
....@@ -2157,101 +2322,6 @@
21572322 struct usb_interface_descriptor *iface_desc =
21582323 &serial->interface->cur_altsetting->desc;
21592324 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
22552325
22562326 /* Never bind to the CD-Rom emulation interface */
22572327 if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE)
....@@ -2333,8 +2403,7 @@
23332403 dev_dbg(dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata);
23342404
23352405 if (status == 0) {
2336
- struct usb_ctrlrequest *req_pkt =
2337
- (struct usb_ctrlrequest *)urb->transfer_buffer;
2406
+ struct usb_ctrlrequest *req_pkt = urb->transfer_buffer;
23382407
23392408 if (!req_pkt) {
23402409 dev_dbg(dev, "%s: NULL req_pkt\n", __func__);