/*
USB Driver for GSM modems
Copyright (C) 2005 Matthias Urlichs <smurf@smurf.noris.de>
This driver is free software; you can redistribute it and/or modify
it under the terms of Version 2 of the GNU General Public License as
published by the Free Software Foundation.
Portions copied from the Keyspan driver by Hugh Blemings <hugh@blemings.org>
History: see the git log.
Work sponsored by: Sigos GmbH, Germany <info@sigos.de>
This driver exists because the "normal" serial driver doesn't work too well
with GSM modems. Issues:
- data loss -- one single Receive URB is not nearly enough
- nonstandard flow (Option devices) control
- controlling the baud rate doesn't make sense
This driver is named "option" because the most common device it's
used for is a PC-Card (with an internal OHCI-USB interface, behind
which the GSM interface sits), made by Option Inc.
Some of the "one port" devices actually exhibit multiple USB instances
on the USB bus. This is not a bug, these ports are used for different
device features.
*/
#define DRIVER_AUTHOR "Matthias Urlichs <smurf@smurf.noris.de>"
#define DRIVER_DESC "USB Driver for GSM modems"
#include <linux/kernel.h>
#include <linux/jiffies.h>
#include <linux/errno.h>
#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/bitops.h>
#include <linux/usb.h>
#include <linux/usb/serial.h>
#include "usb-wwan.h"
/* Function prototypes */
static int option_probe(struct usb_serial *serial,
const struct usb_device_id *id);
static int option_attach(struct usb_serial *serial);
static void option_release(struct usb_serial *serial);
static int option_send_setup(struct usb_serial_port *port);
static void option_instat_callback(struct urb *urb);
/* Vendor and product IDs */
#define OPTION_VENDOR_ID 0x0AF0
#define OPTION_PRODUCT_COLT 0x5000
#define OPTION_PRODUCT_RICOLA 0x6000
#define OPTION_PRODUCT_RICOLA_LIGHT 0x6100
#define OPTION_PRODUCT_RICOLA_QUAD 0x6200
#define OPTION_PRODUCT_RICOLA_QUAD_LIGHT 0x6300
#define OPTION_PRODUCT_RICOLA_NDIS 0x6050
#define OPTION_PRODUCT_RICOLA_NDIS_LIGHT 0x6150
#define OPTION_PRODUCT_RICOLA_NDIS_QUAD 0x6250
#define OPTION_PRODUCT_RICOLA_NDIS_QUAD_LIGHT 0x6350
#define OPTION_PRODUCT_COBRA 0x6500
#define OPTION_PRODUCT_COBRA_BUS 0x6501
#define OPTION_PRODUCT_VIPER 0x6600
#define OPTION_PRODUCT_VIPER_BUS 0x6601
#define OPTION_PRODUCT_GT_MAX_READY 0x6701
#define OPTION_PRODUCT_FUJI_MODEM_LIGHT 0x6721
#define OPTION_PRODUCT_FUJI_MODEM_GT 0x6741
#define OPTION_PRODUCT_FUJI_MODEM_EX 0x6761
#define OPTION_PRODUCT_KOI_MODEM 0x6800
#define OPTION_PRODUCT_SCORPION_MODEM 0x6901
#define OPTION_PRODUCT_ETNA_MODEM 0x7001
#define OPTION_PRODUCT_ETNA_MODEM_LITE 0x7021
#define OPTION_PRODUCT_ETNA_MODEM_GT 0x7041
#define OPTION_PRODUCT_ETNA_MODEM_EX 0x7061
#define OPTION_PRODUCT_ETNA_KOI_MODEM 0x7100
#define OPTION_PRODUCT_GTM380_MODEM 0x7201
#define HUAWEI_VENDOR_ID 0x12D1
#define HUAWEI_PRODUCT_E173 0x140C
#define HUAWEI_PRODUCT_E1750 0x1406
#define HUAWEI_PRODUCT_K4505 0x1464
#define HUAWEI_PRODUCT_K3765 0x1465
#define HUAWEI_PRODUCT_K4605 0x14C6
#define HUAWEI_PRODUCT_E173S6 0x1C07
#define QUANTA_VENDOR_ID 0x0408
#define QUANTA_PRODUCT_Q101 0xEA02
#define QUANTA_PRODUCT_Q111 0xEA03
#define QUANTA_PRODUCT_GLX 0xEA04
#define QUANTA_PRODUCT_GKE 0xEA05
#define QUANTA_PRODUCT_GLE 0xEA06
#define NOVATELWIRELESS_VENDOR_ID 0x1410
/* YISO PRODUCTS */
#define YISO_VENDOR_ID 0x0EAB
#define YISO_PRODUCT_U893 0xC893
/*
* NOVATEL WIRELESS PRODUCTS
*
* Note from Novatel Wireless:
* If your Novatel modem does not work on linux, don't
* change the option module, but check our website. If
* that does not help, contact ddeschepper@nvtl.com
*/
/* MERLIN EVDO PRODUCTS */
#define NOVATELWIRELESS_PRODUCT_V640 0x1100
#define NOVATELWIRELESS_PRODUCT_V620 0x1110
#define NOVATELWIRELESS_PRODUCT_V740 0x1120
#define NOVATELWIRELESS_PRODUCT_V720 0x1130
/* MERLIN HSDPA/HSPA PRODUCTS */
#define NOVATELWIRELESS_PRODUCT_U730 0x1400
#define NOVATELWIRELESS_PRODUCT_U740 0x1410
#define NOVATELWIRELESS_PRODUCT_U870 0x1420
#define NOVATELWIRELESS_PRODUCT_XU870 0x1430
#define NOVATELWIRELESS_PRODUCT_X950D 0x1450
/* EXPEDITE PRODUCTS */
#define NOVATELWIRELESS_PRODUCT_EV620 0x2100
#define NOVATELWIRELESS_PRODUCT_ES720 0x2110
#define NOVATELWIRELESS_PRODUCT_E725 0x2120
#define NOVATELWIRELESS_PRODUCT_ES620 0x2130
#define NOVATELWIRELESS_PRODUCT_EU730 0x2400
#define NOVATELWIRELESS_PRODUCT_EU740 0x2410
#define NOVATELWIRELESS_PRODUCT_EU870D 0x2420
/* OVATION PRODUCTS */
#define NOVATELWIRELESS_PRODUCT_MC727 0x4100
#define NOVATELWIRELESS_PRODUCT_MC950D 0x4400
/*
* Note from Novatel Wireless:
* All PID in the 5xxx range are currently reserved for
* auto-install CDROMs, and should not be added to this
* module.
*
* #define NOVATELWIRELESS_PRODUCT_U727 0x5010
* #define NOVATELWIRELESS_PRODUCT_MC727_NEW 0x5100
*/
#define NOVATELWIRELESS_PRODUCT_OVMC760 0x6002
#define NOVATELWIRELESS_PRODUCT_MC780 0x6010
#define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED 0x6000
#define NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED 0x6001
#define NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED 0x7000
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED 0x7001
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED3 0x7003
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED4 0x7004
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED5 0x7005
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED6 0x7006
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED7 0x7007
#define NOVATELWIRELESS_PRODUCT_MC996D 0x7030
#define NOVATELWIRELESS_PRODUCT_MF3470 0x7041
#define NOVATELWIRELESS_PRODUCT_MC547 0x7042
#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED 0x8000
#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0x8001
#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0x9000
#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0x9001
#define NOVATELWIRELESS_PRODUCT_E362 0x9010
#define NOVATELWIRELESS_PRODUCT_E371 0x9011
#define NOVATELWIRELESS_PRODUCT_G2 0xA010
#define NOVATELWIRELESS_PRODUCT_MC551 0xB001
/* AMOI PRODUCTS */
#define AMOI_VENDOR_ID 0x1614
#define AMOI_PRODUCT_H01 0x0800
#define AMOI_PRODUCT_H01A 0x7002
#define AMOI_PRODUCT_H02 0x0802
#define AMOI_PRODUCT_SKYPEPHONE_S2 0x0407
#define DELL_VENDOR_ID 0x413C
/* Dell modems */
#define DELL_PRODUCT_5700_MINICARD 0x8114
#define DELL_PRODUCT_5500_MINICARD 0x8115
#define DELL_PRODUCT_5505_MINICARD 0x8116
#define DELL_PRODUCT_5700_EXPRESSCARD 0x8117
#define DELL_PRODUCT_5510_EXPRESSCARD 0x8118
#define DELL_PRODUCT_5700_MINICARD_SPRINT 0x8128
#define DELL_PRODUCT_5700_MINICARD_TELUS 0x8129
#define DELL_PRODUCT_5720_MINICARD_VZW 0x8133
#define DELL_PRODUCT_5720_MINICARD_SPRINT 0x8134
#define DELL_PRODUCT_5720_MINICARD_TELUS 0x8135
#define DELL_PRODUCT_5520_MINICARD_CINGULAR 0x8136
#define DELL_PRODUCT_5520_MINICARD_GENERIC_L 0x8137
#define DELL_PRODUCT_5520_MINICARD_GENERIC_I 0x8138
#define DELL_PRODUCT_5730_MINICARD_SPRINT 0x8180
#define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181
#define DELL_PRODUCT_5730_MINICARD_VZW 0x8182
#define DELL_PRODUCT_5800_MINICARD_VZW 0x8195 /* Novatel E362 */
#define DELL_PRODUCT_5800_V2_MINICARD_VZW 0x8196 /* Novatel E362 */
#define DELL_PRODUCT_5804_MINICARD_ATT 0x819b /* Novatel E371 */
#define KYOCERA_VENDOR_ID 0x0c88
#define KYOCERA_PRODUCT_KPC650 0x17da
#define KYOCERA_PRODUCT_KPC680 0x180a
#define ANYDATA_VENDOR_ID 0x16d5
#define ANYDATA_PRODUCT_ADU_620UW 0x6202
#define ANYDATA_PRODUCT_ADU_E100A 0x6501
#define ANYDATA_PRODUCT_ADU_500A 0x6502
#define AXESSTEL_VENDOR_ID 0x1726
#define AXESSTEL_PRODUCT_MV110H 0x1000
#define BANDRICH_VENDOR_ID 0x1A8D
#define BANDRICH_PRODUCT_C100_1 0x1002
#define BANDRICH_PRODUCT_C100_2 0x1003
#define BANDRICH_PRODUCT_1004 0x1004
#define BANDRICH_PRODUCT_1005 0x1005
#define BANDRICH_PRODUCT_1006 0x1006
#define BANDRICH_PRODUCT_1007
没有合适的资源?快使用搜索试试~ 我知道了~
Quectel_Linux_USB_Serial_Option_Driver_V1.0.zip
共1189个文件
c:321个
makefile:119个
h:102个
需积分: 50 19 下载量 102 浏览量
2020-11-20
10:02:13
上传
评论 1
收藏 4.41MB ZIP 举报
温馨提示
移远通讯4G模块的usb驱动源码option.c qcserial.c usb-wwan.h usb_wwan.c
资源推荐
资源详情
资源评论
收起资源包目录
Quectel_Linux_USB_Serial_Option_Driver_V1.0.zip (1189个子文件)
00e67f6676b3256f80700be2c65cd419483fb7 45B
01025a4c637176a0503e5c71a0079700fc7e9a 8KB
013b1ed997f5f753de43478c4d0f2aefe0c257 89B
014e2ecd68ef6fcdf0c6c9f5e0d15a8e046c41 5KB
024907043124adff31167408321cdd7edbdf0c 148B
02d8c0e264851800aa11beeba9e2faefc3ce39 149B
034d2397c6c6ea3888e79aa6cd2ddb6d73202b 791B
0364227bc207fdeefb10b1f2085d8c1642aa83 87B
0379d2821bb70e9e1288c1f459cb0859bf604d 86B
038670363d26a799ffbba54dde281bdf5f011a 48B
0436ec60e99cf0eae9e9ea7ddeaa7fe3120436 6KB
048d51a93f260457641970c9465fe47f9b6154 117B
04b0482a9947c676b5629353b789d2879bcc40 45B
04b1f6165a0ee797baced167dc0f4f9eea26b1 45B
0562b2a9282398298786b7c55356f43faa0170 49B
05dd3fc28d4e2da9735ce0beba8d5a0097606d 45B
06af0173ca2137d550a97077d8720c87a7be08 49B
06b10c9e6e174506b9b05431ee2a3519549025 3KB
071974e08766454324ef4cf0bb48c49790310d 48B
0824f4a67f412657120b6fe1afc9c0ee56ff22 149B
083bbabf875127ff69de4c309e9b6c6a797b7c 48B
08a25778d39ef9783e898fa6a4f2d480c2bee6 86B
0a542e8ec1820d60d03f5a7896843d4a6b96f6 4KB
0a651133af4300dab0e8c303ec5aefcf0de899 86B
0add59a4ec678be87df44c9e2eaec5db1bf6d0 148B
0afbbd3fca6c97b9e8c9400961b1583eca6c72 6KB
0b878d1c648500208571b90e29dfe8f1d3001c 148B
0cbac74a94109dc192118cd80fec1e2b26a1ad 46B
0cf536de186c0958582ce497a17426668edffa 5KB
0dfa3d2a3923d9ca9e92f99318a54ffd7d3e97 45B
0e3142c898fe95c5450737109ea54c7c1c9e69 48B
0e9e47680b74f6d0ed9cdfba8079523a90de10 45B
0f05357019b5d0cde6d1e5fa78145313a275f2 87B
0f8aed81df79bc5cea680f49b54a802c1ed189 45B
0fceefe5eea0a366534655ac9437453c62341c 48B
0fe0173236807c3178d53265da8588a01cb730 5KB
103f404b3cb2320aa75fe8b77f22d5a4797c83 13KB
1084f77caa1248731a316a860b4bea9afdc58f 46B
11f569aa1757e62fdac7394407331bb586f9b5 16KB
120eaf4091c05c4f279d5e703177a906074965 784B
12159223bf2209d602692230725ae1cd2ebc11 46B
123153b1a5439f016f2637d4f9d19f0fde3f14 16KB
124551fb56cacf50190ce9b10a7e1975701c46 16KB
12d2b0d14725ef2aeceb8d8a2e1567a7ac3ee1 87B
144b5c2a7ac2085a8de3b01d8deb92b918e9df 48B
145eb36e95eb8edba53d108238e9881674af97 45B
148c21ea40e82a6f49b58b855ed2278f53cf3a 3KB
1499d4cb7a0729d4cc7378250cb431a023dd8a 149B
15b70c4efc7893d7b60d633fc37cc999ae9ff5 16KB
15e6aae87dcaa8b1f1e827c12f6407ab14f5ec 46B
16000045b73dd632d41f1104c9696b8d715077 6KB
1667a4348e6b690efe61b2bdd48a273c98ee00 45B
16ad2ca8877b0cab87d6209aa57ebc54fbaf61 149B
17b82889ca5e56eeb0c63a01c9351cf1a02612 10KB
17cfd8dd7e64831195c7de4ada670f2e4493c1 49B
17fd7e1801f7647d909eeed86eb1eb9228c095 46B
18075e5eaebac0745452e47bfcc30ca14736db 15KB
185f53447b3f0b915807376dc99867509e755c 7KB
18c43a02eccfd829d2a8f97e3bf8cd8c9ea6c0 16KB
18e92661ffab6725882876c5dcb956c66d1abe 48B
1965aa1cc015257eaf4bde8316ce10045a82a0 5KB
19c8f585927fd4fce5d19399b1d093a9ddebd6 45B
19d2a9faf278177aacf32c149fda22b00a1d83 4KB
1a0b0f4b68011a1363b09da21426e3f640e760 148B
1a9883e8695e736434564b0a38a6b38e08f92c 5KB
1aca3a641e41af9ab0fd964bb980470a539e3d 53B
1c3dd0c5f54d4aa47141a6e1d9f26a65664148 282B
1c65f196a8b648d7de470de09881591c114575 49B
1cf587320e12ce7258887ed0a2e91438643407 46B
1dd7788c14b49b341d2169789e27ff3758b0e2 89B
1eff2ca8b6dbde77de0a4e84193eae0eb208bc 86B
1f217da0478fc2f27ef84487b2f2b85edf5660 48B
203e7cccbdd835841b836cced5ec50f2cc62ee 150B
206c18a97fae7dd2d79b99f45d60b5e42308f7 86B
20e423061131316cd12912b8a868b564f59485 149B
2123371510429bea9b1845481bcd73fc36ab51 48B
2182e00ebbdb06063c19b1260277f30903c9ec 48B
22175f108f60b63eab8f811b96d478054bf6b7 6KB
2241c6495549b8cad445648abbfd8118199713 149B
2314e94aba9548053001884763e6dd420c0fd6 86B
232ca73b440b7556b3306739e8a75f0ac58d7a 3KB
23b0180342d2f50dd1ddbef07b06e4ad4b72cb 86B
2409b3fd84f9eac814842f6652ff232a8e4478 45B
241a5c4268fd0c3bbd2fcd4b988189f9b3ebb1 49B
24260d0c3f71ada76760e53b036ff0cd10dfed 13KB
2472f26e4f6c5a9ad30357f7a47d9a3085a1d9 5KB
24751722a50a94f776197600ae8461aa351570 87B
24bec2a8da528b55965854bc2737d258db8a34 87B
2516de58bde0dca9f30b9f5922d071ef4b2a40 87B
256408757ffdf3a7f5cc3a832bf8b503c808c9 6KB
2588fbbd9a191e3fffbe5debf3e643cea61d79 86B
25f5631c56b571eb74c69281ac078a796f1560 87B
26c1a7bf11a88d28d2d5933d43a7c49d2f41e2 148B
280606b73c0c897d83d7738747b3d6f97a2c71 15KB
28b8d57f1cc9048001244f780524b8cca17690 2KB
28cb2e1a950ecc63c7a15a4bab59da1c1a87f9 86B
28f24fe8f992de27419a5939712e3c2f9e136e 89B
2977d3a613a441a7300ab37348fb99fa8f636c 10KB
2a2ccc44f6b37dc930538e03f4c29ca3f7a105 149B
2aaff487daf4a4b2aaa86cbf138d1de860def5 149B
共 1189 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
yqj1123
- 粉丝: 6
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功