--- /dev/null
+From bjorn@mork.no Thu Sep 27 16:54:06 2012
+From: Bjørn Mork <bjorn@mork.no>
+Date: Thu, 23 Aug 2012 12:13:57 +0200
+Subject: net: qmi_wwan: add Sierra Wireless devices
+To: stable@vger.kernel.org
+Cc: Bjørn Mork <bjorn@mork.no>, David Miller <davem@davemloft.net>
+Message-ID: <1345716838-24023-7-git-send-email-bjorn@mork.no>
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit 9b469a60d68b13c288d5c3fc23de29d9d482dbe6 upstream.
+
+Add 6 new devices and one modified device, based on
+information from laptop vendor Windows drivers.
+
+Sony provides a driver with two new devices using
+a Gobi 2k+ layout (1199:68a5 and 1199:68a9). The
+Sony driver also adds a non-standard QMI/net
+interface to the already supported 1199:9011
+Gobi device. We do not know whether this is an
+alternate interface number or an additional
+interface which might be present, but that doesn't
+really matter.
+
+Lenovo provides a driver supporting 4 new devices:
+ - MC7770 (1199:901b) with standard Gobi 2k+ layout
+ - MC7700 (0f3d:68a2) with layout similar to MC7710
+ - MC7750 (114f:68a2) with layout similar to MC7710
+ - EM7700 (1199:901c) with layout similar to MC7710
+
+Note regaring the three devices similar to MC7710:
+
+The Windows drivers only support interface #8 on these
+devices. The MC7710 can support QMI/net functions on
+interface #19 and #20 as well, and this driver is
+verified to work on interface #19 (a firmware bug is
+suspected to prevent #20 from working).
+
+We do not enable these additional interfaces until they
+either show up in a Windows driver or are verified to
+work in some other way. Therefore limiting the new
+devices to interface #8 for now.
+
+[bmork: backported to 3.4: use driver whitelisting]
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+for stable: v3.4 and v3.5
+
+ drivers/net/usb/qmi_wwan.c | 31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+--- a/drivers/net/usb/qmi_wwan.c
++++ b/drivers/net/usb/qmi_wwan.c
+@@ -534,6 +534,33 @@ static const struct usb_device_id produc
+ .bInterfaceProtocol = 0xff,
+ .driver_info = (unsigned long)&qmi_wwan_sierra,
+ },
++ { /* Sierra Wireless MC7700 */
++ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x0f3d,
++ .idProduct = 0x68a2,
++ .bInterfaceClass = 0xff,
++ .bInterfaceSubClass = 0xff,
++ .bInterfaceProtocol = 0xff,
++ .driver_info = (unsigned long)&qmi_wwan_sierra,
++ },
++ { /* Sierra Wireless MC7750 */
++ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x114f,
++ .idProduct = 0x68a2,
++ .bInterfaceClass = 0xff,
++ .bInterfaceSubClass = 0xff,
++ .bInterfaceProtocol = 0xff,
++ .driver_info = (unsigned long)&qmi_wwan_sierra,
++ },
++ { /* Sierra Wireless EM7700 */
++ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x1199,
++ .idProduct = 0x901c,
++ .bInterfaceClass = 0xff,
++ .bInterfaceSubClass = 0xff,
++ .bInterfaceProtocol = 0xff,
++ .driver_info = (unsigned long)&qmi_wwan_sierra,
++ },
+
+ /* Gobi 1000 devices */
+ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
+@@ -561,6 +588,8 @@ static const struct usb_device_id produc
+ {QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
+ {QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
+ {QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */
++ {QMI_GOBI_DEVICE(0x1199, 0x68a5)}, /* Sierra Wireless Modem */
++ {QMI_GOBI_DEVICE(0x1199, 0x68a9)}, /* Sierra Wireless Modem */
+ {QMI_GOBI_DEVICE(0x1199, 0x9001)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
+ {QMI_GOBI_DEVICE(0x1199, 0x9002)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
+ {QMI_GOBI_DEVICE(0x1199, 0x9003)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
+@@ -577,6 +606,8 @@ static const struct usb_device_id produc
+ {QMI_GOBI_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */
+ {QMI_GOBI_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */
+ {QMI_GOBI_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */
++ {QMI_GOBI_DEVICE(0x1199, 0x901b)}, /* Sierra Wireless MC7770 */
++
+ { } /* END */
+ };
+ MODULE_DEVICE_TABLE(usb, products);
--- /dev/null
+From bjorn@mork.no Thu Sep 27 16:55:03 2012
+From: Bjørn Mork <bjorn@mork.no>
+Date: Thu, 23 Aug 2012 12:13:58 +0200
+Subject: net: qmi_wwan: new devices: UML290 and K5006-Z
+To: stable@vger.kernel.org
+Cc: Bjørn Mork <bjorn@mork.no>, David Miller <davem@davemloft.net>, Dan Williams <dcbw@redhat.com>, Thomas Schäfer <tschaefer@t-online.de>
+Message-ID: <1345716838-24023-8-git-send-email-bjorn@mork.no>
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit 10cbc1d97a7c7f9ae862fffe27b771ef0da9c461 upstream.
+
+Newer firmware versions for the Pantech UML290 use a different
+subclass ID. The Windows driver match on both IDs, so we do
+that as well.
+
+The ZTE (Vodafone) K5006-Z is a new device.
+
+Cc: Dan Williams <dcbw@redhat.com>
+Cc: Thomas Schäfer <tschaefer@t-online.de>
+[bmork: backported to 3.4: use driver whitelisting]
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+for stable: v3.4 and v3.5
+
+ drivers/net/usb/qmi_wwan.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+--- a/drivers/net/usb/qmi_wwan.c
++++ b/drivers/net/usb/qmi_wwan.c
+@@ -444,6 +444,15 @@ static const struct usb_device_id produc
+ .bInterfaceProtocol = 0xff,
+ .driver_info = (unsigned long)&qmi_wwan_shared,
+ },
++ { /* Pantech UML290 - newer firmware */
++ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x106c,
++ .idProduct = 0x3718,
++ .bInterfaceClass = 0xff,
++ .bInterfaceSubClass = 0xf1,
++ .bInterfaceProtocol = 0xff,
++ .driver_info = (unsigned long)&qmi_wwan_shared,
++ },
+ { /* ZTE MF820D */
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x19d2,
+@@ -516,6 +525,15 @@ static const struct usb_device_id produc
+ .bInterfaceProtocol = 0xff,
+ .driver_info = (unsigned long)&qmi_wwan_force_int4,
+ },
++ { /* ZTE (Vodafone) K5006-Z */
++ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x19d2,
++ .idProduct = 0x1018,
++ .bInterfaceClass = 0xff,
++ .bInterfaceSubClass = 0xff,
++ .bInterfaceProtocol = 0xff,
++ .driver_info = (unsigned long)&qmi_wwan_force_int3,
++ },
+ { /* ZTE MF60 */
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x19d2,