summaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/qcserial.c
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2013-03-13 15:58:18 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-13 16:50:42 +0100
commit3f8bc5e4da29c7e05edeca6b475abb4fb01a5a13 (patch)
treee7da7045c6333c169cb784ab54108621832b9d7a /drivers/usb/serial/qcserial.c
parentUSB: cdc-wdm: fix buffer overflow (diff)
downloadlinux-3f8bc5e4da29c7e05edeca6b475abb4fb01a5a13.tar.xz
linux-3f8bc5e4da29c7e05edeca6b475abb4fb01a5a13.zip
qcserial: bind to DM/DIAG port on Gobi 1K devices
Turns out we just need altsetting 1 and then we can talk to it. Signed-off-by: Dan Williams <dcbw@redhat.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial/qcserial.c')
-rw-r--r--drivers/usb/serial/qcserial.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
index 24662547dc5b..59b32b782126 100644
--- a/drivers/usb/serial/qcserial.c
+++ b/drivers/usb/serial/qcserial.c
@@ -197,12 +197,15 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
if (is_gobi1k) {
/* Gobi 1K USB layout:
- * 0: serial port (doesn't respond)
+ * 0: DM/DIAG (use libqcdm from ModemManager for communication)
* 1: serial port (doesn't respond)
* 2: AT-capable modem port
* 3: QMI/net
*/
- if (ifnum == 2)
+ if (ifnum == 0) {
+ dev_dbg(dev, "Gobi 1K DM/DIAG interface found\n");
+ altsetting = 1;
+ } else if (ifnum == 2)
dev_dbg(dev, "Modem port found\n");
else
altsetting = -1;