diff options
author | Andrey Skvortsov <andrej.skvortzov@gmail.com> | 2016-01-28 16:07:30 -0500 |
---|---|---|
committer | Johan Hovold <johan@kernel.org> | 2016-02-18 06:50:05 -0500 |
commit | 3158a8d416f4e1b79dcc867d67cb50013140772c (patch) | |
tree | 646a30409be7462f92b7310f847b11bc2711b3c2 | |
parent | 18558cae0272f8fd9647e69d3fec1565a7949865 (diff) |
USB: option: add support for SIM7100E
$ lsusb:
Bus 001 Device 101: ID 1e0e:9001 Qualcomm / Option
$ usb-devices:
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=101 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 2
P: Vendor=1e0e ProdID=9001 Rev= 2.32
S: Manufacturer=SimTech, Incorporated
S: Product=SimTech, Incorporated
S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
The last interface (6) is used for Android Composite ADB interface.
Serial port layout:
0: QCDM/DIAG
1: NMEA
2: AT
3: AT/PPP
4: audio
Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
-rw-r--r-- | drivers/usb/serial/option.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index db86e512e0fc..e7eb08d56bae 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -315,6 +315,7 @@ static void option_instat_callback(struct urb *urb); | |||
315 | #define TOSHIBA_PRODUCT_G450 0x0d45 | 315 | #define TOSHIBA_PRODUCT_G450 0x0d45 |
316 | 316 | ||
317 | #define ALINK_VENDOR_ID 0x1e0e | 317 | #define ALINK_VENDOR_ID 0x1e0e |
318 | #define SIMCOM_PRODUCT_SIM7100E 0x9001 /* Yes, ALINK_VENDOR_ID */ | ||
318 | #define ALINK_PRODUCT_PH300 0x9100 | 319 | #define ALINK_PRODUCT_PH300 0x9100 |
319 | #define ALINK_PRODUCT_3GU 0x9200 | 320 | #define ALINK_PRODUCT_3GU 0x9200 |
320 | 321 | ||
@@ -607,6 +608,10 @@ static const struct option_blacklist_info zte_1255_blacklist = { | |||
607 | .reserved = BIT(3) | BIT(4), | 608 | .reserved = BIT(3) | BIT(4), |
608 | }; | 609 | }; |
609 | 610 | ||
611 | static const struct option_blacklist_info simcom_sim7100e_blacklist = { | ||
612 | .reserved = BIT(5) | BIT(6), | ||
613 | }; | ||
614 | |||
610 | static const struct option_blacklist_info telit_le910_blacklist = { | 615 | static const struct option_blacklist_info telit_le910_blacklist = { |
611 | .sendsetup = BIT(0), | 616 | .sendsetup = BIT(0), |
612 | .reserved = BIT(1) | BIT(2), | 617 | .reserved = BIT(1) | BIT(2), |
@@ -1645,6 +1650,8 @@ static const struct usb_device_id option_ids[] = { | |||
1645 | { USB_DEVICE(ALINK_VENDOR_ID, 0x9000) }, | 1650 | { USB_DEVICE(ALINK_VENDOR_ID, 0x9000) }, |
1646 | { USB_DEVICE(ALINK_VENDOR_ID, ALINK_PRODUCT_PH300) }, | 1651 | { USB_DEVICE(ALINK_VENDOR_ID, ALINK_PRODUCT_PH300) }, |
1647 | { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, | 1652 | { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, |
1653 | { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E), | ||
1654 | .driver_info = (kernel_ulong_t)&simcom_sim7100e_blacklist }, | ||
1648 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), | 1655 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), |
1649 | .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist | 1656 | .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist |
1650 | }, | 1657 | }, |