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
....@@ -240,22 +242,39 @@
240242 #define QUECTEL_PRODUCT_UC15 0x9090
241243 /* These u-blox products use Qualcomm's vendor ID */
242244 #define UBLOX_PRODUCT_R410M 0x90b2
243
-#define UBLOX_PRODUCT_R6XX 0x90fa
244245 /* These Yuga products use Qualcomm's vendor ID */
245246 #define YUGA_PRODUCT_CLM920_NC5 0x9625
246247
247248 #define QUECTEL_VENDOR_ID 0x2c7c
248249 /* These Quectel products use Quectel's vendor ID */
249250 #define QUECTEL_PRODUCT_EC21 0x0121
251
+#define QUECTEL_PRODUCT_EM061K_LTA 0x0123
252
+#define QUECTEL_PRODUCT_EM061K_LMS 0x0124
250253 #define QUECTEL_PRODUCT_EC25 0x0125
254
+#define QUECTEL_PRODUCT_EM060K_128 0x0128
251255 #define QUECTEL_PRODUCT_EG91 0x0191
252256 #define QUECTEL_PRODUCT_EG95 0x0195
253257 #define QUECTEL_PRODUCT_BG96 0x0296
254258 #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
255268 #define QUECTEL_PRODUCT_EM12 0x0512
256269 #define QUECTEL_PRODUCT_RM500Q 0x0800
270
+#define QUECTEL_PRODUCT_RM520N 0x0801
271
+#define QUECTEL_PRODUCT_EC200U 0x0901
257272 #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
258276 #define QUECTEL_PRODUCT_EC200T 0x6026
277
+#define QUECTEL_PRODUCT_RM500K 0x7001
259278
260279 #define CMOTECH_VENDOR_ID 0x16d8
261280 #define CMOTECH_PRODUCT_6001 0x6001
....@@ -390,6 +409,8 @@
390409 #define LONGCHEER_VENDOR_ID 0x1c9e
391410
392411 /* 4G Systems products */
412
+/* This one was sold as the VW and Skoda "Carstick LTE" */
413
+#define FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE 0x7605
393414 /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick *
394415 * It seems to contain a Qualcomm QSC6240/6290 chipset */
395416 #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603
....@@ -432,6 +453,12 @@
432453 #define CINTERION_PRODUCT_CLS8 0x00b0
433454 #define CINTERION_PRODUCT_MV31_MBIM 0x00b3
434455 #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
435462
436463 /* Olivetti products */
437464 #define OLIVETTI_VENDOR_ID 0x0b3c
....@@ -567,6 +594,18 @@
567594 #define WETELECOM_PRODUCT_6802 0x6802
568595 #define WETELECOM_PRODUCT_WMD300 0x6803
569596
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
570609
571610 /* Device flags */
572611
....@@ -587,7 +626,6 @@
587626
588627
589628 static const struct usb_device_id option_ids[] = {
590
- { USB_DEVICE(0x1286, 0x4e3c) },
591629 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
592630 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
593631 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
....@@ -1111,8 +1149,20 @@
11111149 /* u-blox products using Qualcomm vendor ID */
11121150 { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
11131151 .driver_info = RSVD(1) | RSVD(3) },
1114
- { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R6XX),
1152
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x908b), /* u-blox LARA-R6 00B */
1153
+ .driver_info = RSVD(4) },
1154
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x90fa),
11151155 .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) },
11161166 /* Quectel products using Quectel vendor ID */
11171167 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff),
11181168 .driver_info = NUMEP2 },
....@@ -1126,22 +1176,68 @@
11261176 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff),
11271177 .driver_info = NUMEP2 },
11281178 { 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 },
11291181 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
11301182 .driver_info = RSVD(4) },
11311183 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
11321184 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11331185 { 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) },
11341220 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff),
11351221 .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
11361222 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
11371223 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */
11381224 { 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 },
11391227 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) },
11401228 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
11411229 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
11421230 .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) },
11431238 { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
11441239 { 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) },
11451241
11461242 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
11471243 { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
....@@ -1218,6 +1314,10 @@
12181314 .driver_info = NCTRL(0) | RSVD(1) },
12191315 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1056, 0xff), /* Telit FD980 */
12201316 .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) },
12211321 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1060, 0xff), /* Telit LN920 (rmnet) */
12221322 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12231323 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1061, 0xff), /* Telit LN920 (MBIM) */
....@@ -1233,6 +1333,16 @@
12331333 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1072, 0xff), /* Telit FN990 (RNDIS) */
12341334 .driver_info = NCTRL(2) | RSVD(3) },
12351335 { 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) */
12361346 .driver_info = NCTRL(0) | RSVD(1) },
12371347 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
12381348 .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
....@@ -1268,6 +1378,7 @@
12681378 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12691379 { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */
12701380 .driver_info = NCTRL(2) | RSVD(3) },
1381
+ { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) }, /* Telit LE910Cx (rmnet) */
12711382 { USB_DEVICE(TELIT_VENDOR_ID, 0x1260),
12721383 .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
12731384 { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
....@@ -1911,6 +2022,8 @@
19112022 .driver_info = RSVD(2) },
19122023 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
19132024 { 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) },
19142027 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
19152028 .driver_info = NCTRL(0) | NCTRL(1) },
19162029 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100),
....@@ -1970,6 +2083,18 @@
19702083 .driver_info = RSVD(3)},
19712084 { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff),
19722085 .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) },
19732098 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
19742099 .driver_info = RSVD(4) },
19752100 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
....@@ -2110,14 +2235,23 @@
21102235 .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
21112236 { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0db, 0xff), /* Foxconn T99W265 MBIM */
21122237 .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) },
21132242 { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */
21142243 .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) */
21152246 { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
21162247 .driver_info = RSVD(4) | RSVD(5) },
21172248 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
21182249 .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) */
21192252 { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */
21202253 { 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) */
21212255 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
21222256 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */
21232257 { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */
....@@ -2126,6 +2260,10 @@
21262260 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
21272261 { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
21282262 { 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) },
21292267 { } /* Terminating entry */
21302268 };
21312269 MODULE_DEVICE_TABLE(usb, option_ids);
....@@ -2151,7 +2289,8 @@
21512289 .chars_in_buffer = usb_wwan_chars_in_buffer,
21522290 .tiocmget = usb_wwan_tiocmget,
21532291 .tiocmset = usb_wwan_tiocmset,
2154
- .ioctl = usb_wwan_ioctl,
2292
+ .get_serial = usb_wwan_get_serial_info,
2293
+ .set_serial = usb_wwan_set_serial_info,
21552294 .attach = option_attach,
21562295 .release = option_release,
21572296 .port_probe = usb_wwan_port_probe,
....@@ -2264,8 +2403,7 @@
22642403 dev_dbg(dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata);
22652404
22662405 if (status == 0) {
2267
- struct usb_ctrlrequest *req_pkt =
2268
- (struct usb_ctrlrequest *)urb->transfer_buffer;
2406
+ struct usb_ctrlrequest *req_pkt = urb->transfer_buffer;
22692407
22702408 if (!req_pkt) {
22712409 dev_dbg(dev, "%s: NULL req_pkt\n", __func__);