USB: qcserial: fix port handling on Gobi 1K and 2K+
Bjorn's latest patchset does break Gobi 1K and 2K because on both devices as it claims usb interface 0. That's because usbif 0 is not handled in the switch statement, and thus the if0 gets claimed when it should not. So let's just make things even simpler yet, and handle both the 1K and 2K+ cases separately. This patch should not affect the new Sierra device support, because those devices are matched via interface-specific matching and thus should never hit the composite code. Signed-off-by: Dan Williams <dcbw@redhat.com> Tested-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3821bf4abb
commit
c54103d009
|
@ -199,43 +199,49 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
|
|||
|
||||
/* default to enabling interface */
|
||||
altsetting = 0;
|
||||
switch (ifnum) {
|
||||
/* Composite mode; don't bind to the QMI/net interface as that
|
||||
* gets handled by other drivers.
|
||||
*/
|
||||
|
||||
/* Composite mode; don't bind to the QMI/net interface as that
|
||||
* gets handled by other drivers.
|
||||
*/
|
||||
|
||||
if (is_gobi1k) {
|
||||
/* Gobi 1K USB layout:
|
||||
* 0: serial port (doesn't respond)
|
||||
* 1: serial port (doesn't respond)
|
||||
* 2: AT-capable modem port
|
||||
* 3: QMI/net
|
||||
*
|
||||
* Gobi 2K+ USB layout:
|
||||
*/
|
||||
if (ifnum == 2)
|
||||
dev_dbg(dev, "Modem port found\n");
|
||||
else
|
||||
altsetting = -1;
|
||||
} else {
|
||||
/* Gobi 2K+ USB layout:
|
||||
* 0: QMI/net
|
||||
* 1: DM/DIAG (use libqcdm from ModemManager for communication)
|
||||
* 2: AT-capable modem port
|
||||
* 3: NMEA
|
||||
*/
|
||||
|
||||
case 1:
|
||||
if (is_gobi1k)
|
||||
switch (ifnum) {
|
||||
case 0:
|
||||
/* Don't claim the QMI/net interface */
|
||||
altsetting = -1;
|
||||
else
|
||||
break;
|
||||
case 1:
|
||||
dev_dbg(dev, "Gobi 2K+ DM/DIAG interface found\n");
|
||||
break;
|
||||
case 2:
|
||||
dev_dbg(dev, "Modem port found\n");
|
||||
break;
|
||||
case 3:
|
||||
if (is_gobi1k)
|
||||
altsetting = -1;
|
||||
else
|
||||
break;
|
||||
case 2:
|
||||
dev_dbg(dev, "Modem port found\n");
|
||||
break;
|
||||
case 3:
|
||||
/*
|
||||
* NMEA (serial line 9600 8N1)
|
||||
* # echo "\$GPS_START" > /dev/ttyUSBx
|
||||
* # echo "\$GPS_STOP" > /dev/ttyUSBx
|
||||
*/
|
||||
dev_dbg(dev, "Gobi 2K+ NMEA GPS interface found\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
|
|
Loading…
Reference in New Issue