--- /dev/null
+From 17b24b3c97498935a2ef9777370b1151dfed3f6f Mon Sep 17 00:00:00 2001
+From: Chas Williams <chas@cmf.nrl.navy.mil>
+Date: Thu, 4 Dec 2008 14:58:13 -0800
+Subject: ATM: CVE-2008-5079: duplicate listen() on socket corrupts the vcc table
+
+From: Chas Williams <chas@cmf.nrl.navy.mil>
+
+commit 17b24b3c97498935a2ef9777370b1151dfed3f6f upstream.
+
+As reported by Hugo Dias that it is possible to cause a local denial
+of service attack by calling the svc_listen function twice on the same
+socket and reading /proc/net/atm/*vc
+
+Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/atm/svc.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/net/atm/svc.c
++++ b/net/atm/svc.c
+@@ -293,7 +293,10 @@ static int svc_listen(struct socket *soc
+ error = -EINVAL;
+ goto out;
+ }
+- vcc_insert_socket(sk);
++ if (test_bit(ATM_VF_LISTEN, &vcc->flags)) {
++ error = -EADDRINUSE;
++ goto out;
++ }
+ set_bit(ATM_VF_WAITING, &vcc->flags);
+ prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
+ sigd_enq(vcc,as_listen,NULL,NULL,&vcc->local);
+@@ -307,6 +310,7 @@ static int svc_listen(struct socket *soc
+ goto out;
+ }
+ set_bit(ATM_VF_LISTEN,&vcc->flags);
++ vcc_insert_socket(sk);
+ sk->sk_max_ack_backlog = backlog > 0 ? backlog : ATM_BACKLOG_DEFAULT;
+ error = -sk->sk_err;
+ out:
--- /dev/null
+From 992b692dcf43612be805465ca4b76f434c715023 Mon Sep 17 00:00:00 2001
+From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Date: Wed, 29 Oct 2008 14:01:00 -0700
+Subject: edac: fix enabling of polling cell module
+
+From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+
+commit 992b692dcf43612be805465ca4b76f434c715023 upstream.
+
+The edac driver on cell turned out to be not enabled because of a missing
+op_state. This patch introduces it. Verified to work on top of Ben's
+next branch.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Jens Osterkamp <jens@linux.vnet.ibm.com>
+Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Doug Thompson <dougthompson@xmission.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/edac/cell_edac.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/edac/cell_edac.c
++++ b/drivers/edac/cell_edac.c
+@@ -9,6 +9,7 @@
+ */
+ #undef DEBUG
+
++#include <linux/edac.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+@@ -164,6 +165,8 @@ static int __devinit cell_edac_probe(str
+ if (regs == NULL)
+ return -ENODEV;
+
++ edac_op_state = EDAC_OPSTATE_POLL;
++
+ /* Get channel population */
+ reg = in_be64(®s->mic_mnt_cfg);
+ dev_dbg(&pdev->dev, "MIC_MNT_CFG = 0x%016lx\n", reg);
--- /dev/null
+From 2c6f2cb83b239b7d45da9246cafd27ee615ee35b Mon Sep 17 00:00:00 2001
+From: Stefan Bader <stefan.bader@canonical.com>
+Date: Thu, 16 Oct 2008 22:00:56 -0400
+Subject: Input: i8042 - add Blue FB5601 to noloop exception table
+
+From: Stefan Bader <stefan.bader@canonical.com>
+
+commit 2c6f2cb83b239b7d45da9246cafd27ee615ee35b upstream.
+
+Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/input/serio/i8042-x86ia64io.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/input/serio/i8042-x86ia64io.h
++++ b/drivers/input/serio/i8042-x86ia64io.h
+@@ -135,6 +135,14 @@ static struct dmi_system_id __initdata i
+ DMI_MATCH(DMI_PRODUCT_VERSION, "5a"),
+ },
+ },
++ {
++ .ident = "Blue FB5601",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "blue"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "FB5601"),
++ DMI_MATCH(DMI_PRODUCT_VERSION, "M606"),
++ },
++ },
+ { }
+ };
+
--- /dev/null
+From 5f4ba04ffd8fc9f6b15b92270ef0517ae52dcf3a Mon Sep 17 00:00:00 2001
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Date: Fri, 14 Nov 2008 13:32:42 -0500
+Subject: Input: i8042 - add Compal Hel80 laptop to nomux blacklist
+
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+
+commit 5f4ba04ffd8fc9f6b15b92270ef0517ae52dcf3a upstream.
+
+Reported-by: Jaime Cura <jimyx17@gmail.com>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/input/serio/i8042-x86ia64io.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/input/serio/i8042-x86ia64io.h
++++ b/drivers/input/serio/i8042-x86ia64io.h
+@@ -344,6 +344,13 @@ static struct dmi_system_id __initdata i
+ DMI_MATCH(DMI_PRODUCT_NAME, "XPS M1530"),
+ },
+ },
++ {
++ .ident = "Compal HEL80I",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "HEL80I"),
++ },
++ },
+ { }
+ };
+
--- /dev/null
+From 786b11cc0f505e44c29f778fd329dafafafed76c Mon Sep 17 00:00:00 2001
+From: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
+Date: Tue, 11 Nov 2008 09:37:14 -0500
+Subject: Input: i8042 - add Dell XPS M1530 to nomux list
+
+From: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
+
+commit 786b11cc0f505e44c29f778fd329dafafafed76c upstream.
+
+Dell XPS M1530 needs i8042.nomux=1 for ALPS touchpad to work as
+reported on https://qa.mandriva.com/show_bug.cgi?id=43532
+
+It is said that before A08 bios version this isn't needed (I don't
+have the hardware so can't check), and suppose this will not break
+with bios versions before A08.
+
+Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
+Tested-by: Andreas Ericsson <ae@op5.se>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/input/serio/i8042-x86ia64io.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/input/serio/i8042-x86ia64io.h
++++ b/drivers/input/serio/i8042-x86ia64io.h
+@@ -337,6 +337,13 @@ static struct dmi_system_id __initdata i
+ DMI_MATCH(DMI_PRODUCT_NAME, "2656"),
+ },
+ },
++ {
++ .ident = "Dell XPS M1530",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "XPS M1530"),
++ },
++ },
+ { }
+ };
+
--- /dev/null
+From 5bd8a05e937b3ab88cd7ea569e32738f36c42bd0 Mon Sep 17 00:00:00 2001
+From: Colin B Macdonald <cbm@m.fsf.org>
+Date: Sat, 11 Oct 2008 18:16:38 -0400
+Subject: Input: i8042 - add Thinkpad R31 to nomux list
+
+From: Colin B Macdonald <cbm@m.fsf.org>
+
+commit 5bd8a05e937b3ab88cd7ea569e32738f36c42bd0 upstream.
+
+Thinkpad R31 needs i8042 nomux quirk. Stops jittery jumping mouse
+and random keyboard input. Fixes kernel bug #11723. Cherry picked
+from Ubuntu who have sometimes (on-again-off-again) had a fix in
+their patched kernels.
+
+Signed-off-by: Colin B Macdonald <cbm@m.fsf.org>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/input/serio/i8042-x86ia64io.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/input/serio/i8042-x86ia64io.h
++++ b/drivers/input/serio/i8042-x86ia64io.h
+@@ -322,6 +322,13 @@ static struct dmi_system_id __initdata i
+ DMI_MATCH(DMI_PRODUCT_NAME, "N34AS6"),
+ },
+ },
++ {
++ .ident = "IBM 2656",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "2656"),
++ },
++ },
+ { }
+ };
+
--- /dev/null
+From cc353c30bbdb84f4317a6c149ebb11cde2232e40 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 28 Nov 2008 09:51:23 +0000
+Subject: powerpc/mpic: Don't reset affinity for secondary MPIC on boot
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit cc353c30bbdb84f4317a6c149ebb11cde2232e40 upstream.
+
+Kexec/kdump currently fails on the IBM QS2x blades when the kexec happens
+on a CPU other than the initial boot CPU. It turns out that this is the
+result of mpic_init trying to set affinity of each interrupt vector to the
+current boot CPU.
+
+As far as I can tell, the same problem is likely to exist on any
+secondary MPIC, because they have to deliver interrupts to the first
+output all the time. There are two potential solutions for this: either
+not set up affinity at all for secondary MPICs, or assume that a single
+CPU output is connected to the upstream interrupt controller and hardcode
+affinity to that per architecture.
+
+This patch implements the second approach, defaulting to the first output.
+Currently, all known secondary MPICs are routed to their upstream port
+using the first destination, so we hardcode that.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Paul Mackerras <paulus@samba.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/powerpc/sysdev/mpic.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+--- a/arch/powerpc/sysdev/mpic.c
++++ b/arch/powerpc/sysdev/mpic.c
+@@ -1271,6 +1271,7 @@ void __init mpic_set_default_senses(stru
+ void __init mpic_init(struct mpic *mpic)
+ {
+ int i;
++ int cpu;
+
+ BUG_ON(mpic->num_sources == 0);
+
+@@ -1313,6 +1314,11 @@ void __init mpic_init(struct mpic *mpic)
+
+ mpic_pasemi_msi_init(mpic);
+
++ if (mpic->flags & MPIC_PRIMARY)
++ cpu = hard_smp_processor_id();
++ else
++ cpu = 0;
++
+ for (i = 0; i < mpic->num_sources; i++) {
+ /* start with vector = source number, and masked */
+ u32 vecpri = MPIC_VECPRI_MASK | i |
+@@ -1323,8 +1329,7 @@ void __init mpic_init(struct mpic *mpic)
+ continue;
+ /* init hw */
+ mpic_irq_write(i, MPIC_INFO(IRQ_VECTOR_PRI), vecpri);
+- mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION),
+- 1 << hard_smp_processor_id());
++ mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), 1 << cpu);
+ }
+
+ /* Init spurious vector */
acpi-suspend-blacklist-boxes-that-require-us-to-set-sci_en-directly-on-resume.patch
jbd-fix-error-handling-for-checkpoint-io.patch
jbd-test-bh_write_eio-to-detect-errors-on-metadata-buffers.patch
+spi-avoid-spidev-crash-when-device-is-removed.patch
+atm-cve-2008-5079-duplicate-listen-on-socket-corrupts-the-vcc-table.patch
+powerpc-mpic-don-t-reset-affinity-for-secondary-mpic-on-boot.patch
+input-i8042-add-thinkpad-r31-to-nomux-list.patch
+input-i8042-add-blue-fb5601-to-noloop-exception-table.patch
+input-i8042-add-dell-xps-m1530-to-nomux-list.patch
+input-i8042-add-compal-hel80-laptop-to-nomux-blacklist.patch
+edac-fix-enabling-of-polling-cell-module.patch
+usb-option-add-ericsson-f3507g-and-dell-5530.patch
+usb-option.c-remove-duplicate-device-ids-now-supported-in-hso.c.patch
+usb-option-anydata-new-modem-same-id.patch
+usb-option-add-pantech-cards.patch
+usb-add-zte-mf626-usb-gsm-modem-entry.patch
+usb-support-huawei-data-card-product-ids.patch
+usb-add-yiso-u893-usb-modem-vendor-and-product-ids-to-option-driver.patch
+usb-serial-add-more-onda-device-ids-to-option-driver.patch
--- /dev/null
+From aaacf4bb51b243875b203e6ff73b5047636b4efa Mon Sep 17 00:00:00 2001
+From: Wolfgang Ocker <weo@reccoware.de>
+Date: Mon, 1 Dec 2008 13:13:52 -0800
+Subject: spi: avoid spidev crash when device is removed
+
+From: Wolfgang Ocker <weo@reccoware.de>
+
+commit aaacf4bb51b243875b203e6ff73b5047636b4efa upstream.
+
+I saw a kernel oops in spidev_remove() when a spidev device was registered
+and I unloaded the SPI master driver:
+
+Unable to handle kernel paging request for data at address 0x00000004
+Faulting instruction address: 0xc01c0c50
+Oops: Kernel access of bad area, sig: 11 [#1]
+CDSPR
+Modules linked in: spi_ppc4xx(-)
+NIP: c01c0c50 LR: c01bf9e4 CTR: c01c0c34
+REGS: cec89c30 TRAP: 0300 Not tainted (2.6.27.3izt)
+MSR: 00021000 <ME> CR: 24000228 XER: 20000007
+DEAR: 00000004, ESR: 00800000
+TASK = cf889040[2070] 'rmmod' THREAD: cec88000
+GPR00: 00000000 cec89ce0 cf889040 cec8e000 00000004 cec8e000 ffffffff 00000000
+GPR08: 0000001c c0336380 00000000 c01c0c34 00000001 1001a338 100e0000 100df49c
+GPR16: 100b54c0 100df49c 100ddd20 100f05a8 100b5340 100efd68 00000000 00000000
+GPR24: 100ec008 100f0428 c0327788 c0327794 cec8e0ac cec8e000 c0336380 00000000
+NIP [c01c0c50] spidev_remove+0x1c/0xe4
+LR [c01bf9e4] spi_drv_remove+0x2c/0x3c
+Call Trace:
+[cec89d00] [c01bf9e4] spi_drv_remove+0x2c/0x3c
+[cec89d10] [c01859a0] __device_release_driver+0x78/0xb4
+[cec89d20] [c0185ab0] device_release_driver+0x28/0x44
+[cec89d40] [c0184be8] bus_remove_device+0xac/0xd8
+[cec89d60] [c0183094] device_del+0x100/0x194
+[cec89d80] [c0183140] device_unregister+0x18/0x30
+[cec89da0] [c01bf30c] __unregister+0x20/0x34
+[cec89db0] [c0182778] device_for_each_child+0x38/0x74
+[cec89de0] [c01bf2d0] spi_unregister_master+0x28/0x44
+[cec89e00] [c01bfeac] spi_bitbang_stop+0x1c/0x58
+[cec89e20] [d908a5e0] spi_ppc4xx_of_remove+0x24/0x7c [spi_ppc4xx]
+[...]
+
+IMHO a call to spi_set_drvdata() is missing in spidev_probe(). The patch
+below helped.
+
+Signed-off-by: Wolfgang Ocker <weo@reccoware.de>
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/spi/spidev.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
+@@ -598,7 +598,9 @@ static int spidev_probe(struct spi_devic
+ }
+ mutex_unlock(&device_list_lock);
+
+- if (status != 0)
++ if (status == 0)
++ spi_set_drvdata(spi, spidev);
++ else
+ kfree(spidev);
+
+ return status;
--- /dev/null
+From c6206faa4f18bcc837a12552b8c184ab1668fdea Mon Sep 17 00:00:00 2001
+From: Leslie Watter <leslie.watter@gmail.com>
+Date: Wed, 12 Nov 2008 15:10:07 -0200
+Subject: USB: Add YISO u893 usb modem vendor and product IDs to option driver
+
+From: Leslie Watter <leslie.watter@gmail.com>
+
+commit c6206faa4f18bcc837a12552b8c184ab1668fdea upstream
+
+This patch adds YISO u893 usb modem vendor and product ID to option.c.
+
+I had a better experience using this modification and the same system.
+
+Signed-off-by: Leslie Harlley Watter <leslie@watter.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -160,6 +160,11 @@ static int option_send_setup(struct tty
+
+ #define NOVATELWIRELESS_VENDOR_ID 0x1410
+
++/* YISO PRODUCTS */
++
++#define YISO_VENDOR_ID 0x0EAB
++#define YISO_PRODUCT_U893 0xC893
++
+ /* MERLIN EVDO PRODUCTS */
+ #define NOVATELWIRELESS_PRODUCT_V640 0x1100
+ #define NOVATELWIRELESS_PRODUCT_V620 0x1110
+@@ -408,6 +413,7 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) },
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) },
++ { USB_DEVICE(YISO_VENDOR_ID, YISO_PRODUCT_U893) },
+ { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
+ { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
+ { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_1004) },
--- /dev/null
+From bfd8408d68975759aba1b466af6f5388d7adb836 Mon Sep 17 00:00:00 2001
+From: Mikhail Gusarov <dottedmag@dottedmag.net>
+Date: Sat, 18 Oct 2008 18:20:02 +0700
+Subject: USB: add ZTE MF626 USB GSM modem entry
+
+From: Mikhail Gusarov <dottedmag@dottedmag.net>
+
+commit bfd8408d68975759aba1b466af6f5388d7adb836 upstream
+
+Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -207,6 +207,7 @@ static int option_send_setup(struct tty
+ /* ZTE PRODUCTS */
+ #define ZTE_VENDOR_ID 0x19d2
+ #define ZTE_PRODUCT_MF628 0x0015
++#define ZTE_PRODUCT_MF626 0x0031
+ #define ZTE_PRODUCT_CDMA_TECH 0xfffe
+
+ /* Ericsson products */
+@@ -336,6 +337,7 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+ { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
++ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
+ { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
--- /dev/null
+From b064eca9b0cdbb2b8f731ae2e44fa02194a1219a Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw@redhat.com>
+Date: Wed, 24 Sep 2008 11:49:19 -0400
+Subject: USB: option: add Ericsson F3507g and Dell 5530
+
+From: Dan Williams <dcbw@redhat.com>
+
+commit b064eca9b0cdbb2b8f731ae2e44fa02194a1219a upstream.
+
+Add a few more mobile broadband cards.
+
+Signed-off-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -220,6 +220,10 @@ static int option_send_setup(struct tty
+ #define ZTE_PRODUCT_MF628 0x0015
+ #define ZTE_PRODUCT_CDMA_TECH 0xfffe
+
++/* Ericsson products */
++#define ERICSSON_VENDOR_ID 0x0bdb
++#define ERICSSON_PRODUCT_F3507G 0x1900
++
+ static struct usb_device_id option_ids[] = {
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
+@@ -318,6 +322,7 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(DELL_VENDOR_ID, 0x8136) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
+ { USB_DEVICE(DELL_VENDOR_ID, 0x8137) }, /* Dell Wireless HSDPA 5520 */
+ { USB_DEVICE(DELL_VENDOR_ID, 0x8138) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
++ { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
+ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
+ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
+ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
+@@ -349,6 +354,7 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
++ { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
--- /dev/null
+From 8b6346ec899713a90890c9e832f7eff91ea73504 Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw@redhat.com>
+Date: Fri, 10 Oct 2008 06:41:16 -0400
+Subject: USB: option: add Pantech cards
+
+From: Dan Williams <dcbw@redhat.com>
+
+commit 8b6346ec899713a90890c9e832f7eff91ea73504 upstream
+
+Add some Pantech mobile broadband IDs.
+
+Signed-off-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -213,6 +213,12 @@ static int option_send_setup(struct tty
+ #define ERICSSON_VENDOR_ID 0x0bdb
+ #define ERICSSON_PRODUCT_F3507G 0x1900
+
++/* Pantech products */
++#define PANTECH_VENDOR_ID 0x106c
++#define PANTECH_PRODUCT_PC5740 0x3701
++#define PANTECH_PRODUCT_PC5750 0x3702 /* PX-500 */
++#define PANTECH_PRODUCT_UM150 0x3711
++
+ static struct usb_device_id option_ids[] = {
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
+@@ -333,6 +339,9 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
+ { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
++ { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5740) },
++ { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5750) },
++ { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_UM150) },
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
--- /dev/null
+From bb78a825fa91621e52b9a5409fd9ef07895275bf Mon Sep 17 00:00:00 2001
+From: Jon K Hellan <hellan@acm.org>
+Date: Fri, 3 Oct 2008 10:36:16 +0200
+Subject: USB: Option / AnyData new modem, same ID
+
+From: Jon K Hellan <hellan@acm.org>
+
+commit bb78a825fa91621e52b9a5409fd9ef07895275bf upstream.
+
+The AnyData ADU-310 series of wireless modems uses the same product ID as the ADU-E100 series.
+
+Signed-off-by: Jon K Hellan <hellan@acm.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -301,7 +301,7 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(DELL_VENDOR_ID, 0x8137) }, /* Dell Wireless HSDPA 5520 */
+ { USB_DEVICE(DELL_VENDOR_ID, 0x8138) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
+ { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
+- { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
++ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
+ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
+ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
+ { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
--- /dev/null
+From 631556a0763ac155c82bbcbeed7e4b28bd737927 Mon Sep 17 00:00:00 2001
+From: Denis Joseph Barrow <D.Barow@option.com>
+Date: Tue, 30 Sep 2008 16:49:22 +0200
+Subject: USB: option.c remove duplicate device ids now supported in hso.c
+
+From: Denis Joseph Barrow <D.Barow@option.com>
+
+commit 631556a0763ac155c82bbcbeed7e4b28bd737927 upstream.
+
+Remove duplicate device ids which are now supported by drivers/usb/net/hso.c
+
+Signed-off-by: Denis Joseph Barrow <D.Barow@option.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -79,27 +79,16 @@ static int option_send_setup(struct tty
+ #define OPTION_PRODUCT_VIPER 0x6600
+ #define OPTION_PRODUCT_VIPER_BUS 0x6601
+ #define OPTION_PRODUCT_GT_MAX_READY 0x6701
+-#define OPTION_PRODUCT_GT_MAX 0x6711
+ #define OPTION_PRODUCT_FUJI_MODEM_LIGHT 0x6721
+ #define OPTION_PRODUCT_FUJI_MODEM_GT 0x6741
+ #define OPTION_PRODUCT_FUJI_MODEM_EX 0x6761
+-#define OPTION_PRODUCT_FUJI_NETWORK_LIGHT 0x6731
+-#define OPTION_PRODUCT_FUJI_NETWORK_GT 0x6751
+-#define OPTION_PRODUCT_FUJI_NETWORK_EX 0x6771
+ #define OPTION_PRODUCT_KOI_MODEM 0x6800
+-#define OPTION_PRODUCT_KOI_NETWORK 0x6811
+ #define OPTION_PRODUCT_SCORPION_MODEM 0x6901
+-#define OPTION_PRODUCT_SCORPION_NETWORK 0x6911
+ #define OPTION_PRODUCT_ETNA_MODEM 0x7001
+-#define OPTION_PRODUCT_ETNA_NETWORK 0x7011
+ #define OPTION_PRODUCT_ETNA_MODEM_LITE 0x7021
+ #define OPTION_PRODUCT_ETNA_MODEM_GT 0x7041
+ #define OPTION_PRODUCT_ETNA_MODEM_EX 0x7061
+-#define OPTION_PRODUCT_ETNA_NETWORK_LITE 0x7031
+-#define OPTION_PRODUCT_ETNA_NETWORK_GT 0x7051
+-#define OPTION_PRODUCT_ETNA_NETWORK_EX 0x7071
+ #define OPTION_PRODUCT_ETNA_KOI_MODEM 0x7100
+-#define OPTION_PRODUCT_ETNA_KOI_NETWORK 0x7111
+
+ #define HUAWEI_VENDOR_ID 0x12D1
+ #define HUAWEI_PRODUCT_E600 0x1001
+@@ -239,27 +228,16 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_VIPER) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_VIPER_BUS) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GT_MAX_READY) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GT_MAX) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUJI_MODEM_LIGHT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUJI_MODEM_GT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUJI_MODEM_EX) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUJI_NETWORK_LIGHT) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUJI_NETWORK_GT) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUJI_NETWORK_EX) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_KOI_MODEM) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_KOI_NETWORK) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_SCORPION_MODEM) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_SCORPION_NETWORK) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_LITE) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_GT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_EX) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_LITE) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_GT) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_EX) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) },
+- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_NETWORK) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) },
--- /dev/null
+From 5bb4bd9895df508ed2bd8b3280252d8a8170e4ac Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Sat, 29 Nov 2008 11:46:21 -0800
+Subject: USB: serial: add more Onda device ids to option driver
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 5bb4bd9895df508ed2bd8b3280252d8a8170e4ac upstream.
+
+Thanks to Domenico Riccio for pointing these out.
+
+Cc: Domenico Riccio <domenico.riccio@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -224,6 +224,7 @@ static int option_send_setup(struct tty
+ #define ONDA_VENDOR_ID 0x19d2
+ #define ONDA_PRODUCT_MSA501HS 0x0001
+ #define ONDA_PRODUCT_ET502HS 0x0002
++#define ONDA_PRODUCT_MT503HS 0x0200
+
+ #define BANDRICH_VENDOR_ID 0x1A8D
+ #define BANDRICH_PRODUCT_C100_1 0x1002
+@@ -413,6 +414,40 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) },
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0003) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0004) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0005) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0006) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0007) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0008) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0009) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x000a) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x000b) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x000c) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x000d) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x000e) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x000f) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0010) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0011) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0012) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0013) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0014) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0015) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0016) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0017) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0018) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0019) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0020) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0021) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0022) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0023) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0024) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0025) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0026) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0027) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0028) },
++ { USB_DEVICE(ONDA_VENDOR_ID, 0x0029) },
++ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MT503HS) },
+ { USB_DEVICE(YISO_VENDOR_ID, YISO_PRODUCT_U893) },
+ { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
+ { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
--- /dev/null
+From 1460e5e44cc5ecad7704f63b10dcb3a59d0e008b Mon Sep 17 00:00:00 2001
+From: fangxiaozhi <huananhu@huawei.com>
+Date: Wed, 15 Oct 2008 14:15:36 +0800
+Subject: USB: support Huawei data card product IDs
+
+From: fangxiaozhi <huananhu@huawei.com>
+
+commit 1460e5e44cc5ecad7704f63b10dcb3a59d0e008b upstream
+
+In this patch, we want to do one thing: add more Huawei product IDs into the
+USB driver. Then it can support more Huawei data card devices. So to declare
+the unusual device for new Huawei data card devices in unusual_devs.h and to
+declare more new product IDs in option.c.
+
+To modify the data value and length in the function of
+usb_stor_huawei_e220_init in initializers.c That's because based on the USB
+standard, while sending SET_FETURE_D to the device, it requires the
+corresponding data to be zero, and its sending length also must be zero. In
+our old solution, it can be compatible with our WCDMA data card devices, but
+can not support our CDMA data card devices. But in this new solution, it can
+be compatible with all of our data card devices.
+
+Signed-off-by: fangxiaozhi <huananhu@huawei.com>
+Signed-off-by: Phil Dibowitz <phil@ipom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/usb/serial/option.c | 94 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 94 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -95,11 +95,20 @@ static int option_send_setup(struct tty
+ #define HUAWEI_PRODUCT_E220 0x1003
+ #define HUAWEI_PRODUCT_E220BIS 0x1004
+ #define HUAWEI_PRODUCT_E1401 0x1401
++#define HUAWEI_PRODUCT_E1402 0x1402
+ #define HUAWEI_PRODUCT_E1403 0x1403
++#define HUAWEI_PRODUCT_E1404 0x1404
+ #define HUAWEI_PRODUCT_E1405 0x1405
+ #define HUAWEI_PRODUCT_E1406 0x1406
++#define HUAWEI_PRODUCT_E1407 0x1407
+ #define HUAWEI_PRODUCT_E1408 0x1408
+ #define HUAWEI_PRODUCT_E1409 0x1409
++#define HUAWEI_PRODUCT_E140A 0x140A
++#define HUAWEI_PRODUCT_E140B 0x140B
++#define HUAWEI_PRODUCT_E140C 0x140C
++#define HUAWEI_PRODUCT_E140D 0x140D
++#define HUAWEI_PRODUCT_E140E 0x140E
++#define HUAWEI_PRODUCT_E140F 0x140F
+ #define HUAWEI_PRODUCT_E1410 0x1410
+ #define HUAWEI_PRODUCT_E1411 0x1411
+ #define HUAWEI_PRODUCT_E1412 0x1412
+@@ -110,6 +119,44 @@ static int option_send_setup(struct tty
+ #define HUAWEI_PRODUCT_E1417 0x1417
+ #define HUAWEI_PRODUCT_E1418 0x1418
+ #define HUAWEI_PRODUCT_E1419 0x1419
++#define HUAWEI_PRODUCT_E141A 0x141A
++#define HUAWEI_PRODUCT_E141B 0x141B
++#define HUAWEI_PRODUCT_E141C 0x141C
++#define HUAWEI_PRODUCT_E141D 0x141D
++#define HUAWEI_PRODUCT_E141E 0x141E
++#define HUAWEI_PRODUCT_E141F 0x141F
++#define HUAWEI_PRODUCT_E1420 0x1420
++#define HUAWEI_PRODUCT_E1421 0x1421
++#define HUAWEI_PRODUCT_E1422 0x1422
++#define HUAWEI_PRODUCT_E1423 0x1423
++#define HUAWEI_PRODUCT_E1424 0x1424
++#define HUAWEI_PRODUCT_E1425 0x1425
++#define HUAWEI_PRODUCT_E1426 0x1426
++#define HUAWEI_PRODUCT_E1427 0x1427
++#define HUAWEI_PRODUCT_E1428 0x1428
++#define HUAWEI_PRODUCT_E1429 0x1429
++#define HUAWEI_PRODUCT_E142A 0x142A
++#define HUAWEI_PRODUCT_E142B 0x142B
++#define HUAWEI_PRODUCT_E142C 0x142C
++#define HUAWEI_PRODUCT_E142D 0x142D
++#define HUAWEI_PRODUCT_E142E 0x142E
++#define HUAWEI_PRODUCT_E142F 0x142F
++#define HUAWEI_PRODUCT_E1430 0x1430
++#define HUAWEI_PRODUCT_E1431 0x1431
++#define HUAWEI_PRODUCT_E1432 0x1432
++#define HUAWEI_PRODUCT_E1433 0x1433
++#define HUAWEI_PRODUCT_E1434 0x1434
++#define HUAWEI_PRODUCT_E1435 0x1435
++#define HUAWEI_PRODUCT_E1436 0x1436
++#define HUAWEI_PRODUCT_E1437 0x1437
++#define HUAWEI_PRODUCT_E1438 0x1438
++#define HUAWEI_PRODUCT_E1439 0x1439
++#define HUAWEI_PRODUCT_E143A 0x143A
++#define HUAWEI_PRODUCT_E143B 0x143B
++#define HUAWEI_PRODUCT_E143C 0x143C
++#define HUAWEI_PRODUCT_E143D 0x143D
++#define HUAWEI_PRODUCT_E143E 0x143E
++#define HUAWEI_PRODUCT_E143F 0x143F
+
+ #define NOVATELWIRELESS_VENDOR_ID 0x1410
+
+@@ -249,11 +296,20 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1402, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1404, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1407, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140A, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140B, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140C, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140D, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140E, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140F, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412, 0xff, 0xff, 0xff) },
+@@ -264,6 +320,44 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141A, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141B, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141C, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141D, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141E, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141F, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1420, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1421, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1422, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1423, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1424, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1425, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1426, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1427, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1428, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1429, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142A, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142B, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142C, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142D, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142E, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142F, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1430, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1431, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1432, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1433, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1434, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1435, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1436, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1437, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1438, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1439, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143A, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143B, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143C, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) },
+ { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */