--- /dev/null
+From 4c4101d29fb6c63f78791d02c437702b11e1d4f0 Mon Sep 17 00:00:00 2001
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+Date: Sun, 2 Dec 2012 12:56:22 +0100
+Subject: drm/nouveau: add locking around instobj list operations
+
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+
+commit 4c4101d29fb6c63f78791d02c437702b11e1d4f0 upstream.
+
+Fixes memory corruptions, oopses, etc. when multiple gpuobjs are
+simultaneously created or destroyed.
+
+Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/core/subdev/instmem/base.c | 35 ++++++++++++++++-----
+ 1 file changed, 27 insertions(+), 8 deletions(-)
+
+--- a/drivers/gpu/drm/nouveau/core/subdev/instmem/base.c
++++ b/drivers/gpu/drm/nouveau/core/subdev/instmem/base.c
+@@ -40,15 +40,21 @@ nouveau_instobj_create_(struct nouveau_o
+ if (ret)
+ return ret;
+
++ mutex_lock(&imem->base.mutex);
+ list_add(&iobj->head, &imem->list);
++ mutex_unlock(&imem->base.mutex);
+ return 0;
+ }
+
+ void
+ nouveau_instobj_destroy(struct nouveau_instobj *iobj)
+ {
+- if (iobj->head.prev)
+- list_del(&iobj->head);
++ struct nouveau_subdev *subdev = nv_subdev(iobj->base.engine);
++
++ mutex_lock(&subdev->mutex);
++ list_del(&iobj->head);
++ mutex_unlock(&subdev->mutex);
++
+ return nouveau_object_destroy(&iobj->base);
+ }
+
+@@ -88,6 +94,8 @@ nouveau_instmem_init(struct nouveau_inst
+ if (ret)
+ return ret;
+
++ mutex_lock(&imem->base.mutex);
++
+ list_for_each_entry(iobj, &imem->list, head) {
+ if (iobj->suspend) {
+ for (i = 0; i < iobj->size; i += 4)
+@@ -97,6 +105,8 @@ nouveau_instmem_init(struct nouveau_inst
+ }
+ }
+
++ mutex_unlock(&imem->base.mutex);
++
+ return 0;
+ }
+
+@@ -104,17 +114,26 @@ int
+ nouveau_instmem_fini(struct nouveau_instmem *imem, bool suspend)
+ {
+ struct nouveau_instobj *iobj;
+- int i;
++ int i, ret = 0;
+
+ if (suspend) {
++ mutex_lock(&imem->base.mutex);
++
+ list_for_each_entry(iobj, &imem->list, head) {
+ iobj->suspend = vmalloc(iobj->size);
+- if (iobj->suspend) {
+- for (i = 0; i < iobj->size; i += 4)
+- iobj->suspend[i / 4] = nv_ro32(iobj, i);
+- } else
+- return -ENOMEM;
++ if (!iobj->suspend) {
++ ret = -ENOMEM;
++ break;
++ }
++
++ for (i = 0; i < iobj->size; i += 4)
++ iobj->suspend[i / 4] = nv_ro32(iobj, i);
+ }
++
++ mutex_unlock(&imem->base.mutex);
++
++ if (ret)
++ return ret;
+ }
+
+ return nouveau_subdev_fini(&imem->base, suspend);
--- /dev/null
+From d19528a9e4f220519c2cb3f56ef0c84ead3ee440 Mon Sep 17 00:00:00 2001
+From: Aleksi Torhamo <aleksi@torhamo.net>
+Date: Fri, 4 Jan 2013 18:39:13 +0200
+Subject: drm/nouveau/clock: fix support for more than 2 monitors on nve0
+
+From: Aleksi Torhamo <aleksi@torhamo.net>
+
+commit d19528a9e4f220519c2cb3f56ef0c84ead3ee440 upstream.
+
+Fixes regression introduced in commit 70790f4f
+"drm/nouveau/clock: pull in the implementation from all over the place"
+
+When code was moved from nv50_crtc_set_clock to nvc0_clock_pll_set,
+the PLLs it is used for got limited to only the first two VPLLs.
+
+nv50_crtc_set_clock was only called to change VPLLs, so it didn't
+limit what it was used for in any way. Since nvc0_clock_pll_set is
+used for all PLLs, it has to specify which PLLs the code is used for,
+and only listed the first two VPLLs.
+
+Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58735
+
+This patch is a -stable candidate for 3.7.
+
+Signed-off-by: Aleksi Torhamo <aleksi@torhamo.net>
+Tested-by: Aleksi Torhamo <aleksi@torhamo.net>
+Tested-by: Sean Santos <quantheory@gmail.com>
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/core/include/subdev/bios/pll.h | 2 ++
+ drivers/gpu/drm/nouveau/core/subdev/clock/nvc0.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/gpu/drm/nouveau/core/include/subdev/bios/pll.h
++++ b/drivers/gpu/drm/nouveau/core/include/subdev/bios/pll.h
+@@ -38,6 +38,8 @@ enum nvbios_pll_type {
+ PLL_UNK42 = 0x42,
+ PLL_VPLL0 = 0x80,
+ PLL_VPLL1 = 0x81,
++ PLL_VPLL2 = 0x82,
++ PLL_VPLL3 = 0x83,
+ PLL_MAX = 0xff
+ };
+
+--- a/drivers/gpu/drm/nouveau/core/subdev/clock/nvc0.c
++++ b/drivers/gpu/drm/nouveau/core/subdev/clock/nvc0.c
+@@ -52,6 +52,8 @@ nvc0_clock_pll_set(struct nouveau_clock
+ switch (info.type) {
+ case PLL_VPLL0:
+ case PLL_VPLL1:
++ case PLL_VPLL2:
++ case PLL_VPLL3:
+ nv_mask(priv, info.reg + 0x0c, 0x00000000, 0x00000100);
+ nv_wr32(priv, info.reg + 0x04, (P << 16) | (N << 8) | M);
+ nv_wr32(priv, info.reg + 0x10, fN << 16);
--- /dev/null
+From 92441b2263866c27ef48137be5aa6c8c692652fc Mon Sep 17 00:00:00 2001
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+Date: Tue, 18 Dec 2012 20:30:47 +0100
+Subject: drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards
+
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+
+commit 92441b2263866c27ef48137be5aa6c8c692652fc upstream.
+
+Commit 2a44e499 ("drm/nouveau/disp: introduce proper init/fini, separate
+from create/destroy") started to call display init routines on pre-nv50
+hardware on module load. But LVDS init code sets driver state in a way
+which prevents modesetting code from operating properly.
+
+nv04_display_init calls nv04_dfp_restore, which sets encoder->last_dpms to
+NV_DPMS_CLEARED.
+
+drm_crtc_helper_set_mode
+ nv04_dfp_prepare
+ nv04_lvds_dpms(DRM_MODE_DPMS_OFF)
+
+nv04_lvds_dpms checks last_dpms mode (which is NV_DPMS_CLEARED) and wrongly
+assumes it's a "powersaving mode", the new one (DRM_MODE_DPMS_OFF) is too,
+so it skips calling some crucial lvds scripts.
+
+Reported-by: Chris Paulson-Ellis <chris@edesix.com>
+Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/nv04_dfp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/nouveau/nv04_dfp.c
++++ b/drivers/gpu/drm/nouveau/nv04_dfp.c
+@@ -505,7 +505,7 @@ static void nv04_dfp_update_backlight(st
+
+ static inline bool is_powersaving_dpms(int mode)
+ {
+- return (mode != DRM_MODE_DPMS_ON);
++ return mode != DRM_MODE_DPMS_ON && mode != NV_DPMS_CLEARED;
+ }
+
+ static void nv04_lvds_dpms(struct drm_encoder *encoder, int mode)
--- /dev/null
+From f20ebd034eab43fd38c58b11c5bb5fb125e5f7d7 Mon Sep 17 00:00:00 2001
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+Date: Tue, 25 Dec 2012 18:13:22 +0100
+Subject: drm/nv17-50: restore fence buffer on resume
+
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+
+commit f20ebd034eab43fd38c58b11c5bb5fb125e5f7d7 upstream.
+
+Since commit 5e120f6e4b3f35b741c5445dfc755f50128c3c44 "drm/nouveau/fence:
+convert to exec engine, and improve channel sync" nouveau fence sync
+implementation for nv17-50 and nvc0+ started to rely on state of fence buffer
+left by previous sync operation. But as pinned bo's (where fence state is
+stored) are not saved+restored across suspend/resume, we need to do it
+manually.
+
+nvc0+ was fixed by commit d6ba6d215a538a58f0f0026f0961b0b9125e8042
+"drm/nvc0/fence: restore pre-suspend fence buffer context on resume".
+
+Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=50121
+
+Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/nouveau_fence.h | 1 +
+ drivers/gpu/drm/nouveau/nv10_fence.c | 8 ++++++++
+ drivers/gpu/drm/nouveau/nv50_fence.c | 1 +
+ 3 files changed, 10 insertions(+)
+
+--- a/drivers/gpu/drm/nouveau/nouveau_fence.h
++++ b/drivers/gpu/drm/nouveau/nouveau_fence.h
+@@ -60,6 +60,7 @@ u32 nv10_fence_read(struct nouveau_chan
+ void nv10_fence_context_del(struct nouveau_channel *);
+ void nv10_fence_destroy(struct nouveau_drm *);
+ int nv10_fence_create(struct nouveau_drm *);
++void nv17_fence_resume(struct nouveau_drm *drm);
+
+ int nv50_fence_create(struct nouveau_drm *);
+ int nv84_fence_create(struct nouveau_drm *);
+--- a/drivers/gpu/drm/nouveau/nv10_fence.c
++++ b/drivers/gpu/drm/nouveau/nv10_fence.c
+@@ -160,6 +160,13 @@ nv10_fence_destroy(struct nouveau_drm *d
+ kfree(priv);
+ }
+
++void nv17_fence_resume(struct nouveau_drm *drm)
++{
++ struct nv10_fence_priv *priv = drm->fence;
++
++ nouveau_bo_wr32(priv->bo, 0, priv->sequence);
++}
++
+ int
+ nv10_fence_create(struct nouveau_drm *drm)
+ {
+@@ -192,6 +199,7 @@ nv10_fence_create(struct nouveau_drm *dr
+ if (ret == 0) {
+ nouveau_bo_wr32(priv->bo, 0x000, 0x00000000);
+ priv->base.sync = nv17_fence_sync;
++ priv->base.resume = nv17_fence_resume;
+ }
+ }
+
+--- a/drivers/gpu/drm/nouveau/nv50_fence.c
++++ b/drivers/gpu/drm/nouveau/nv50_fence.c
+@@ -119,6 +119,7 @@ nv50_fence_create(struct nouveau_drm *dr
+ if (ret == 0) {
+ nouveau_bo_wr32(priv->bo, 0x000, 0x00000000);
+ priv->base.sync = nv17_fence_sync;
++ priv->base.resume = nv17_fence_resume;
+ }
+
+ if (ret)
--- /dev/null
+From 43f789792e2c7ea2bff37195e4c4b4239e9e02b7 Mon Sep 17 00:00:00 2001
+From: Aleksi Torhamo <aleksi@torhamo.net>
+Date: Wed, 9 Jan 2013 20:08:48 +0200
+Subject: drm/nvc0/fb: fix crash when different mutex is used to protect same list
+
+From: Aleksi Torhamo <aleksi@torhamo.net>
+
+commit 43f789792e2c7ea2bff37195e4c4b4239e9e02b7 upstream.
+
+Fixes regression introduced in commit 861d2107
+"drm/nouveau/fb: merge fb/vram and port to subdev interfaces"
+
+nv50_fb_vram_{new,del} functions were changed to use
+nouveau_subdev->mutex instead of the old nouveau_mm->mutex.
+nvc0_fb_vram_new still uses the nouveau_mm->mutex, but nvc0 doesn't
+have its own fb_vram_del function, using nv50_fb_vram_del instead.
+Because of this, on nvc0 a different mutex ends up being used to protect
+additions and deletions to the same list.
+
+This patch is a -stable candidate for 3.7.
+
+Signed-off-by: Aleksi Torhamo <aleksi@torhamo.net>
+Reported-by: Roy Spliet <r.spliet@student.tudelft.nl>
+Tested-by: Roy Spliet <r.spliet@student.tudelft.nl>
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c
++++ b/drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c
+@@ -86,14 +86,14 @@ nvc0_fb_vram_new(struct nouveau_fb *pfb,
+ mem->memtype = type;
+ mem->size = size;
+
+- mutex_lock(&mm->mutex);
++ mutex_lock(&pfb->base.mutex);
+ do {
+ if (back)
+ ret = nouveau_mm_tail(mm, 1, size, ncmin, align, &r);
+ else
+ ret = nouveau_mm_head(mm, 1, size, ncmin, align, &r);
+ if (ret) {
+- mutex_unlock(&mm->mutex);
++ mutex_unlock(&pfb->base.mutex);
+ pfb->ram.put(pfb, &mem);
+ return ret;
+ }
+@@ -101,7 +101,7 @@ nvc0_fb_vram_new(struct nouveau_fb *pfb,
+ list_add_tail(&r->rl_entry, &mem->regions);
+ size -= r->length;
+ } while (size);
+- mutex_unlock(&mm->mutex);
++ mutex_unlock(&pfb->base.mutex);
+
+ r = list_first_entry(&mem->regions, struct nouveau_mm_node, rl_entry);
+ mem->offset = (u64)r->offset << 12;
mac80211-use-del_timer_sync-for-final-sta-cleanup-timer-deletion.patch
mwifiex-check-wait_event_interruptible-return-value.patch
b43-fix-firmware-loading-when-driver-is-built-into-the-kernel.patch
+usb-option-add-nexpring-np10t-terminal-id.patch
+usb-option-blacklist-network-interface-on-zte-mf880.patch
+usb-option-add-new-mediatek-pid-support.patch
+usb-option-add-telekom-speedstick-lte-ii.patch
+usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch
+usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch
+usb-gadget-dummy-fix-enumeration-with-g_multi.patch
+usb-musb-core-print-new-line-in-the-driver-banner-again.patch
+drm-nv17-50-restore-fence-buffer-on-resume.patch
+drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch
+drm-nouveau-add-locking-around-instobj-list-operations.patch
+drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch
+drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch
--- /dev/null
+From 036915a7a402753c05b8d0529f5fd08805ab46d0 Mon Sep 17 00:00:00 2001
+From: Denis N Ladin <denladin@gmail.com>
+Date: Wed, 26 Dec 2012 18:29:44 +0500
+Subject: USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i"
+
+From: Denis N Ladin <denladin@gmail.com>
+
+commit 036915a7a402753c05b8d0529f5fd08805ab46d0 upstream.
+
+Adding support "PSC Scanning, Magellan 800i" in cdc-acm
+
+Very simple, but very necessary.
+Suitable for all versions of the kernel > 2.6
+
+Signed-off-by: Denis N Ladin <denladin@gmail.com>
+Acked-by: Oliver Neukum <oneukum@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/class/cdc-acm.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/class/cdc-acm.c
++++ b/drivers/usb/class/cdc-acm.c
+@@ -1602,6 +1602,9 @@ static const struct usb_device_id acm_id
+ { USB_DEVICE(0x0572, 0x1340), /* Conexant CX93010-2x UCMxx */
+ .driver_info = NO_UNION_NORMAL,
+ },
++ { USB_DEVICE(0x05f9, 0x4002), /* PSC Scanning, Magellan 800i */
++ .driver_info = NO_UNION_NORMAL,
++ },
+ { USB_DEVICE(0x1bbb, 0x0003), /* Alcatel OT-I650 */
+ .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */
+ },
--- /dev/null
+From 8cf65dc386f3634a43312f436cc7a935476a40c4 Mon Sep 17 00:00:00 2001
+From: Tomasz Mloduchowski <q@qdot.me>
+Date: Sun, 13 Jan 2013 23:32:53 +0100
+Subject: usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added
+
+From: Tomasz Mloduchowski <q@qdot.me>
+
+commit 8cf65dc386f3634a43312f436cc7a935476a40c4 upstream.
+
+Simple fix to add support for Crucible Technologies COMET Caller ID
+USB decoder - a device containing FTDI USB/Serial converter chip,
+handling 1200bps CallerID messages decoded from the phone line -
+adding correct USB PID is sufficient.
+
+Tested to apply cleanly and work flawlessly against 3.6.9, 3.7.0-rc8
+and 3.8.0-rc3 on both amd64 and x86 arches.
+
+Signed-off-by: Tomasz Mloduchowski <q@qdot.me>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 2 ++
+ drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++
+ 2 files changed, 8 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -876,6 +876,8 @@ static struct usb_device_id id_table_com
+ { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+ { USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) },
++ /* Crucible Devices */
++ { USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) },
+ { }, /* Optional parameter entry */
+ { } /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1259,3 +1259,9 @@
+ * ATI command output: Cinterion MC55i
+ */
+ #define FTDI_CINTERION_MC55I_PID 0xA951
++
++/*
++ * Product: Comet Caller ID decoder
++ * Manufacturer: Crucible Technologies
++ */
++#define FTDI_CT_COMET_PID 0x8e08
--- /dev/null
+From 1d16638e3b9cc195bac18a8fcbca748f33c1bc24 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Tue, 20 Nov 2012 13:23:15 +0100
+Subject: usb: gadget: dummy: fix enumeration with g_multi
+
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+
+commit 1d16638e3b9cc195bac18a8fcbca748f33c1bc24 upstream.
+
+If we do have endpoints named like "ep-a" then bEndpointAddress is
+counted internally by the gadget framework.
+
+If we do have endpoints named like "ep-1" then bEndpointAddress is
+assigned from the digit after "ep-".
+
+If we do have both, then it is likely that after we used up the
+"generic" endpoints we will use the digits and thus assign one
+bEndpointAddress to multiple endpoints.
+
+This theory can be proofed by using the completely enabled g_multi.
+Without this patch, the mass storage won't enumerate and times out
+because it shares endpoints with RNDIS.
+
+This patch also adds fills up the endpoints list so we have in total
+endpoints 1 to 15 in + out available while some of them are restricted
+to certain types like BULK or ISO. Without this change the nokia gadget
+won't load because the system does not provide enough (BULK) endpoints
+but it did before ep-a - ep-f were removed.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/gadget/dummy_hcd.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/gadget/dummy_hcd.c
++++ b/drivers/usb/gadget/dummy_hcd.c
+@@ -126,10 +126,7 @@ static const char ep0name[] = "ep0";
+ static const char *const ep_name[] = {
+ ep0name, /* everyone has ep0 */
+
+- /* act like a net2280: high speed, six configurable endpoints */
+- "ep-a", "ep-b", "ep-c", "ep-d", "ep-e", "ep-f",
+-
+- /* or like pxa250: fifteen fixed function endpoints */
++ /* act like a pxa250: fifteen fixed function endpoints */
+ "ep1in-bulk", "ep2out-bulk", "ep3in-iso", "ep4out-iso", "ep5in-int",
+ "ep6in-bulk", "ep7out-bulk", "ep8in-iso", "ep9out-iso", "ep10in-int",
+ "ep11in-bulk", "ep12out-bulk", "ep13in-iso", "ep14out-iso",
+@@ -137,6 +134,10 @@ static const char *const ep_name[] = {
+
+ /* or like sa1100: two fixed function endpoints */
+ "ep1out-bulk", "ep2in-bulk",
++
++ /* and now some generic EPs so we have enough in multi config */
++ "ep3out", "ep4in", "ep5out", "ep6out", "ep7in", "ep8out", "ep9in",
++ "ep10out", "ep11out", "ep12in", "ep13out", "ep14in", "ep15out",
+ };
+ #define DUMMY_ENDPOINTS ARRAY_SIZE(ep_name)
+
--- /dev/null
+From 2ac788f705e5118dd45204e7a5bc8d5bb6873835 Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Wed, 14 Nov 2012 18:49:50 +0300
+Subject: usb: musb: core: print new line in the driver banner again
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+commit 2ac788f705e5118dd45204e7a5bc8d5bb6873835 upstream.
+
+Commit 5c8a86e10a7c164f44537fabdc169fd8b4e7a440 (usb: musb: drop unneeded
+musb_debug trickery) erroneously removed '\n' from the driver's banner.
+Concatenate all the banner substrings while adding it back...
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/musb/musb_core.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2351,10 +2351,7 @@ static int __init musb_init(void)
+ if (usb_disabled())
+ return 0;
+
+- pr_info("%s: version " MUSB_VERSION ", "
+- "?dma?"
+- ", "
+- "otg (peripheral+host)",
++ pr_info("%s: version " MUSB_VERSION ", ?dma?, otg (peripheral+host)\n",
+ musb_driver_name);
+ return platform_driver_register(&musb_driver);
+ }
--- /dev/null
+From 94a85b633829b946eef53fc1825d526312fb856f Mon Sep 17 00:00:00 2001
+From: "Quentin.Li" <snowmanli88@163.com>
+Date: Wed, 26 Dec 2012 16:58:22 +0800
+Subject: USB: option: Add new MEDIATEK PID support
+
+From: "Quentin.Li" <snowmanli88@163.com>
+
+commit 94a85b633829b946eef53fc1825d526312fb856f upstream.
+
+In option.c, add some new MEDIATEK PIDs support for MEDIATEK new products. This
+is a MEDIATEK inc. release patch.
+
+Signed-off-by: Quentin.Li <snowmanli88@163.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -430,9 +430,12 @@ static void option_instat_callback(struc
+ #define MEDIATEK_VENDOR_ID 0x0e8d
+ #define MEDIATEK_PRODUCT_DC_1COM 0x00a0
+ #define MEDIATEK_PRODUCT_DC_4COM 0x00a5
++#define MEDIATEK_PRODUCT_DC_4COM2 0x00a7
+ #define MEDIATEK_PRODUCT_DC_5COM 0x00a4
+ #define MEDIATEK_PRODUCT_7208_1COM 0x7101
+ #define MEDIATEK_PRODUCT_7208_2COM 0x7102
++#define MEDIATEK_PRODUCT_7103_2COM 0x7103
++#define MEDIATEK_PRODUCT_7106_2COM 0x7106
+ #define MEDIATEK_PRODUCT_FP_1COM 0x0003
+ #define MEDIATEK_PRODUCT_FP_2COM 0x0023
+ #define MEDIATEK_PRODUCT_FPDC_1COM 0x0043
+@@ -1300,6 +1303,10 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FP_2COM, 0x0a, 0x00, 0x00) },
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_1COM, 0x0a, 0x00, 0x00) },
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_2COM, 0x0a, 0x00, 0x00) },
++ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7103_2COM, 0xff, 0x00, 0x00) },
++ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7106_2COM, 0x02, 0x02, 0x01) },
++ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
++ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
+ { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
+ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) },
+ { } /* Terminating entry */
--- /dev/null
+From ad86e58661b38b279b7519d4e49c7a19dc1654bb Mon Sep 17 00:00:00 2001
+From: Dzianis Kahanovich <mahatma@bspu.unibel.by>
+Date: Mon, 3 Dec 2012 16:06:26 +0300
+Subject: USB: option: add Nexpring NP10T terminal id
+
+From: Dzianis Kahanovich <mahatma@bspu.unibel.by>
+
+commit ad86e58661b38b279b7519d4e49c7a19dc1654bb upstream.
+
+Hyundai Petatel Inc. Nexpring NP10T terminal (EV-DO rev.A USB modem) ID
+
+Signed-off-by: Denis Kaganovich <mahatma@eu.by>
+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
+@@ -442,6 +442,10 @@ static void option_instat_callback(struc
+ #define CELLIENT_VENDOR_ID 0x2692
+ #define CELLIENT_PRODUCT_MEN200 0x9005
+
++/* Hyundai Petatel Inc. products */
++#define PETATEL_VENDOR_ID 0x1ff4
++#define PETATEL_PRODUCT_NP10T 0x600e
++
+ /* some devices interfaces need special handling due to a number of reasons */
+ enum option_blacklist_reason {
+ OPTION_BLACKLIST_NONE = 0,
+@@ -1296,6 +1300,7 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_1COM, 0x0a, 0x00, 0x00) },
+ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_2COM, 0x0a, 0x00, 0x00) },
+ { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
++ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) },
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
--- /dev/null
+From 5ec0085440ef8c2cf50002b34d5a504ee12aa2bf Mon Sep 17 00:00:00 2001
+From: Bjørn Mork <bjorn@mork.no>
+Date: Fri, 28 Dec 2012 17:29:52 +0100
+Subject: USB: option: add Telekom Speedstick LTE II
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit 5ec0085440ef8c2cf50002b34d5a504ee12aa2bf upstream.
+
+also known as Alcatel One Touch L100V LTE
+
+The driver description files gives these names to the vendor specific
+functions on this modem:
+
+ Application1: VID_1BBB&PID_011E&MI_00
+ Application2: VID_1BBB&PID_011E&MI_01
+ Modem: VID_1BBB&PID_011E&MI_03
+ Ethernet: VID_1BBB&PID_011E&MI_04
+
+Reported-by: Thomas Schäfer <tschaefer@t-online.de>
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -289,6 +289,7 @@ static void option_instat_callback(struc
+ #define ALCATEL_VENDOR_ID 0x1bbb
+ #define ALCATEL_PRODUCT_X060S_X200 0x0000
+ #define ALCATEL_PRODUCT_X220_X500D 0x0017
++#define ALCATEL_PRODUCT_L100V 0x011e
+
+ #define PIRELLI_VENDOR_ID 0x1266
+ #define PIRELLI_PRODUCT_C100_1 0x1002
+@@ -1199,6 +1200,8 @@ static const struct usb_device_id option
+ .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist
+ },
+ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D) },
++ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L100V),
++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
+ { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) },
+ { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
--- /dev/null
+From fab38246f318edcd0dcb8fd3852a47cf8938878a Mon Sep 17 00:00:00 2001
+From: Bjørn Mork <bjorn@mork.no>
+Date: Wed, 19 Dec 2012 15:15:17 +0100
+Subject: USB: option: blacklist network interface on ZTE MF880
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit fab38246f318edcd0dcb8fd3852a47cf8938878a upstream.
+
+The driver description files gives these names to the vendor specific
+functions on this modem:
+
+ diag: VID_19D2&PID_0284&MI_00
+ nmea: VID_19D2&PID_0284&MI_01
+ at: VID_19D2&PID_0284&MI_02
+ mdm: VID_19D2&PID_0284&MI_03
+ net: VID_19D2&PID_0284&MI_04
+
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -928,7 +928,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0257, 0xff, 0xff, 0xff), /* ZTE MF821 */
+ .driver_info = (kernel_ulong_t)&net_intf3_blacklist },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0265, 0xff, 0xff, 0xff) },
+- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0284, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0284, 0xff, 0xff, 0xff), /* ZTE MF880 */
++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0317, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0326, 0xff, 0xff, 0xff),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },