--- /dev/null
+From 63a901c06e3c2c45bd601916fe04e870e9ccae1e Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Thu, 7 Aug 2014 16:00:13 +0200
+Subject: Revert "USB: option,zte_ev: move most ZTE CDMA devices to zte_ev"
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 63a901c06e3c2c45bd601916fe04e870e9ccae1e upstream.
+
+This reverts commit 73228a0538a7 ("USB: option,zte_ev: move most ZTE
+CDMA devices to zte_ev").
+
+Move the IDs of the devices that were previously driven by the option
+driver back to that driver.
+
+As several users have reported, the zte_ev driver is causing random
+disconnects as well as reconnect failures.
+
+A closer analysis of the zte_ev setup code reveals that it consists of
+standard CDC requests (SET/GET_LINE_CODING and SET_CONTROL_LINE_STATE)
+but unfortunately fails to get some of those right. In particular, as
+reported by Liu Lei, it fails to lower DTR/RTS on close. It also appears
+that the control requests lack the interface argument.
+
+Note that the zte_ev driver is based on code (once) distributed by ZTE
+that still appears to originally have been reverse-engineered and bolted
+onto the generic driver.
+
+Since line control is already handled properly by the option driver, and
+the SET/GET_LINE_CODING requests appears to be redundant (amounts to a
+SET 9600 8N1), this is a first step in ultimately removing the redundant
+zte_ev driver.
+
+Note that AC2726 had already been moved back to option, and that some
+IDs were in the device table of both drivers prior to the commit being
+reverted.
+
+Reported-by: Lei Liu <liu.lei78@zte.com.cn>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 24 +++++++++++++++++++++---
+ drivers/usb/serial/zte_ev.c | 18 ------------------
+ 2 files changed, 21 insertions(+), 21 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -275,8 +275,12 @@ static void option_instat_callback(struc
+ #define ZTE_PRODUCT_MF622 0x0001
+ #define ZTE_PRODUCT_MF628 0x0015
+ #define ZTE_PRODUCT_MF626 0x0031
+-#define ZTE_PRODUCT_MC2718 0xffe8
+ #define ZTE_PRODUCT_AC2726 0xfff1
++#define ZTE_PRODUCT_CDMA_TECH 0xfffe
++#define ZTE_PRODUCT_AC8710T 0xffff
++#define ZTE_PRODUCT_MC2718 0xffe8
++#define ZTE_PRODUCT_AD3812 0xffeb
++#define ZTE_PRODUCT_MC2716 0xffed
+
+ #define BENQ_VENDOR_ID 0x04a5
+ #define BENQ_PRODUCT_H10 0x4068
+@@ -531,10 +535,18 @@ static const struct option_blacklist_inf
+ .reserved = BIT(4),
+ };
+
++static const struct option_blacklist_info zte_ad3812_z_blacklist = {
++ .sendsetup = BIT(0) | BIT(1) | BIT(2),
++};
++
+ static const struct option_blacklist_info zte_mc2718_z_blacklist = {
+ .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4),
+ };
+
++static const struct option_blacklist_info zte_mc2716_z_blacklist = {
++ .sendsetup = BIT(1) | BIT(2) | BIT(3),
++};
++
+ static const struct option_blacklist_info huawei_cdc12_blacklist = {
+ .reserved = BIT(1) | BIT(2),
+ };
+@@ -1074,6 +1086,7 @@ static const struct usb_device_id option
+ { USB_DEVICE_INTERFACE_CLASS(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_1012, 0xff) },
+ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) },
+ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
++ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */
+@@ -1548,13 +1561,18 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff93, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff94, 0xff, 0xff, 0xff) },
+
+- /* NOTE: most ZTE CDMA devices should be driven by zte_ev, not option */
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff),
+ .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist },
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff),
++ .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist },
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff),
++ .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist },
+ { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) },
+ { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) },
+ { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) },
+- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
+
+ { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
+ { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
+--- a/drivers/usb/serial/zte_ev.c
++++ b/drivers/usb/serial/zte_ev.c
+@@ -273,27 +273,9 @@ static void zte_ev_usb_serial_close(stru
+ }
+
+ static const struct usb_device_id id_table[] = {
+- /* AC8710, AC8710T */
+- { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffff, 0xff, 0xff, 0xff) },
+- /* AC8700 */
+- { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfffe, 0xff, 0xff, 0xff) },
+ /* MG880 */
+ { USB_DEVICE(0x19d2, 0xfffd) },
+- { USB_DEVICE(0x19d2, 0xfffc) },
+- { USB_DEVICE(0x19d2, 0xfffb) },
+- /* AC8710_V3 */
+- { USB_DEVICE(0x19d2, 0xfff6) },
+- { USB_DEVICE(0x19d2, 0xfff7) },
+- { USB_DEVICE(0x19d2, 0xfff8) },
+- { USB_DEVICE(0x19d2, 0xfff9) },
+- { USB_DEVICE(0x19d2, 0xffee) },
+- /* AC2716, MC2716 */
+- { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffed, 0xff, 0xff, 0xff) },
+- /* AD3812 */
+- { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffeb, 0xff, 0xff, 0xff) },
+- { USB_DEVICE(0x19d2, 0xffec) },
+ { USB_DEVICE(0x05C6, 0x3197) },
+- { USB_DEVICE(0x05C6, 0x6000) },
+ { USB_DEVICE(0x05C6, 0x9008) },
+ { },
+ };
xtensa-fix-access-to-thread_ra-thread_sp-thread_ds.patch
xtensa-fix-tlbtemp_base_2-region-handling-in-fast_second_level_miss.patch
xtensa-fix-a6-and-a7-handling-in-fast_syscall_xtensa.patch
+usb-serial-pl2303-add-device-id-for-ztek-device.patch
+usb-serial-fix-potential-stack-buffer-overflow.patch
+usb-sisusb-add-device-id-for-magic-control-usb-video.patch
+usb-serial-fix-potential-heap-buffer-overflow.patch
+usb-option-reduce-interrupt-urb-logging-verbosity.patch
+usb-option-add-via-telecom-cds7-chipset-device-id.patch
+revert-usb-option-zte_ev-move-most-zte-cdma-devices-to-zte_ev.patch
+usb-zte_ev-remove-duplicate-gobi-pid.patch
+usb-zte_ev-remove-duplicate-qualcom-pid.patch
--- /dev/null
+From d77302739d900bbca5e901a3b7ac48c907ee6c93 Mon Sep 17 00:00:00 2001
+From: Brennan Ashton <bashton@brennanashton.com>
+Date: Wed, 6 Aug 2014 08:46:44 -0700
+Subject: USB: option: add VIA Telecom CDS7 chipset device id
+
+From: Brennan Ashton <bashton@brennanashton.com>
+
+commit d77302739d900bbca5e901a3b7ac48c907ee6c93 upstream.
+
+This VIA Telecom baseband processor is used is used by by u-blox in both the
+FW2770 and FW2760 products and may be used in others as well.
+
+This patch has been tested on both of these modem versions.
+
+Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -494,6 +494,10 @@ static void option_instat_callback(struc
+ #define INOVIA_VENDOR_ID 0x20a6
+ #define INOVIA_SEW858 0x1105
+
++/* VIA Telecom */
++#define VIATELECOM_VENDOR_ID 0x15eb
++#define VIATELECOM_PRODUCT_CDS7 0x0001
++
+ /* some devices interfaces need special handling due to a number of reasons */
+ enum option_blacklist_reason {
+ OPTION_BLACKLIST_NONE = 0,
+@@ -1724,6 +1728,7 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
+ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */
+ { USB_DEVICE(INOVIA_VENDOR_ID, INOVIA_SEW858) },
++ { USB_DEVICE(VIATELECOM_VENDOR_ID, VIATELECOM_PRODUCT_CDS7) },
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
--- /dev/null
+From f0e4cba2534cd88476dff920727c81350130f3c5 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Tue, 29 Jul 2014 14:14:55 +0200
+Subject: USB: option: reduce interrupt-urb logging verbosity
+
+From: Johan Hovold <johan@kernel.org>
+
+commit f0e4cba2534cd88476dff920727c81350130f3c5 upstream.
+
+Do not log normal interrupt-urb shutdowns as errors.
+
+The option driver has always been logging any nonzero interrupt-urb
+status as an error, including when the urb is killed during normal
+operation.
+
+Commit 9096f1fbba91 ("USB: usb_wwan: fix potential NULL-deref at
+resume") moved the interrupt urb submission from port probe and release
+to open and close, thus potentially increasing the number of these
+false-positive error messages dramatically.
+
+Reported-by: Ed Butler <ressy66@ausics.net>
+Tested-by: Ed Butler <ressy66@ausics.net>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -1917,6 +1917,8 @@ static void option_instat_callback(struc
+ dev_dbg(dev, "%s: type %x req %x\n", __func__,
+ req_pkt->bRequestType, req_pkt->bRequest);
+ }
++ } else if (status == -ENOENT || status == -ESHUTDOWN) {
++ dev_dbg(dev, "%s: urb stopped: %d\n", __func__, status);
+ } else
+ dev_err(dev, "%s: error %d\n", __func__, status);
+
--- /dev/null
+From 5654699fb38512bdbfc0f892ce54fce75bdc2bab Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Wed, 27 Aug 2014 11:55:19 +0200
+Subject: USB: serial: fix potential heap buffer overflow
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 5654699fb38512bdbfc0f892ce54fce75bdc2bab upstream.
+
+Make sure to verify the number of ports requested by subdriver to avoid
+writing beyond the end of fixed-size array in interface data.
+
+The current usb-serial implementation is limited to eight ports per
+interface but failed to verify that the number of ports requested by a
+subdriver (which could have been determined from device descriptors) did
+not exceed this limit.
+
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/usb-serial.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -876,6 +876,11 @@ static int usb_serial_probe(struct usb_i
+ num_ports = type->num_ports;
+ }
+
++ if (num_ports > MAX_NUM_PORTS) {
++ dev_warn(ddev, "too many ports requested: %d\n", num_ports);
++ num_ports = MAX_NUM_PORTS;
++ }
++
+ serial->num_ports = num_ports;
+ serial->num_bulk_in = num_bulk_in;
+ serial->num_bulk_out = num_bulk_out;
--- /dev/null
+From d979e9f9ecab04c1ecca741370e30a8a498893f5 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Wed, 27 Aug 2014 11:55:18 +0200
+Subject: USB: serial: fix potential stack buffer overflow
+
+From: Johan Hovold <johan@kernel.org>
+
+commit d979e9f9ecab04c1ecca741370e30a8a498893f5 upstream.
+
+Make sure to verify the maximum number of endpoints per type to avoid
+writing beyond the end of a stack-allocated array.
+
+The current usb-serial implementation is limited to eight ports per
+interface but failed to verify that the number of endpoints of a certain
+type reported by a device did not exceed this limit.
+
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/usb-serial.c | 32 ++++++++++++++++++++++----------
+ 1 file changed, 22 insertions(+), 10 deletions(-)
+
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -778,29 +778,39 @@ static int usb_serial_probe(struct usb_i
+ if (usb_endpoint_is_bulk_in(endpoint)) {
+ /* we found a bulk in endpoint */
+ dev_dbg(ddev, "found bulk in on endpoint %d\n", i);
+- bulk_in_endpoint[num_bulk_in] = endpoint;
+- ++num_bulk_in;
++ if (num_bulk_in < MAX_NUM_PORTS) {
++ bulk_in_endpoint[num_bulk_in] = endpoint;
++ ++num_bulk_in;
++ }
+ }
+
+ if (usb_endpoint_is_bulk_out(endpoint)) {
+ /* we found a bulk out endpoint */
+ dev_dbg(ddev, "found bulk out on endpoint %d\n", i);
+- bulk_out_endpoint[num_bulk_out] = endpoint;
+- ++num_bulk_out;
++ if (num_bulk_out < MAX_NUM_PORTS) {
++ bulk_out_endpoint[num_bulk_out] = endpoint;
++ ++num_bulk_out;
++ }
+ }
+
+ if (usb_endpoint_is_int_in(endpoint)) {
+ /* we found a interrupt in endpoint */
+ dev_dbg(ddev, "found interrupt in on endpoint %d\n", i);
+- interrupt_in_endpoint[num_interrupt_in] = endpoint;
+- ++num_interrupt_in;
++ if (num_interrupt_in < MAX_NUM_PORTS) {
++ interrupt_in_endpoint[num_interrupt_in] =
++ endpoint;
++ ++num_interrupt_in;
++ }
+ }
+
+ if (usb_endpoint_is_int_out(endpoint)) {
+ /* we found an interrupt out endpoint */
+ dev_dbg(ddev, "found interrupt out on endpoint %d\n", i);
+- interrupt_out_endpoint[num_interrupt_out] = endpoint;
+- ++num_interrupt_out;
++ if (num_interrupt_out < MAX_NUM_PORTS) {
++ interrupt_out_endpoint[num_interrupt_out] =
++ endpoint;
++ ++num_interrupt_out;
++ }
+ }
+ }
+
+@@ -823,8 +833,10 @@ static int usb_serial_probe(struct usb_i
+ if (usb_endpoint_is_int_in(endpoint)) {
+ /* we found a interrupt in endpoint */
+ dev_dbg(ddev, "found interrupt in for Prolific device on separate interface\n");
+- interrupt_in_endpoint[num_interrupt_in] = endpoint;
+- ++num_interrupt_in;
++ if (num_interrupt_in < MAX_NUM_PORTS) {
++ interrupt_in_endpoint[num_interrupt_in] = endpoint;
++ ++num_interrupt_in;
++ }
+ }
+ }
+ }
--- /dev/null
+From 91fcb1ce420e0a5f8d92d556d7008a78bc6ce1eb Mon Sep 17 00:00:00 2001
+From: Greg KH <gregkh@linuxfoundation.org>
+Date: Fri, 15 Aug 2014 15:22:21 +0800
+Subject: USB: serial: pl2303: add device id for ztek device
+
+From: Greg KH <gregkh@linuxfoundation.org>
+
+commit 91fcb1ce420e0a5f8d92d556d7008a78bc6ce1eb upstream.
+
+This adds a new device id to the pl2303 driver for the ZTEK device.
+
+Reported-by: Mike Chu <Mike-Chu@prolific.com.tw>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+
+---
+ drivers/usb/serial/pl2303.c | 1 +
+ drivers/usb/serial/pl2303.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/pl2303.c
++++ b/drivers/usb/serial/pl2303.c
+@@ -47,6 +47,7 @@ static const struct usb_device_id id_tab
+ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_GPRS) },
+ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_HCR331) },
+ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MOTOROLA) },
++ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ZTEK) },
+ { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) },
+ { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) },
+ { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) },
+--- a/drivers/usb/serial/pl2303.h
++++ b/drivers/usb/serial/pl2303.h
+@@ -22,6 +22,7 @@
+ #define PL2303_PRODUCT_ID_GPRS 0x0609
+ #define PL2303_PRODUCT_ID_HCR331 0x331a
+ #define PL2303_PRODUCT_ID_MOTOROLA 0x0307
++#define PL2303_PRODUCT_ID_ZTEK 0xe1f1
+
+ #define ATEN_VENDOR_ID 0x0557
+ #define ATEN_VENDOR_ID2 0x0547
--- /dev/null
+From 5b6b80aeb21091ed3030b9b6aae597d81326f1aa Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <stephen@networkplumber.org>
+Date: Mon, 25 Aug 2014 21:07:47 -0700
+Subject: USB: sisusb: add device id for Magic Control USB video
+
+From: Stephen Hemminger <stephen@networkplumber.org>
+
+commit 5b6b80aeb21091ed3030b9b6aae597d81326f1aa upstream.
+
+I have a j5 create (JUA210) USB 2 video device and adding it device id
+to SIS USB video gets it to work.
+
+Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/misc/sisusbvga/sisusb.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/misc/sisusbvga/sisusb.c
++++ b/drivers/usb/misc/sisusbvga/sisusb.c
+@@ -3248,6 +3248,7 @@ static const struct usb_device_id sisusb
+ { USB_DEVICE(0x0711, 0x0918) },
+ { USB_DEVICE(0x0711, 0x0920) },
+ { USB_DEVICE(0x0711, 0x0950) },
++ { USB_DEVICE(0x0711, 0x5200) },
+ { USB_DEVICE(0x182d, 0x021c) },
+ { USB_DEVICE(0x182d, 0x0269) },
+ { }
--- /dev/null
+From 95be5739588c56a9327e477aa0ba3c81c5cf8631 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Thu, 7 Aug 2014 16:00:14 +0200
+Subject: USB: zte_ev: remove duplicate Gobi PID
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 95be5739588c56a9327e477aa0ba3c81c5cf8631 upstream.
+
+Remove dublicate Gobi PID 0x9008 which is already handled by the
+qcserial driver since commit f05932c0caf4 ("USB: qcserial: Add extra
+device IDs").
+
+Fixes: 799ee9243d89 ("USB: serial: add zte_ev.c driver")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/zte_ev.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/usb/serial/zte_ev.c
++++ b/drivers/usb/serial/zte_ev.c
+@@ -276,7 +276,6 @@ static const struct usb_device_id id_tab
+ /* MG880 */
+ { USB_DEVICE(0x19d2, 0xfffd) },
+ { USB_DEVICE(0x05C6, 0x3197) },
+- { USB_DEVICE(0x05C6, 0x9008) },
+ { },
+ };
+ MODULE_DEVICE_TABLE(usb, id_table);
--- /dev/null
+From 754eb21c0bbbbc4b8830a9a864b286323b84225f Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Thu, 7 Aug 2014 16:00:15 +0200
+Subject: USB: zte_ev: remove duplicate Qualcom PID
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 754eb21c0bbbbc4b8830a9a864b286323b84225f upstream.
+
+Remove dublicate Qualcom PID 0x3197 which is already handled by the
+moto-modem driver since commit 6986a978eec7 ("USB: add new moto_modem
+driver for some Morotola phones").
+
+Fixes: 799ee9243d89 ("USB: serial: add zte_ev.c driver")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/zte_ev.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/usb/serial/zte_ev.c
++++ b/drivers/usb/serial/zte_ev.c
+@@ -275,7 +275,6 @@ static void zte_ev_usb_serial_close(stru
+ static const struct usb_device_id id_table[] = {
+ /* MG880 */
+ { USB_DEVICE(0x19d2, 0xfffd) },
+- { USB_DEVICE(0x05C6, 0x3197) },
+ { },
+ };
+ MODULE_DEVICE_TABLE(usb, id_table);