@@ -0,0 +1,47 @@
+--- qcserial.c.orig 2010-10-08 10:43:27.143101815 +0200
++++ qcserial.c 2010-10-10 19:33:28.078269933 +0200
+@@ -146,7 +146,22 @@
+ case 3:
+ case 4:
+ /* Composite mode */
+- if (ifnum == 2) {
++ /* ifnum == 0 is a broadband network adapter */
++ if (ifnum == 1) {
++ /*
++ * Diagnostics Monitor (serial line 9600 8N1)
++ * Qualcomm DM protocol
++ * use "libqcdm" (ModemManager) for communication
++ */
++ dbg("Diagnostics Monitor found");
++ retval = usb_set_interface(serial->dev, ifnum, 0);
++ if (retval < 0) {
++ dev_err(&serial->dev->dev,
++ "Could not set interface, error %d\n",
++ retval);
++ retval = -ENODEV;
++ }
++ } else if (ifnum == 2) {
+ dbg("Modem port found");
+ retval = usb_set_interface(serial->dev, ifnum, 0);
+ if (retval < 0) {
+@@ -156,6 +171,20 @@
+ retval = -ENODEV;
+ }
+ return retval;
++ } else if (ifnum==3) {
++ /*
++ * NMEA (serial line 9600 8N1)
++ * # echo "\$GPS_START" > /dev/ttyUSBx
++ * # echo "\$GPS_STOP" > /dev/ttyUSBx
++ */
++ dbg("NMEA GPS interface found");
++ retval = usb_set_interface(serial->dev, ifnum, 0);
++ if (retval < 0) {
++ dev_err(&serial->dev->dev,
++ "Could not set interface, error %d\n",
++ retval);
++ retval = -ENODEV;
++ }
+ }
+ break;
+
|