From c3865f3b592604454a7f8956b6003d9c465e2c1b Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 15 Jan 2013 04:52:04 -0800 Subject: [PATCH] 3.7-stable patches 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 --- ...cking-around-instobj-list-operations.patch | 97 +++++++++++++++++++ ...ort-for-more-than-2-monitors-on-nve0.patch | 57 +++++++++++ ...-screen-regression-on-pre-nv50-cards.patch | 45 +++++++++ ...17-50-restore-fence-buffer-on-resume.patch | 75 ++++++++++++++ ...t-mutex-is-used-to-protect-same-list.patch | 59 +++++++++++ queue-3.7/series | 13 +++ ...pport-for-psc-scanning-magellan-800i.patch | 34 +++++++ ...chnologies-comet-caller-id-pid-added.patch | 48 +++++++++ ...t-dummy-fix-enumeration-with-g_multi.patch | 63 ++++++++++++ ...-new-line-in-the-driver-banner-again.patch | 35 +++++++ ...-option-add-new-mediatek-pid-support.patch | 45 +++++++++ ...ption-add-nexpring-np10t-terminal-id.patch | 39 ++++++++ ...option-add-telekom-speedstick-lte-ii.patch | 46 +++++++++ ...klist-network-interface-on-zte-mf880.patch | 37 +++++++ 14 files changed, 693 insertions(+) create mode 100644 queue-3.7/drm-nouveau-add-locking-around-instobj-list-operations.patch create mode 100644 queue-3.7/drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch create mode 100644 queue-3.7/drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch create mode 100644 queue-3.7/drm-nv17-50-restore-fence-buffer-on-resume.patch create mode 100644 queue-3.7/drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch create mode 100644 queue-3.7/usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch create mode 100644 queue-3.7/usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch create mode 100644 queue-3.7/usb-gadget-dummy-fix-enumeration-with-g_multi.patch create mode 100644 queue-3.7/usb-musb-core-print-new-line-in-the-driver-banner-again.patch create mode 100644 queue-3.7/usb-option-add-new-mediatek-pid-support.patch create mode 100644 queue-3.7/usb-option-add-nexpring-np10t-terminal-id.patch create mode 100644 queue-3.7/usb-option-add-telekom-speedstick-lte-ii.patch create mode 100644 queue-3.7/usb-option-blacklist-network-interface-on-zte-mf880.patch 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 index 00000000000..58bb1c7d6aa --- /dev/null +++ b/queue-3.7/drm-nouveau-add-locking-around-instobj-list-operations.patch @@ -0,0 +1,97 @@ +From 4c4101d29fb6c63f78791d02c437702b11e1d4f0 Mon Sep 17 00:00:00 2001 +From: Marcin Slusarz +Date: Sun, 2 Dec 2012 12:56:22 +0100 +Subject: drm/nouveau: add locking around instobj list operations + +From: Marcin Slusarz + +commit 4c4101d29fb6c63f78791d02c437702b11e1d4f0 upstream. + +Fixes memory corruptions, oopses, etc. when multiple gpuobjs are +simultaneously created or destroyed. + +Signed-off-by: Marcin Slusarz +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..ca6fa954f9e --- /dev/null +++ b/queue-3.7/drm-nouveau-clock-fix-support-for-more-than-2-monitors-on-nve0.patch @@ -0,0 +1,57 @@ +From d19528a9e4f220519c2cb3f56ef0c84ead3ee440 Mon Sep 17 00:00:00 2001 +From: Aleksi Torhamo +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 + +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 +Tested-by: Aleksi Torhamo +Tested-by: Sean Santos +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..be694c7afdc --- /dev/null +++ b/queue-3.7/drm-nouveau-fix-blank-lvds-screen-regression-on-pre-nv50-cards.patch @@ -0,0 +1,45 @@ +From 92441b2263866c27ef48137be5aa6c8c692652fc Mon Sep 17 00:00:00 2001 +From: Marcin Slusarz +Date: Tue, 18 Dec 2012 20:30:47 +0100 +Subject: drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards + +From: Marcin Slusarz + +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 +Signed-off-by: Marcin Slusarz +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..44a20bb0818 --- /dev/null +++ b/queue-3.7/drm-nv17-50-restore-fence-buffer-on-resume.patch @@ -0,0 +1,75 @@ +From f20ebd034eab43fd38c58b11c5bb5fb125e5f7d7 Mon Sep 17 00:00:00 2001 +From: Marcin Slusarz +Date: Tue, 25 Dec 2012 18:13:22 +0100 +Subject: drm/nv17-50: restore fence buffer on resume + +From: Marcin Slusarz + +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 +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..f93ecef111b --- /dev/null +++ b/queue-3.7/drm-nvc0-fb-fix-crash-when-different-mutex-is-used-to-protect-same-list.patch @@ -0,0 +1,59 @@ +From 43f789792e2c7ea2bff37195e4c4b4239e9e02b7 Mon Sep 17 00:00:00 2001 +From: Aleksi Torhamo +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 + +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 +Reported-by: Roy Spliet +Tested-by: Roy Spliet +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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; diff --git a/queue-3.7/series b/queue-3.7/series index 3798ef54250..a47150b04d6 100644 --- a/queue-3.7/series +++ b/queue-3.7/series @@ -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 index 00000000000..fd95579dff3 --- /dev/null +++ b/queue-3.7/usb-cdc-acm-add-support-for-psc-scanning-magellan-800i.patch @@ -0,0 +1,34 @@ +From 036915a7a402753c05b8d0529f5fd08805ab46d0 Mon Sep 17 00:00:00 2001 +From: Denis N Ladin +Date: Wed, 26 Dec 2012 18:29:44 +0500 +Subject: USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i" + +From: Denis N Ladin + +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 +Acked-by: Oliver Neukum +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..8a140544133 --- /dev/null +++ b/queue-3.7/usb-ftdi_sio-crucible-technologies-comet-caller-id-pid-added.patch @@ -0,0 +1,48 @@ +From 8cf65dc386f3634a43312f436cc7a935476a40c4 Mon Sep 17 00:00:00 2001 +From: Tomasz Mloduchowski +Date: Sun, 13 Jan 2013 23:32:53 +0100 +Subject: usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added + +From: Tomasz Mloduchowski + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..733120b7e24 --- /dev/null +++ b/queue-3.7/usb-gadget-dummy-fix-enumeration-with-g_multi.patch @@ -0,0 +1,63 @@ +From 1d16638e3b9cc195bac18a8fcbca748f33c1bc24 Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Tue, 20 Nov 2012 13:23:15 +0100 +Subject: usb: gadget: dummy: fix enumeration with g_multi + +From: Sebastian Andrzej Siewior + +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 +Acked-by: Alan Stern +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..6fc68f5b5d2 --- /dev/null +++ b/queue-3.7/usb-musb-core-print-new-line-in-the-driver-banner-again.patch @@ -0,0 +1,35 @@ +From 2ac788f705e5118dd45204e7a5bc8d5bb6873835 Mon Sep 17 00:00:00 2001 +From: Sergei Shtylyov +Date: Wed, 14 Nov 2012 18:49:50 +0300 +Subject: usb: musb: core: print new line in the driver banner again + +From: Sergei Shtylyov + +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 +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..3141e52b972 --- /dev/null +++ b/queue-3.7/usb-option-add-new-mediatek-pid-support.patch @@ -0,0 +1,45 @@ +From 94a85b633829b946eef53fc1825d526312fb856f Mon Sep 17 00:00:00 2001 +From: "Quentin.Li" +Date: Wed, 26 Dec 2012 16:58:22 +0800 +Subject: USB: option: Add new MEDIATEK PID support + +From: "Quentin.Li" + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..559a27cb415 --- /dev/null +++ b/queue-3.7/usb-option-add-nexpring-np10t-terminal-id.patch @@ -0,0 +1,39 @@ +From ad86e58661b38b279b7519d4e49c7a19dc1654bb Mon Sep 17 00:00:00 2001 +From: Dzianis Kahanovich +Date: Mon, 3 Dec 2012 16:06:26 +0300 +Subject: USB: option: add Nexpring NP10T terminal id + +From: Dzianis Kahanovich + +commit ad86e58661b38b279b7519d4e49c7a19dc1654bb upstream. + +Hyundai Petatel Inc. Nexpring NP10T terminal (EV-DO rev.A USB modem) ID + +Signed-off-by: Denis Kaganovich +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..5de3a096307 --- /dev/null +++ b/queue-3.7/usb-option-add-telekom-speedstick-lte-ii.patch @@ -0,0 +1,46 @@ +From 5ec0085440ef8c2cf50002b34d5a504ee12aa2bf Mon Sep 17 00:00:00 2001 +From: Bjørn Mork +Date: Fri, 28 Dec 2012 17:29:52 +0100 +Subject: USB: option: add Telekom Speedstick LTE II + +From: Bjørn Mork + +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 +Signed-off-by: Bjørn Mork +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..4b8109d3fd8 --- /dev/null +++ b/queue-3.7/usb-option-blacklist-network-interface-on-zte-mf880.patch @@ -0,0 +1,37 @@ +From fab38246f318edcd0dcb8fd3852a47cf8938878a Mon Sep 17 00:00:00 2001 +From: Bjørn Mork +Date: Wed, 19 Dec 2012 15:15:17 +0100 +Subject: USB: option: blacklist network interface on ZTE MF880 + +From: Bjørn Mork + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 }, -- 2.47.3