]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.7-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Jan 2013 12:52:04 +0000 (04:52 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Jan 2013 12:52:04 +0000 (04:52 -0800)
added patches:
drm-nouveau-add-locking-around-instobj-list-operations.patch
drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch
drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch
drm-nv17-50-restore-fence-buffer-on-resume.patch
drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch
usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch
usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch
usb-gadget-dummy-fix-enumeration-with-g_multi.patch
usb-musb-core-print-new-line-in-the-driver-banner-again.patch
usb-option-add-new-mediatek-pid-support.patch
usb-option-add-nexpring-np10t-terminal-id.patch
usb-option-add-telekom-speedstick-lte-ii.patch
usb-option-blacklist-network-interface-on-zte-mf880.patch

14 files changed:
queue-3.7/drm-nouveau-add-locking-around-instobj-list-operations.patch [new file with mode: 0644]
queue-3.7/drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch [new file with mode: 0644]
queue-3.7/drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch [new file with mode: 0644]
queue-3.7/drm-nv17-50-restore-fence-buffer-on-resume.patch [new file with mode: 0644]
queue-3.7/drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch [new file with mode: 0644]
queue-3.7/series
queue-3.7/usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch [new file with mode: 0644]
queue-3.7/usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch [new file with mode: 0644]
queue-3.7/usb-gadget-dummy-fix-enumeration-with-g_multi.patch [new file with mode: 0644]
queue-3.7/usb-musb-core-print-new-line-in-the-driver-banner-again.patch [new file with mode: 0644]
queue-3.7/usb-option-add-new-mediatek-pid-support.patch [new file with mode: 0644]
queue-3.7/usb-option-add-nexpring-np10t-terminal-id.patch [new file with mode: 0644]
queue-3.7/usb-option-add-telekom-speedstick-lte-ii.patch [new file with mode: 0644]
queue-3.7/usb-option-blacklist-network-interface-on-zte-mf880.patch [new file with mode: 0644]

diff --git a/queue-3.7/drm-nouveau-add-locking-around-instobj-list-operations.patch b/queue-3.7/drm-nouveau-add-locking-around-instobj-list-operations.patch
new file mode 100644 (file)
index 0000000..58bb1c7
--- /dev/null
@@ -0,0 +1,97 @@
+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);
diff --git a/queue-3.7/drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch b/queue-3.7/drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch
new file mode 100644 (file)
index 0000000..ca6fa95
--- /dev/null
@@ -0,0 +1,57 @@
+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);
diff --git a/queue-3.7/drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch b/queue-3.7/drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch
new file mode 100644 (file)
index 0000000..be694c7
--- /dev/null
@@ -0,0 +1,45 @@
+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)
diff --git a/queue-3.7/drm-nv17-50-restore-fence-buffer-on-resume.patch b/queue-3.7/drm-nv17-50-restore-fence-buffer-on-resume.patch
new file mode 100644 (file)
index 0000000..44a20bb
--- /dev/null
@@ -0,0 +1,75 @@
+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)
diff --git a/queue-3.7/drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch b/queue-3.7/drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch
new file mode 100644 (file)
index 0000000..f93ecef
--- /dev/null
@@ -0,0 +1,59 @@
+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;
index 3798ef542501670bf41be828d2be0ae991b8ba69..a47150b04d61eedbf89afa635817e93b92d4e141 100644 (file)
@@ -154,3 +154,16 @@ mac80211-fix-station-destruction-in-ap-mesh-modes.patch
 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
diff --git a/queue-3.7/usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch b/queue-3.7/usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch
new file mode 100644 (file)
index 0000000..fd95579
--- /dev/null
@@ -0,0 +1,34 @@
+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 */
+       },
diff --git a/queue-3.7/usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch b/queue-3.7/usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch
new file mode 100644 (file)
index 0000000..8a14054
--- /dev/null
@@ -0,0 +1,48 @@
+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
diff --git a/queue-3.7/usb-gadget-dummy-fix-enumeration-with-g_multi.patch b/queue-3.7/usb-gadget-dummy-fix-enumeration-with-g_multi.patch
new file mode 100644 (file)
index 0000000..733120b
--- /dev/null
@@ -0,0 +1,63 @@
+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)
diff --git a/queue-3.7/usb-musb-core-print-new-line-in-the-driver-banner-again.patch b/queue-3.7/usb-musb-core-print-new-line-in-the-driver-banner-again.patch
new file mode 100644 (file)
index 0000000..6fc68f5
--- /dev/null
@@ -0,0 +1,35 @@
+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);
+ }
diff --git a/queue-3.7/usb-option-add-new-mediatek-pid-support.patch b/queue-3.7/usb-option-add-new-mediatek-pid-support.patch
new file mode 100644 (file)
index 0000000..3141e52
--- /dev/null
@@ -0,0 +1,45 @@
+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 */
diff --git a/queue-3.7/usb-option-add-nexpring-np10t-terminal-id.patch b/queue-3.7/usb-option-add-nexpring-np10t-terminal-id.patch
new file mode 100644 (file)
index 0000000..559a27c
--- /dev/null
@@ -0,0 +1,39 @@
+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);
diff --git a/queue-3.7/usb-option-add-telekom-speedstick-lte-ii.patch b/queue-3.7/usb-option-add-telekom-speedstick-lte-ii.patch
new file mode 100644 (file)
index 0000000..5de3a09
--- /dev/null
@@ -0,0 +1,46 @@
+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),
diff --git a/queue-3.7/usb-option-blacklist-network-interface-on-zte-mf880.patch b/queue-3.7/usb-option-blacklist-network-interface-on-zte-mf880.patch
new file mode 100644 (file)
index 0000000..4b8109d
--- /dev/null
@@ -0,0 +1,37 @@
+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 },