| .. | .. |
|---|
| 162 | 162 | #define NOVATELWIRELESS_PRODUCT_G2 0xA010 |
|---|
| 163 | 163 | #define NOVATELWIRELESS_PRODUCT_MC551 0xB001 |
|---|
| 164 | 164 | |
|---|
| 165 | +#define UBLOX_VENDOR_ID 0x1546 |
|---|
| 166 | + |
|---|
| 165 | 167 | /* AMOI PRODUCTS */ |
|---|
| 166 | 168 | #define AMOI_VENDOR_ID 0x1614 |
|---|
| 167 | 169 | #define AMOI_PRODUCT_H01 0x0800 |
|---|
| .. | .. |
|---|
| 198 | 200 | |
|---|
| 199 | 201 | #define DELL_PRODUCT_5821E 0x81d7 |
|---|
| 200 | 202 | #define DELL_PRODUCT_5821E_ESIM 0x81e0 |
|---|
| 203 | +#define DELL_PRODUCT_5829E_ESIM 0x81e4 |
|---|
| 204 | +#define DELL_PRODUCT_5829E 0x81e6 |
|---|
| 201 | 205 | |
|---|
| 202 | 206 | #define KYOCERA_VENDOR_ID 0x0c88 |
|---|
| 203 | 207 | #define KYOCERA_PRODUCT_KPC650 0x17da |
|---|
| .. | .. |
|---|
| 244 | 248 | #define QUECTEL_VENDOR_ID 0x2c7c |
|---|
| 245 | 249 | /* These Quectel products use Quectel's vendor ID */ |
|---|
| 246 | 250 | #define QUECTEL_PRODUCT_EC21 0x0121 |
|---|
| 251 | +#define QUECTEL_PRODUCT_EM061K_LTA 0x0123 |
|---|
| 252 | +#define QUECTEL_PRODUCT_EM061K_LMS 0x0124 |
|---|
| 247 | 253 | #define QUECTEL_PRODUCT_EC25 0x0125 |
|---|
| 254 | +#define QUECTEL_PRODUCT_EM060K_128 0x0128 |
|---|
| 255 | +#define QUECTEL_PRODUCT_EG91 0x0191 |
|---|
| 248 | 256 | #define QUECTEL_PRODUCT_EG95 0x0195 |
|---|
| 249 | 257 | #define QUECTEL_PRODUCT_BG96 0x0296 |
|---|
| 250 | 258 | #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 |
|---|
| 251 | 268 | #define QUECTEL_PRODUCT_EM12 0x0512 |
|---|
| 252 | 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 |
|---|
| 253 | 276 | #define QUECTEL_PRODUCT_EC200T 0x6026 |
|---|
| 277 | +#define QUECTEL_PRODUCT_RM500K 0x7001 |
|---|
| 254 | 278 | |
|---|
| 255 | 279 | #define CMOTECH_VENDOR_ID 0x16d8 |
|---|
| 256 | 280 | #define CMOTECH_PRODUCT_6001 0x6001 |
|---|
| .. | .. |
|---|
| 385 | 409 | #define LONGCHEER_VENDOR_ID 0x1c9e |
|---|
| 386 | 410 | |
|---|
| 387 | 411 | /* 4G Systems products */ |
|---|
| 412 | +/* This one was sold as the VW and Skoda "Carstick LTE" */ |
|---|
| 413 | +#define FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE 0x7605 |
|---|
| 388 | 414 | /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick * |
|---|
| 389 | 415 | * It seems to contain a Qualcomm QSC6240/6290 chipset */ |
|---|
| 390 | 416 | #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603 |
|---|
| .. | .. |
|---|
| 425 | 451 | #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084 |
|---|
| 426 | 452 | #define CINTERION_PRODUCT_AHXX_AUDIO 0x0085 |
|---|
| 427 | 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 |
|---|
| 428 | 462 | |
|---|
| 429 | 463 | /* Olivetti products */ |
|---|
| 430 | 464 | #define OLIVETTI_VENDOR_ID 0x0b3c |
|---|
| .. | .. |
|---|
| 560 | 594 | #define WETELECOM_PRODUCT_6802 0x6802 |
|---|
| 561 | 595 | #define WETELECOM_PRODUCT_WMD300 0x6803 |
|---|
| 562 | 596 | |
|---|
| 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 |
|---|
| 563 | 609 | |
|---|
| 564 | 610 | /* Device flags */ |
|---|
| 565 | 611 | |
|---|
| .. | .. |
|---|
| 580 | 626 | |
|---|
| 581 | 627 | |
|---|
| 582 | 628 | 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) }, |
|---|
| 617 | 629 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, |
|---|
| 618 | 630 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, |
|---|
| 619 | 631 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) }, |
|---|
| .. | .. |
|---|
| 1092 | 1104 | .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, |
|---|
| 1093 | 1105 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E_ESIM), |
|---|
| 1094 | 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) }, |
|---|
| 1095 | 1111 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */ |
|---|
| 1096 | 1112 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, |
|---|
| 1097 | 1113 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) }, |
|---|
| .. | .. |
|---|
| 1133 | 1149 | /* u-blox products using Qualcomm vendor ID */ |
|---|
| 1134 | 1150 | { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M), |
|---|
| 1135 | 1151 | .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) }, |
|---|
| 1136 | 1166 | /* Quectel products using Quectel vendor ID */ |
|---|
| 1137 | 1167 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff), |
|---|
| 1138 | 1168 | .driver_info = NUMEP2 }, |
|---|
| .. | .. |
|---|
| 1140 | 1170 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff), |
|---|
| 1141 | 1171 | .driver_info = NUMEP2 }, |
|---|
| 1142 | 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) }, |
|---|
| 1143 | 1176 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff), |
|---|
| 1144 | 1177 | .driver_info = NUMEP2 }, |
|---|
| 1145 | 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 }, |
|---|
| 1146 | 1181 | { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), |
|---|
| 1147 | 1182 | .driver_info = RSVD(4) }, |
|---|
| 1148 | 1183 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff), |
|---|
| 1149 | 1184 | .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, |
|---|
| 1150 | 1185 | { 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) }, |
|---|
| 1151 | 1220 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff), |
|---|
| 1152 | 1221 | .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, |
|---|
| 1153 | 1222 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) }, |
|---|
| 1154 | 1223 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */ |
|---|
| 1155 | 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 }, |
|---|
| 1156 | 1227 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) }, |
|---|
| 1157 | 1228 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) }, |
|---|
| 1158 | 1229 | { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10), |
|---|
| 1159 | 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) }, |
|---|
| 1160 | 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) }, |
|---|
| 1161 | 1241 | |
|---|
| 1162 | 1242 | { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, |
|---|
| 1163 | 1243 | { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) }, |
|---|
| .. | .. |
|---|
| 1232 | 1312 | .driver_info = NCTRL(2) | RSVD(3) }, |
|---|
| 1233 | 1313 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */ |
|---|
| 1234 | 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) }, |
|---|
| 1235 | 1347 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), |
|---|
| 1236 | 1348 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, |
|---|
| 1237 | 1349 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM), |
|---|
| .. | .. |
|---|
| 1246 | 1358 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, |
|---|
| 1247 | 1359 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */ |
|---|
| 1248 | 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) }, |
|---|
| 1249 | 1363 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4), |
|---|
| 1250 | 1364 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, |
|---|
| 1251 | 1365 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920), |
|---|
| .. | .. |
|---|
| 1264 | 1378 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, |
|---|
| 1265 | 1379 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */ |
|---|
| 1266 | 1380 | .driver_info = NCTRL(2) | RSVD(3) }, |
|---|
| 1381 | + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) }, /* Telit LE910Cx (rmnet) */ |
|---|
| 1267 | 1382 | { USB_DEVICE(TELIT_VENDOR_ID, 0x1260), |
|---|
| 1268 | 1383 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, |
|---|
| 1269 | 1384 | { USB_DEVICE(TELIT_VENDOR_ID, 0x1261), |
|---|
| .. | .. |
|---|
| 1272 | 1387 | .driver_info = NCTRL(0) | RSVD(1) }, |
|---|
| 1273 | 1388 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */ |
|---|
| 1274 | 1389 | .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) }, |
|---|
| 1275 | 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 */ |
|---|
| 1276 | 1403 | .driver_info = NCTRL(0) | ZLP }, |
|---|
| 1277 | 1404 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ |
|---|
| 1278 | 1405 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), |
|---|
| .. | .. |
|---|
| 1601 | 1728 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) }, |
|---|
| 1602 | 1729 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) }, |
|---|
| 1603 | 1730 | { 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) }, |
|---|
| 1605 | 1733 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) }, |
|---|
| 1606 | 1734 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) }, |
|---|
| 1607 | 1735 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) }, |
|---|
| .. | .. |
|---|
| 1645 | 1773 | .driver_info = RSVD(2) }, |
|---|
| 1646 | 1774 | { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x1476, 0xff) }, /* GosunCn ZTE WeLink ME3630 (ECM/NCM mode) */ |
|---|
| 1647 | 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) }, |
|---|
| 1648 | 1778 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) }, |
|---|
| 1649 | 1779 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) }, |
|---|
| 1650 | 1780 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) }, |
|---|
| .. | .. |
|---|
| 1672 | 1802 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) }, |
|---|
| 1673 | 1803 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) }, |
|---|
| 1674 | 1804 | { 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) }, |
|---|
| 1676 | 1805 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff), |
|---|
| 1677 | 1806 | .driver_info = RSVD(1) }, |
|---|
| 1678 | 1807 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff), |
|---|
| .. | .. |
|---|
| 1893 | 2022 | .driver_info = RSVD(2) }, |
|---|
| 1894 | 2023 | { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, |
|---|
| 1895 | 2024 | { 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) }, |
|---|
| 1896 | 2027 | { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), |
|---|
| 1897 | 2028 | .driver_info = NCTRL(0) | NCTRL(1) }, |
|---|
| 1898 | 2029 | { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100), |
|---|
| .. | .. |
|---|
| 1948 | 2079 | { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) }, |
|---|
| 1949 | 2080 | { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */ |
|---|
| 1950 | 2081 | { 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) }, |
|---|
| 1951 | 2098 | { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100), |
|---|
| 1952 | 2099 | .driver_info = RSVD(4) }, |
|---|
| 1953 | 2100 | { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120), |
|---|
| .. | .. |
|---|
| 2086 | 2233 | .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, |
|---|
| 2087 | 2234 | { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */ |
|---|
| 2088 | 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) }, |
|---|
| 2089 | 2242 | { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ |
|---|
| 2090 | 2243 | .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) */ |
|---|
| 2091 | 2246 | { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */ |
|---|
| 2092 | 2247 | .driver_info = RSVD(4) | RSVD(5) }, |
|---|
| 2093 | 2248 | { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ |
|---|
| 2094 | 2249 | .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) */ |
|---|
| 2095 | 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) }, |
|---|
| 2096 | 2259 | { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ |
|---|
| 2097 | 2260 | { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ |
|---|
| 2098 | 2261 | { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ |
|---|
| 2099 | 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) }, |
|---|
| 2100 | 2267 | { } /* Terminating entry */ |
|---|
| 2101 | 2268 | }; |
|---|
| 2102 | 2269 | MODULE_DEVICE_TABLE(usb, option_ids); |
|---|
| .. | .. |
|---|
| 2122 | 2289 | .chars_in_buffer = usb_wwan_chars_in_buffer, |
|---|
| 2123 | 2290 | .tiocmget = usb_wwan_tiocmget, |
|---|
| 2124 | 2291 | .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, |
|---|
| 2126 | 2294 | .attach = option_attach, |
|---|
| 2127 | 2295 | .release = option_release, |
|---|
| 2128 | 2296 | .port_probe = usb_wwan_port_probe, |
|---|
| .. | .. |
|---|
| 2131 | 2299 | #ifdef CONFIG_PM |
|---|
| 2132 | 2300 | .suspend = usb_wwan_suspend, |
|---|
| 2133 | 2301 | .resume = usb_wwan_resume, |
|---|
| 2134 | | -#if 1 //Added by Quectel |
|---|
| 2135 | | - .reset_resume = usb_wwan_resume, |
|---|
| 2136 | | -#endif |
|---|
| 2137 | 2302 | #endif |
|---|
| 2138 | 2303 | }; |
|---|
| 2139 | 2304 | |
|---|
| .. | .. |
|---|
| 2157 | 2322 | struct usb_interface_descriptor *iface_desc = |
|---|
| 2158 | 2323 | &serial->interface->cur_altsetting->desc; |
|---|
| 2159 | 2324 | 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 |
|---|
| 2255 | 2325 | |
|---|
| 2256 | 2326 | /* Never bind to the CD-Rom emulation interface */ |
|---|
| 2257 | 2327 | if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE) |
|---|
| .. | .. |
|---|
| 2333 | 2403 | dev_dbg(dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata); |
|---|
| 2334 | 2404 | |
|---|
| 2335 | 2405 | 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; |
|---|
| 2338 | 2407 | |
|---|
| 2339 | 2408 | if (!req_pkt) { |
|---|
| 2340 | 2409 | dev_dbg(dev, "%s: NULL req_pkt\n", __func__); |
|---|