aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-12-27 09:21:31 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-12-27 09:21:31 -0500
commit66da16850ee6f37920c807c07ceed25b251bc639 (patch)
tree854c41cdf5eea3620fb7660c05e2b8a81a44eebe
parent76916b663e8dd6d651ae13d0cb76ac3c45d2685e (diff)
parentc6a36ad383559a60a249aa6016cebf3cb8b6c485 (diff)
Merge tag 'usb-serial-4.15-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-linus
Johan writes USB-serial fixes for v4.15-rc6 Here are some new device ids for ftdi_sio, option and qcserial. Note that the qcserial patch enables the SetControlLineState request (used to raise DTR/RTS) for the GPS interface of all devices using the Sierra Wireless layout. This was required for the Sierra Wireless EM7565 and has been tested using several other modems as well. All but the final commit have been in linux-next without any reported issues. Signed-off-by: Johan Hovold <johan@kernel.org>
-rw-r--r--drivers/usb/serial/ftdi_sio.c1
-rw-r--r--drivers/usb/serial/ftdi_sio_ids.h6
-rw-r--r--drivers/usb/serial/option.c17
-rw-r--r--drivers/usb/serial/qcserial.c3
4 files changed, 27 insertions, 0 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 1aba9105b369..fc68952c994a 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -1013,6 +1013,7 @@ static const struct usb_device_id id_table_combined[] = {
1013 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 1013 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1014 { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_BT_USB_PID) }, 1014 { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_BT_USB_PID) },
1015 { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_WL_USB_PID) }, 1015 { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_WL_USB_PID) },
1016 { USB_DEVICE(AIRBUS_DS_VID, AIRBUS_DS_P8GR) },
1016 { } /* Terminating entry */ 1017 { } /* Terminating entry */
1017}; 1018};
1018 1019
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index 4faa09fe308c..8b4ecd2bd297 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -915,6 +915,12 @@
915#define ICPDAS_I7563U_PID 0x0105 915#define ICPDAS_I7563U_PID 0x0105
916 916
917/* 917/*
918 * Airbus Defence and Space
919 */
920#define AIRBUS_DS_VID 0x1e8e /* Vendor ID */
921#define AIRBUS_DS_P8GR 0x6001 /* Tetra P8GR */
922
923/*
918 * RT Systems programming cables for various ham radios 924 * RT Systems programming cables for various ham radios
919 */ 925 */
920#define RTSYSTEMS_VID 0x2100 /* Vendor ID */ 926#define RTSYSTEMS_VID 0x2100 /* Vendor ID */
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 3b3513874cfd..b6320e3be429 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -233,6 +233,8 @@ static void option_instat_callback(struct urb *urb);
233/* These Quectel products use Qualcomm's vendor ID */ 233/* These Quectel products use Qualcomm's vendor ID */
234#define QUECTEL_PRODUCT_UC20 0x9003 234#define QUECTEL_PRODUCT_UC20 0x9003
235#define QUECTEL_PRODUCT_UC15 0x9090 235#define QUECTEL_PRODUCT_UC15 0x9090
236/* These Yuga products use Qualcomm's vendor ID */
237#define YUGA_PRODUCT_CLM920_NC5 0x9625
236 238
237#define QUECTEL_VENDOR_ID 0x2c7c 239#define QUECTEL_VENDOR_ID 0x2c7c
238/* These Quectel products use Quectel's vendor ID */ 240/* These Quectel products use Quectel's vendor ID */
@@ -280,6 +282,7 @@ static void option_instat_callback(struct urb *urb);
280#define TELIT_PRODUCT_LE922_USBCFG3 0x1043 282#define TELIT_PRODUCT_LE922_USBCFG3 0x1043
281#define TELIT_PRODUCT_LE922_USBCFG5 0x1045 283#define TELIT_PRODUCT_LE922_USBCFG5 0x1045
282#define TELIT_PRODUCT_ME910 0x1100 284#define TELIT_PRODUCT_ME910 0x1100
285#define TELIT_PRODUCT_ME910_DUAL_MODEM 0x1101
283#define TELIT_PRODUCT_LE920 0x1200 286#define TELIT_PRODUCT_LE920 0x1200
284#define TELIT_PRODUCT_LE910 0x1201 287#define TELIT_PRODUCT_LE910 0x1201
285#define TELIT_PRODUCT_LE910_USBCFG4 0x1206 288#define TELIT_PRODUCT_LE910_USBCFG4 0x1206
@@ -645,6 +648,11 @@ static const struct option_blacklist_info telit_me910_blacklist = {
645 .reserved = BIT(1) | BIT(3), 648 .reserved = BIT(1) | BIT(3),
646}; 649};
647 650
651static const struct option_blacklist_info telit_me910_dual_modem_blacklist = {
652 .sendsetup = BIT(0),
653 .reserved = BIT(3),
654};
655
648static const struct option_blacklist_info telit_le910_blacklist = { 656static const struct option_blacklist_info telit_le910_blacklist = {
649 .sendsetup = BIT(0), 657 .sendsetup = BIT(0),
650 .reserved = BIT(1) | BIT(2), 658 .reserved = BIT(1) | BIT(2),
@@ -674,6 +682,10 @@ static const struct option_blacklist_info cinterion_rmnet2_blacklist = {
674 .reserved = BIT(4) | BIT(5), 682 .reserved = BIT(4) | BIT(5),
675}; 683};
676 684
685static const struct option_blacklist_info yuga_clm920_nc5_blacklist = {
686 .reserved = BIT(1) | BIT(4),
687};
688
677static const struct usb_device_id option_ids[] = { 689static const struct usb_device_id option_ids[] = {
678 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, 690 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
679 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, 691 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -1178,6 +1190,9 @@ static const struct usb_device_id option_ids[] = {
1178 { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)}, 1190 { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
1179 { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20), 1191 { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
1180 .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, 1192 .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1193 /* Yuga products use Qualcomm vendor ID */
1194 { USB_DEVICE(QUALCOMM_VENDOR_ID, YUGA_PRODUCT_CLM920_NC5),
1195 .driver_info = (kernel_ulong_t)&yuga_clm920_nc5_blacklist },
1181 /* Quectel products using Quectel vendor ID */ 1196 /* Quectel products using Quectel vendor ID */
1182 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21), 1197 { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21),
1183 .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, 1198 .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
@@ -1244,6 +1259,8 @@ static const struct usb_device_id option_ids[] = {
1244 .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 }, 1259 .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 },
1245 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), 1260 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
1246 .driver_info = (kernel_ulong_t)&telit_me910_blacklist }, 1261 .driver_info = (kernel_ulong_t)&telit_me910_blacklist },
1262 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
1263 .driver_info = (kernel_ulong_t)&telit_me910_dual_modem_blacklist },
1247 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910), 1264 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910),
1248 .driver_info = (kernel_ulong_t)&telit_le910_blacklist }, 1265 .driver_info = (kernel_ulong_t)&telit_le910_blacklist },
1249 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4), 1266 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
index e3892541a489..613f91add03d 100644
--- a/drivers/usb/serial/qcserial.c
+++ b/drivers/usb/serial/qcserial.c
@@ -162,6 +162,8 @@ static const struct usb_device_id id_table[] = {
162 {DEVICE_SWI(0x1199, 0x9079)}, /* Sierra Wireless EM74xx */ 162 {DEVICE_SWI(0x1199, 0x9079)}, /* Sierra Wireless EM74xx */
163 {DEVICE_SWI(0x1199, 0x907a)}, /* Sierra Wireless EM74xx QDL */ 163 {DEVICE_SWI(0x1199, 0x907a)}, /* Sierra Wireless EM74xx QDL */
164 {DEVICE_SWI(0x1199, 0x907b)}, /* Sierra Wireless EM74xx */ 164 {DEVICE_SWI(0x1199, 0x907b)}, /* Sierra Wireless EM74xx */
165 {DEVICE_SWI(0x1199, 0x9090)}, /* Sierra Wireless EM7565 QDL */
166 {DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */
165 {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */ 167 {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */
166 {DEVICE_SWI(0x413c, 0x81a3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */ 168 {DEVICE_SWI(0x413c, 0x81a3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */
167 {DEVICE_SWI(0x413c, 0x81a4)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */ 169 {DEVICE_SWI(0x413c, 0x81a4)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */
@@ -342,6 +344,7 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
342 break; 344 break;
343 case 2: 345 case 2:
344 dev_dbg(dev, "NMEA GPS interface found\n"); 346 dev_dbg(dev, "NMEA GPS interface found\n");
347 sendsetup = true;
345 break; 348 break;
346 case 3: 349 case 3:
347 dev_dbg(dev, "Modem port found\n"); 350 dev_dbg(dev, "Modem port found\n");