forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
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
....@@ -245,12 +249,19 @@
245249 /* These Quectel products use Quectel's vendor ID */
246250 #define QUECTEL_PRODUCT_EC21 0x0121
247251 #define QUECTEL_PRODUCT_EC25 0x0125
252
+#define QUECTEL_PRODUCT_EG91 0x0191
248253 #define QUECTEL_PRODUCT_EG95 0x0195
249254 #define QUECTEL_PRODUCT_BG96 0x0296
250255 #define QUECTEL_PRODUCT_EP06 0x0306
256
+#define QUECTEL_PRODUCT_EM05G 0x030a
257
+#define QUECTEL_PRODUCT_EM060K 0x030b
258
+#define QUECTEL_PRODUCT_EM05G_SG 0x0311
251259 #define QUECTEL_PRODUCT_EM12 0x0512
252260 #define QUECTEL_PRODUCT_RM500Q 0x0800
261
+#define QUECTEL_PRODUCT_RM520N 0x0801
262
+#define QUECTEL_PRODUCT_EC200S_CN 0x6002
253263 #define QUECTEL_PRODUCT_EC200T 0x6026
264
+#define QUECTEL_PRODUCT_RM500K 0x7001
254265
255266 #define CMOTECH_VENDOR_ID 0x16d8
256267 #define CMOTECH_PRODUCT_6001 0x6001
....@@ -425,6 +436,14 @@
425436 #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084
426437 #define CINTERION_PRODUCT_AHXX_AUDIO 0x0085
427438 #define CINTERION_PRODUCT_CLS8 0x00b0
439
+#define CINTERION_PRODUCT_MV31_MBIM 0x00b3
440
+#define CINTERION_PRODUCT_MV31_RMNET 0x00b7
441
+#define CINTERION_PRODUCT_MV31_2_MBIM 0x00b8
442
+#define CINTERION_PRODUCT_MV31_2_RMNET 0x00b9
443
+#define CINTERION_PRODUCT_MV32_WA 0x00f1
444
+#define CINTERION_PRODUCT_MV32_WB 0x00f2
445
+#define CINTERION_PRODUCT_MV32_WA_RMNET 0x00f3
446
+#define CINTERION_PRODUCT_MV32_WB_RMNET 0x00f4
428447
429448 /* Olivetti products */
430449 #define OLIVETTI_VENDOR_ID 0x0b3c
....@@ -560,6 +579,13 @@
560579 #define WETELECOM_PRODUCT_6802 0x6802
561580 #define WETELECOM_PRODUCT_WMD300 0x6803
562581
582
+/* OPPO products */
583
+#define OPPO_VENDOR_ID 0x22d9
584
+#define OPPO_PRODUCT_R11 0x276c
585
+
586
+/* Sierra Wireless products */
587
+#define SIERRA_VENDOR_ID 0x1199
588
+#define SIERRA_PRODUCT_EM9191 0x90d3
563589
564590 /* Device flags */
565591
....@@ -580,40 +606,6 @@
580606
581607
582608 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) },
617609 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
618610 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
619611 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
....@@ -1092,6 +1084,10 @@
10921084 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
10931085 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E_ESIM),
10941086 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
1087
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E),
1088
+ .driver_info = RSVD(0) | RSVD(6) },
1089
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E_ESIM),
1090
+ .driver_info = RSVD(0) | RSVD(6) },
10951091 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
10961092 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
10971093 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
....@@ -1133,6 +1129,16 @@
11331129 /* u-blox products using Qualcomm vendor ID */
11341130 { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
11351131 .driver_info = RSVD(1) | RSVD(3) },
1132
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x908b), /* u-blox LARA-R6 00B */
1133
+ .driver_info = RSVD(4) },
1134
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x90fa),
1135
+ .driver_info = RSVD(3) },
1136
+ /* u-blox products */
1137
+ { USB_DEVICE(UBLOX_VENDOR_ID, 0x1341) }, /* u-blox LARA-L6 */
1138
+ { USB_DEVICE(UBLOX_VENDOR_ID, 0x1342), /* u-blox LARA-L6 (RMNET) */
1139
+ .driver_info = RSVD(4) },
1140
+ { USB_DEVICE(UBLOX_VENDOR_ID, 0x1343), /* u-blox LARA-L6 (ECM) */
1141
+ .driver_info = RSVD(4) },
11361142 /* Quectel products using Quectel vendor ID */
11371143 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff),
11381144 .driver_info = NUMEP2 },
....@@ -1140,24 +1146,43 @@
11401146 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff),
11411147 .driver_info = NUMEP2 },
11421148 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0, 0) },
1149
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG91, 0xff, 0xff, 0xff),
1150
+ .driver_info = NUMEP2 },
1151
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG91, 0xff, 0, 0) },
11431152 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff),
11441153 .driver_info = NUMEP2 },
11451154 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
1155
+ { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, 0x0203, 0xff), /* BG95-M3 */
1156
+ .driver_info = ZLP },
11461157 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
11471158 .driver_info = RSVD(4) },
11481159 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
11491160 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11501161 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
1162
+ { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G, 0xff),
1163
+ .driver_info = RSVD(6) | ZLP },
1164
+ { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G_SG, 0xff),
1165
+ .driver_info = RSVD(6) | ZLP },
1166
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0x00, 0x40) },
1167
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x30) },
1168
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K, 0xff, 0xff, 0x40) },
11511169 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff),
11521170 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11531171 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
11541172 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */
11551173 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0, 0) },
1174
+ { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, 0x0700, 0xff), /* BG95 */
1175
+ .driver_info = RSVD(3) | ZLP },
11561176 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
11571177 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
11581178 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
11591179 .driver_info = ZLP },
1180
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0xff, 0x30) },
1181
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0x40) },
1182
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM520N, 0xff, 0, 0) },
1183
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
11601184 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
1185
+ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) },
11611186
11621187 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
11631188 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
....@@ -1232,6 +1257,30 @@
12321257 .driver_info = NCTRL(2) | RSVD(3) },
12331258 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */
12341259 .driver_info = NCTRL(0) | RSVD(1) },
1260
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1056, 0xff), /* Telit FD980 */
1261
+ .driver_info = NCTRL(2) | RSVD(3) },
1262
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1057, 0xff), /* Telit FN980 */
1263
+ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1264
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1058, 0xff), /* Telit FN980 (PCIe) */
1265
+ .driver_info = NCTRL(0) | RSVD(1) },
1266
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1060, 0xff), /* Telit LN920 (rmnet) */
1267
+ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1268
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1061, 0xff), /* Telit LN920 (MBIM) */
1269
+ .driver_info = NCTRL(0) | RSVD(1) },
1270
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1062, 0xff), /* Telit LN920 (RNDIS) */
1271
+ .driver_info = NCTRL(2) | RSVD(3) },
1272
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1063, 0xff), /* Telit LN920 (ECM) */
1273
+ .driver_info = NCTRL(0) | RSVD(1) },
1274
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1070, 0xff), /* Telit FN990 (rmnet) */
1275
+ .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1276
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1071, 0xff), /* Telit FN990 (MBIM) */
1277
+ .driver_info = NCTRL(0) | RSVD(1) },
1278
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1072, 0xff), /* Telit FN990 (RNDIS) */
1279
+ .driver_info = NCTRL(2) | RSVD(3) },
1280
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1073, 0xff), /* Telit FN990 (ECM) */
1281
+ .driver_info = NCTRL(0) | RSVD(1) },
1282
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1075, 0xff), /* Telit FN990 (PCIe) */
1283
+ .driver_info = RSVD(0) },
12351284 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
12361285 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
12371286 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
....@@ -1246,6 +1295,8 @@
12461295 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12471296 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */
12481297 .driver_info = NCTRL(2) | RSVD(3) },
1298
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1204, 0xff), /* Telit LE910Cx (MBIM) */
1299
+ .driver_info = NCTRL(0) | RSVD(1) },
12491300 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
12501301 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
12511302 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
....@@ -1264,6 +1315,7 @@
12641315 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12651316 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */
12661317 .driver_info = NCTRL(2) | RSVD(3) },
1318
+ { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) }, /* Telit LE910Cx (rmnet) */
12671319 { USB_DEVICE(TELIT_VENDOR_ID, 0x1260),
12681320 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12691321 { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
....@@ -1272,7 +1324,19 @@
12721324 .driver_info = NCTRL(0) | RSVD(1) },
12731325 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */
12741326 .driver_info = NCTRL(0) },
1327
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x7010, 0xff), /* Telit LE910-S1 (RNDIS) */
1328
+ .driver_info = NCTRL(2) },
1329
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x7011, 0xff), /* Telit LE910-S1 (ECM) */
1330
+ .driver_info = NCTRL(2) },
1331
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x701a, 0xff), /* Telit LE910R1 (RNDIS) */
1332
+ .driver_info = NCTRL(2) },
1333
+ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x701b, 0xff), /* Telit LE910R1 (ECM) */
1334
+ .driver_info = NCTRL(2) },
12751335 { USB_DEVICE(TELIT_VENDOR_ID, 0x9010), /* Telit SBL FN980 flashing device */
1336
+ .driver_info = NCTRL(0) | ZLP },
1337
+ { USB_DEVICE(TELIT_VENDOR_ID, 0x9200), /* Telit LE910S1 flashing device */
1338
+ .driver_info = NCTRL(0) | ZLP },
1339
+ { USB_DEVICE(TELIT_VENDOR_ID, 0x9201), /* Telit LE910R1 flashing device */
12761340 .driver_info = NCTRL(0) | ZLP },
12771341 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
12781342 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
....@@ -1601,7 +1665,8 @@
16011665 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },
16021666 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },
16031667 { 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) },
1668
+ { USB_DEVICE(ZTE_VENDOR_ID, 0x1275), /* ZTE P685M */
1669
+ .driver_info = RSVD(3) | RSVD(4) },
16051670 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) },
16061671 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) },
16071672 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) },
....@@ -1645,6 +1710,8 @@
16451710 .driver_info = RSVD(2) },
16461711 { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x1476, 0xff) }, /* GosunCn ZTE WeLink ME3630 (ECM/NCM mode) */
16471712 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1481, 0xff, 0x00, 0x00) }, /* ZTE MF871A */
1713
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1485, 0xff, 0xff, 0xff), /* ZTE MF286D */
1714
+ .driver_info = RSVD(5) },
16481715 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
16491716 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
16501717 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
....@@ -1672,7 +1739,6 @@
16721739 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) },
16731740 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
16741741 { 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) },
16761742 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff),
16771743 .driver_info = RSVD(1) },
16781744 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff),
....@@ -1948,6 +2014,22 @@
19482014 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
19492015 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
19502016 { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
2017
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_MBIM, 0xff),
2018
+ .driver_info = RSVD(3)},
2019
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff),
2020
+ .driver_info = RSVD(0)},
2021
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_MBIM, 0xff),
2022
+ .driver_info = RSVD(3)},
2023
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_RMNET, 0xff),
2024
+ .driver_info = RSVD(0)},
2025
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WA, 0xff),
2026
+ .driver_info = RSVD(3)},
2027
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WA_RMNET, 0xff),
2028
+ .driver_info = RSVD(0) },
2029
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WB, 0xff),
2030
+ .driver_info = RSVD(3)},
2031
+ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WB_RMNET, 0xff),
2032
+ .driver_info = RSVD(0) },
19512033 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
19522034 .driver_info = RSVD(4) },
19532035 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
....@@ -2086,17 +2168,32 @@
20862168 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
20872169 { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */
20882170 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
2171
+ { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0db, 0xff), /* Foxconn T99W265 MBIM */
2172
+ .driver_info = RSVD(3) },
20892173 { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */
20902174 .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
2175
+ { USB_DEVICE(0x1782, 0x4d10) }, /* Fibocom L610 (AT mode) */
2176
+ { USB_DEVICE_INTERFACE_CLASS(0x1782, 0x4d11, 0xff) }, /* Fibocom L610 (ECM/RNDIS mode) */
20912177 { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
20922178 .driver_info = RSVD(4) | RSVD(5) },
20932179 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
20942180 .driver_info = RSVD(6) },
2181
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0106, 0xff) }, /* Fibocom MA510 (ECM mode w/ diag intf.) */
2182
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x010a, 0xff) }, /* Fibocom MA510 (ECM mode) */
2183
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */
2184
+ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */
2185
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0111, 0xff) }, /* Fibocom FM160 (MBIM mode) */
20952186 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
2187
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */
2188
+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */
2189
+ .driver_info = RSVD(4) },
20962190 { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */
20972191 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
20982192 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
20992193 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */
2194
+ { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) },
2195
+ { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) },
2196
+ { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0, 0) },
21002197 { } /* Terminating entry */
21012198 };
21022199 MODULE_DEVICE_TABLE(usb, option_ids);
....@@ -2122,7 +2219,8 @@
21222219 .chars_in_buffer = usb_wwan_chars_in_buffer,
21232220 .tiocmget = usb_wwan_tiocmget,
21242221 .tiocmset = usb_wwan_tiocmset,
2125
- .ioctl = usb_wwan_ioctl,
2222
+ .get_serial = usb_wwan_get_serial_info,
2223
+ .set_serial = usb_wwan_set_serial_info,
21262224 .attach = option_attach,
21272225 .release = option_release,
21282226 .port_probe = usb_wwan_port_probe,
....@@ -2131,9 +2229,6 @@
21312229 #ifdef CONFIG_PM
21322230 .suspend = usb_wwan_suspend,
21332231 .resume = usb_wwan_resume,
2134
-#if 1 //Added by Quectel
2135
- .reset_resume = usb_wwan_resume,
2136
-#endif
21372232 #endif
21382233 };
21392234
....@@ -2157,101 +2252,6 @@
21572252 struct usb_interface_descriptor *iface_desc =
21582253 &serial->interface->cur_altsetting->desc;
21592254 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
22552255
22562256 /* Never bind to the CD-Rom emulation interface */
22572257 if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE)
....@@ -2333,8 +2333,7 @@
23332333 dev_dbg(dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata);
23342334
23352335 if (status == 0) {
2336
- struct usb_ctrlrequest *req_pkt =
2337
- (struct usb_ctrlrequest *)urb->transfer_buffer;
2336
+ struct usb_ctrlrequest *req_pkt = urb->transfer_buffer;
23382337
23392338 if (!req_pkt) {
23402339 dev_dbg(dev, "%s: NULL req_pkt\n", __func__);