]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.27 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 20 Mar 2009 21:43:12 +0000 (14:43 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 20 Mar 2009 21:43:12 +0000 (14:43 -0700)
16 files changed:
queue-2.6.27/fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch [new file with mode: 0644]
queue-2.6.27/powerpc-remove-extra-semicolon-in-fsl_soc.c.patch [new file with mode: 0644]
queue-2.6.27/series
queue-2.6.27/usb-add-device-id-for-option-gtm380-to-option-driver.patch [new file with mode: 0644]
queue-2.6.27/usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch [new file with mode: 0644]
queue-2.6.27/usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch [new file with mode: 0644]
queue-2.6.27/usb-ehci-fix-isochronous-urb-leak.patch [new file with mode: 0644]
queue-2.6.27/usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch [new file with mode: 0644]
queue-2.6.27/usb-option.c-add-zte-622-modem-device.patch [new file with mode: 0644]
queue-2.6.27/usb-serial-add-ftdi-usb-serial-converter-devices.patch [new file with mode: 0644]
queue-2.6.27/usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch [new file with mode: 0644]
queue-2.6.27/usb-serial-new-cp2101-device-id.patch [new file with mode: 0644]
queue-2.6.27/usb-storage-unusual-usb-device-prolific-2507-variation-added.patch [new file with mode: 0644]
queue-2.6.27/usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch [new file with mode: 0644]
queue-2.6.27/usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch [new file with mode: 0644]
queue-2.6.27/usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch [new file with mode: 0644]

diff --git a/queue-2.6.27/fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch b/queue-2.6.27/fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch
new file mode 100644 (file)
index 0000000..d96ae8b
--- /dev/null
@@ -0,0 +1,125 @@
+From joe.korty@ccur.com  Fri Mar 20 14:26:10 2009
+From: Joe Korty <joe.korty@ccur.com>
+Date: Thu, 19 Mar 2009 13:27:44 -0400
+Subject: Fix misreporting of #cores as #hyperthreads for Q9550
+To: stable@kernel.org
+Cc: Ingo Molnar <mingo@elte.hu>, "H. Peter Anvin" <hpa@linux.intel.com>
+Message-ID: <20090319172744.GA2600@tsunami.ccur.com>
+
+From: Joe Korty <joe.korty@ccur.com>
+
+Fix misreporting of #cores for the Intel Quad Core Q9550.
+
+For the Q9550, in x86_64 mode, /proc/cpuinfo mistakenly
+reports the #cores present as the #hyperthreads present.
+i386 mode was not examined but is assumed to have the
+same problem.
+
+A backport of the following three 2.6.29-rc1 patches
+fixes the problem:
+  066941bd4eeb159307a5d7d795100d0887c00442:
+    [PATCH] x86: unmask CPUID levels on Intel CPUs
+  99fb4d349db7e7dacb2099c5cc320a9e2d31c1ef:
+    [PATCH] x86: unmask CPUID levels on Intel CPUs, fix
+  bdf21a49bab28f0d9613e8d8724ef9c9168b61b9:
+    [PATCH] x86: add MSR_IA32_MISC_ENABLE bits to <asm/msr-index.h>
+
+From the first patch: "If the CPUID limit bit in
+MSR_IA32_MISC_ENABLE is set, clear it to make all CPUID
+information available.  This is required for some features
+to work, in particular XSAVE."
+
+Originally-Developed-by: H. Peter Anvin <hpa@linux.intel.com>
+Backported-by: Joe Korty <joe.korty@ccur.com>
+Cc: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Joe Korty <joe.korty@ccur.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/cpu/intel.c    |   13 +++++++++++++
+ arch/x86/kernel/cpu/intel_64.c |   13 +++++++++++++
+ include/asm-x86/msr-index.h    |   29 +++++++++++++++++++++++++++++
+ 3 files changed, 55 insertions(+)
+
+--- a/arch/x86/kernel/cpu/intel_64.c
++++ b/arch/x86/kernel/cpu/intel_64.c
+@@ -9,6 +9,19 @@
+ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
+ {
++      /* Unmask CPUID levels if masked: */
++      if (c->x86 == 6 && c->x86_model >= 15) {
++              u64 misc_enable;
++
++              rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
++
++              if (misc_enable & MSR_IA32_MISC_ENABLE_LIMIT_CPUID) {
++                      misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID;
++                      wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
++                      c->cpuid_level = cpuid_eax(0);
++              }
++      }
++
+       if ((c->x86 == 0xf && c->x86_model >= 0x03) ||
+           (c->x86 == 0x6 && c->x86_model >= 0x0e))
+               set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
+--- a/arch/x86/kernel/cpu/intel.c
++++ b/arch/x86/kernel/cpu/intel.c
+@@ -32,6 +32,19 @@ struct movsl_mask movsl_mask __read_most
+ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
+ {
++      /* Unmask CPUID levels if masked: */
++      if (c->x86 == 6 && c->x86_model >= 15) {
++              u64 misc_enable;
++
++              rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
++
++              if (misc_enable & MSR_IA32_MISC_ENABLE_LIMIT_CPUID) {
++                      misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID;
++                      wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
++                      c->cpuid_level = cpuid_eax(0);
++              }
++      }
++
+       /* Netburst reports 64 bytes clflush size, but does IO in 128 bytes */
+       if (c->x86 == 15 && c->x86_cache_alignment == 64)
+               c->x86_cache_alignment = 128;
+--- a/include/asm-x86/msr-index.h
++++ b/include/asm-x86/msr-index.h
+@@ -196,6 +196,35 @@
+ #define MSR_IA32_THERM_STATUS         0x0000019c
+ #define MSR_IA32_MISC_ENABLE          0x000001a0
++/* MISC_ENABLE bits: architectural */
++#define MSR_IA32_MISC_ENABLE_FAST_STRING      (1ULL << 0)
++#define MSR_IA32_MISC_ENABLE_TCC              (1ULL << 1)
++#define MSR_IA32_MISC_ENABLE_EMON             (1ULL << 7)
++#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL      (1ULL << 11)
++#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL     (1ULL << 12)
++#define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP       (1ULL << 16)
++#define MSR_IA32_MISC_ENABLE_MWAIT            (1ULL << 18)
++#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID      (1ULL << 22)
++#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE     (1ULL << 23)
++#define MSR_IA32_MISC_ENABLE_XD_DISABLE               (1ULL << 34)
++
++/* MISC_ENABLE bits: model-specific, meaning may vary from core to core */
++#define MSR_IA32_MISC_ENABLE_X87_COMPAT               (1ULL << 2)
++#define MSR_IA32_MISC_ENABLE_TM1              (1ULL << 3)
++#define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE       (1ULL << 4)
++#define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE  (1ULL << 6)
++#define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK    (1ULL << 8)
++#define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE (1ULL << 9)
++#define MSR_IA32_MISC_ENABLE_FERR             (1ULL << 10)
++#define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX   (1ULL << 10)
++#define MSR_IA32_MISC_ENABLE_TM2              (1ULL << 13)
++#define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE (1ULL << 19)
++#define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK   (1ULL << 20)
++#define MSR_IA32_MISC_ENABLE_L1D_CONTEXT      (1ULL << 24)
++#define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE (1ULL << 37)
++#define MSR_IA32_MISC_ENABLE_TURBO_DISABLE    (1ULL << 38)
++#define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE  (1ULL << 39)
++
+ /* Intel Model 6 */
+ #define MSR_P6_EVNTSEL0                       0x00000186
+ #define MSR_P6_EVNTSEL1                       0x00000187
diff --git a/queue-2.6.27/powerpc-remove-extra-semicolon-in-fsl_soc.c.patch b/queue-2.6.27/powerpc-remove-extra-semicolon-in-fsl_soc.c.patch
new file mode 100644 (file)
index 0000000..a93362e
--- /dev/null
@@ -0,0 +1,36 @@
+From jdaniel@computer.org  Fri Mar 20 14:18:34 2009
+From: Johns Daniel <jdaniel@computer.org>
+Date: Sat, 14 Mar 2009 10:03:51 -0500
+Subject: powerpc: Remove extra semicolon in fsl_soc.c
+To: greg@kroah.com
+Cc: grant.likely@secretlab.ca, afleming@freescale.com,  linuxppc-dev@ozlabs.org, stable@kernel.org
+Message-ID: <49BBC757.7090001@computer.org>
+
+From: Johns Daniel <jdaniel@computer.org>
+
+TSEC/MDIO will not work with older device trees because of a semicolon
+at the end of a macro resulting in an empty for loop body.
+
+This fix only applies to 2.6.28; this code is gone in 2.6.29, according
+to Grant Likely!
+
+Signed-off-by: Johns Daniel <johns.daniel@gmail.com>
+Acked-by: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ arch/powerpc/sysdev/fsl_soc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/powerpc/sysdev/fsl_soc.c
++++ b/arch/powerpc/sysdev/fsl_soc.c
+@@ -255,7 +255,7 @@ static int __init gfar_mdio_of_init(void
+               gfar_mdio_of_init_one(np);
+       /* try the deprecated version */
+-      for_each_compatible_node(np, "mdio", "gianfar");
++      for_each_compatible_node(np, "mdio", "gianfar")
+               gfar_mdio_of_init_one(np);
+       return 0;
index 24c5d0c8ae0dff648d67ebbc9c94720e25d485f7..7127420b2cae5c3d5e1918b6210190837f9ee12e 100644 (file)
@@ -15,3 +15,18 @@ eventfd-remove-fput-call-from-possible-irq-context.patch
 s390-__div64_31-broken-for-config_march_g5.patch
 thinkpad-acpi-fix-module-autoloading-for-older-models.patch
 v4l-dvb-cx23885-fix-oops-for-mixed-install-of-analog-and-digital-only-cards.patch
+fix-misreporting-of-cores-as-hyperthreads-for-q9550.patch
+powerpc-remove-extra-semicolon-in-fsl_soc.c.patch
+usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch
+usb-ehci-fix-isochronous-urb-leak.patch
+usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch
+usb-option.c-add-zte-622-modem-device.patch
+usb-add-device-id-for-option-gtm380-to-option-driver.patch
+usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch
+usb-serial-add-ftdi-usb-serial-converter-devices.patch
+usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch
+usb-serial-new-cp2101-device-id.patch
+usb-storage-unusual-usb-device-prolific-2507-variation-added.patch
+usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch
+usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch
+usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch
diff --git a/queue-2.6.27/usb-add-device-id-for-option-gtm380-to-option-driver.patch b/queue-2.6.27/usb-add-device-id-for-option-gtm380-to-option-driver.patch
new file mode 100644 (file)
index 0000000..61194bf
--- /dev/null
@@ -0,0 +1,37 @@
+From e7f2f0d77a7b483a26054f29ba8393831b25a8a4 Mon Sep 17 00:00:00 2001
+From: Achilleas Kotsis <akots@exponent.gr>
+Date: Mon, 16 Mar 2009 16:35:02 +0200
+Subject: USB: Add device id for Option GTM380 to option driver
+
+From: Achilleas Kotsis <akots@exponent.gr>
+
+commit e7f2f0d77a7b483a26054f29ba8393831b25a8a4 upstream.
+
+Option GTM380 in Modem mode uses Product ID 0x7201. This has been tested and works
+on production systems for over 6 months.
+
+Signed-off-by: Achilleas Kotsis <akots@exponent.gr>
+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
+@@ -89,6 +89,7 @@ static int  option_send_setup(struct tty
+ #define OPTION_PRODUCT_ETNA_MODEM_GT          0x7041
+ #define OPTION_PRODUCT_ETNA_MODEM_EX          0x7061
+ #define OPTION_PRODUCT_ETNA_KOI_MODEM         0x7100
++#define OPTION_PRODUCT_GTM380_MODEM           0x7201
+ #define HUAWEI_VENDOR_ID                      0x12D1
+ #define HUAWEI_PRODUCT_E600                   0x1001
+@@ -319,6 +320,7 @@ static struct usb_device_id option_ids[]
+       { 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_KOI_MODEM) },
++      { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTM380_MODEM) },
+       { 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) },
diff --git a/queue-2.6.27/usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch b/queue-2.6.27/usb-add-vendor-product-id-for-new-cdma-u727-to-option-driver.patch
new file mode 100644 (file)
index 0000000..6004e9c
--- /dev/null
@@ -0,0 +1,38 @@
+From 56a21827439a4d715b510bfaf488534e6f4ad2f8 Mon Sep 17 00:00:00 2001
+From: Dirk Hohndel <hohndel@infradead.org>
+Date: Sat, 14 Mar 2009 20:47:39 -0700
+Subject: USB: Add Vendor/Product ID for new CDMA U727 to option driver
+
+From: Dirk Hohndel <hohndel@infradead.org>
+
+commit 56a21827439a4d715b510bfaf488534e6f4ad2f8 upstream.
+
+* newer versions of the Novatel Wireless U727 CDMA 3G USB stick
+   have a different Product ID (0x5010); adding this ID makes them
+   work just fine with the option driver
+
+Signed-off-by: Dirk Hohndel <hohndel@infradead.org>
+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
+@@ -190,6 +190,7 @@ static int  option_send_setup(struct tty
+ /* OVATION PRODUCTS */
+ #define NOVATELWIRELESS_PRODUCT_MC727         0x4100
+ #define NOVATELWIRELESS_PRODUCT_MC950D                0x4400
++#define NOVATELWIRELESS_PRODUCT_U727          0x5010
+ /* FUTURE NOVATEL PRODUCTS */
+ #define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED        0X6000
+@@ -402,6 +403,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
++      { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel MC727/U727/USB727 */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */
+       { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */
diff --git a/queue-2.6.27/usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch b/queue-2.6.27/usb-ehci-expedite-unlinks-when-the-root-hub-is-suspended.patch
new file mode 100644 (file)
index 0000000..f3d8f75
--- /dev/null
@@ -0,0 +1,42 @@
+From 391016f6e2fe3b9979b4c6880a76e5e434d6947c Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 16 Mar 2009 14:21:56 -0400
+Subject: USB: EHCI: expedite unlinks when the root hub is suspended
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 391016f6e2fe3b9979b4c6880a76e5e434d6947c upstream.
+
+This patch (as1225) fixes a bug in ehci-hcd.  The condition for
+whether unlinked QHs can become IDLE should not be that the controller
+is halted, but rather that the controller isn't running.  In other
+words when the root hub is suspended, the hardware doesn't own any
+QHs.
+
+This fixes a problem that can show up during hibernation: If a QH is
+only partially unlinked when the root hub is frozen, then when the
+root hub is thawed the QH won't be in the IDLE state.  As a result it
+can't be used properly for new URB submissions.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: Brandon Philips <brandon@ifup.org>
+Tested-by: Brandon Philips <brandon@ifup.org>
+Acked-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-q.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/host/ehci-q.c
++++ b/drivers/usb/host/ehci-q.c
+@@ -1095,7 +1095,8 @@ static void start_unlink_async (struct e
+       prev->qh_next = qh->qh_next;
+       wmb ();
+-      if (unlikely (ehci_to_hcd(ehci)->state == HC_STATE_HALT)) {
++      /* If the controller isn't running, we don't have to wait for it */
++      if (unlikely(!HC_IS_RUNNING(ehci_to_hcd(ehci)->state))) {
+               /* if (unlikely (qh->reclaim != 0))
+                *      this will recurse, probably not much
+                */
diff --git a/queue-2.6.27/usb-ehci-fix-isochronous-urb-leak.patch b/queue-2.6.27/usb-ehci-fix-isochronous-urb-leak.patch
new file mode 100644 (file)
index 0000000..17a993f
--- /dev/null
@@ -0,0 +1,80 @@
+From 508db8c954d55ed30f870d2c24d741ba6269d13c Mon Sep 17 00:00:00 2001
+From: Karsten Wiese <fzuuzf@googlemail.com>
+Date: Thu, 26 Feb 2009 01:47:48 +0100
+Subject: USB: EHCI: Fix isochronous URB leak
+
+From: Karsten Wiese <fzuuzf@googlemail.com>
+
+commit 508db8c954d55ed30f870d2c24d741ba6269d13c upstream.
+
+ehci-hcd uses usb_get_urb() and usb_put_urb() in an unbalanced way causing
+isochronous URB's kref.counts incrementing once per usb_submit_urb() call.
+The culprit is *usb being set to NULL when usb_put_urb() is called after URB
+is given back.
+Due to other fixes there is no need for ehci-hcd to deal with usb_get_urb()
+nor usb_put_urb() anymore, so patch removes their usages in ehci-hcd.
+Patch also makes ehci_to_hcd(ehci)->self.bandwidth_allocated adjust, if a
+stream finishes.
+
+Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
+Cc: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-sched.c |   10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -1536,7 +1536,7 @@ itd_link_urb (
+                                       struct ehci_itd, itd_list);
+                       list_move_tail (&itd->itd_list, &stream->td_list);
+                       itd->stream = iso_stream_get (stream);
+-                      itd->urb = usb_get_urb (urb);
++                      itd->urb = urb;
+                       itd_init (ehci, stream, itd);
+               }
+@@ -1645,7 +1645,7 @@ itd_complete (
+       (void) disable_periodic(ehci);
+       ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
+-      if (unlikely (list_empty (&stream->td_list))) {
++      if (unlikely(list_is_singular(&stream->td_list))) {
+               ehci_to_hcd(ehci)->self.bandwidth_allocated
+                               -= stream->bandwidth;
+               ehci_vdbg (ehci,
+@@ -1656,7 +1656,6 @@ itd_complete (
+       iso_stream_put (ehci, stream);
+ done:
+-      usb_put_urb(urb);
+       itd->urb = NULL;
+       if (ehci->clock_frame != itd->frame || itd->index[7] != -1) {
+               /* OK to recycle this ITD now. */
+@@ -1949,7 +1948,7 @@ sitd_link_urb (
+                               struct ehci_sitd, sitd_list);
+               list_move_tail (&sitd->sitd_list, &stream->td_list);
+               sitd->stream = iso_stream_get (stream);
+-              sitd->urb = usb_get_urb (urb);
++              sitd->urb = urb;
+               sitd_patch(ehci, stream, sitd, sched, packet);
+               sitd_link (ehci, (next_uframe >> 3) % ehci->periodic_size,
+@@ -2034,7 +2033,7 @@ sitd_complete (
+       (void) disable_periodic(ehci);
+       ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
+-      if (list_empty (&stream->td_list)) {
++      if (list_is_singular(&stream->td_list)) {
+               ehci_to_hcd(ehci)->self.bandwidth_allocated
+                               -= stream->bandwidth;
+               ehci_vdbg (ehci,
+@@ -2045,7 +2044,6 @@ sitd_complete (
+       iso_stream_put (ehci, stream);
+       /* OK to recycle this SITD now that its completion callback ran. */
+ done:
+-      usb_put_urb(urb);
+       sitd->urb = NULL;
+       sitd->stream = NULL;
+       list_move(&sitd->sitd_list, &stream->free_list);
diff --git a/queue-2.6.27/usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch b/queue-2.6.27/usb-option-let-cdc-acm-handle-sony-ericsson-f3507g-dell-5530.patch
new file mode 100644 (file)
index 0000000..3a283aa
--- /dev/null
@@ -0,0 +1,50 @@
+From 0cc6bfe901b946df125d8e37186d8e45f876457d Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw@redhat.com>
+Date: Thu, 12 Mar 2009 06:53:00 -0400
+Subject: USB: Option: let cdc-acm handle Sony Ericsson F3507g / Dell 5530
+
+From: Dan Williams <dcbw@redhat.com>
+
+commit 0cc6bfe901b946df125d8e37186d8e45f876457d upstream.
+
+The generic cdc-acm driver is now the best one to handle Sony Ericsson
+F3507g-based devices (which the Dell 5530 is a rebrand of), now that all
+the pieces are in place (ie, cac477e8f1038c41b6f29d3161ce351462ef3df7).
+Removing the IDs from option allows cdc-acm to handle the device.
+
+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 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -288,10 +288,6 @@ static int  option_send_setup(struct tty
+ #define ZTE_PRODUCT_MF626                     0x0031
+ #define ZTE_PRODUCT_CDMA_TECH                 0xfffe
+-/* Ericsson products */
+-#define ERICSSON_VENDOR_ID                    0x0bdb
+-#define ERICSSON_PRODUCT_F3507G                       0x1900
+-
+ #define BENQ_VENDOR_ID                                0x04a5
+ #define BENQ_PRODUCT_H10                      0x4068
+@@ -434,7 +430,6 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) },    /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) },   /* Dell Wireless HSDPA 5520 */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) },   /* 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(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) },      /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) },       /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+       { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) },         /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
+@@ -506,7 +501,6 @@ static struct usb_device_id option_ids[]
+       { 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) },
+       { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
+       { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */
+       { } /* Terminating entry */
diff --git a/queue-2.6.27/usb-option.c-add-zte-622-modem-device.patch b/queue-2.6.27/usb-option.c-add-zte-622-modem-device.patch
new file mode 100644 (file)
index 0000000..1a1212a
--- /dev/null
@@ -0,0 +1,37 @@
+From 9ea19b82f3126da4e47d6b94563a3c2cd586f6e2 Mon Sep 17 00:00:00 2001
+From: Albert Pauw <albert.pauw@gmail.com>
+Date: Sun, 1 Mar 2009 09:37:52 +0100
+Subject: USB: option.c: add ZTE 622 modem device
+
+From: Albert Pauw <albert.pauw@gmail.com>
+
+commit 9ea19b82f3126da4e47d6b94563a3c2cd586f6e2 upstream.
+
+Please consider this small patch for the usb option-card driver.
+This patch adds the ZTE 622 usb modem device.
+
+Signed-off-by: Albert Pauw <albert.pauw@gmail.com>
+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
+@@ -282,6 +282,7 @@ static int  option_send_setup(struct tty
+ /* ZTE PRODUCTS */
+ #define ZTE_VENDOR_ID                         0x19d2
++#define ZTE_PRODUCT_MF622                     0x0001
+ #define ZTE_PRODUCT_MF628                     0x0015
+ #define ZTE_PRODUCT_MF626                     0x0031
+ #define ZTE_PRODUCT_CDMA_TECH                 0xfffe
+@@ -499,6 +500,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_MF622) },
+       { 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) },
diff --git a/queue-2.6.27/usb-serial-add-ftdi-usb-serial-converter-devices.patch b/queue-2.6.27/usb-serial-add-ftdi-usb-serial-converter-devices.patch
new file mode 100644 (file)
index 0000000..8408205
--- /dev/null
@@ -0,0 +1,64 @@
+From 7f82b6dd7015aabca2fd55fb690248f742cd67f3 Mon Sep 17 00:00:00 2001
+From: Axel Wachtler <axel.wachtler@atmel.com>
+Date: Thu, 5 Mar 2009 14:09:22 -0800
+Subject: USB: serial: add FTDI USB/Serial converter devices
+
+From: Axel Wachtler <axel.wachtler@atmel.com>
+
+commit 7f82b6dd7015aabca2fd55fb690248f742cd67f3 upstream.
+
+Add the following devices to the USB FTDI SIO device table:
+
+ Bus 001 Device 009: ID 03eb:2109 Atmel Corp.
+ http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4187
+
+ Bus 001 Device 008: ID 1cf1:0001
+ http://www.dresden-elektronik.de/shop/prod75.html
+
+ Bus 001 Device 007: ID 1c1f:0004
+ http://www.dresden-elektronik.de/shop/prod64.html
+
+Signed-off-by: Axel Wachtler <axel.wachtler@atmel.com>
+Signed-off-by: Robert Richter <robert.richter@amd.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    3 +++
+ drivers/usb/serial/ftdi_sio.h |   13 +++++++++++++
+ 2 files changed, 16 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -657,6 +657,9 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
++      { USB_DEVICE(ATMEL_VID, STK541_PID) },
++      { USB_DEVICE(DE_VID, STB_PID) },
++      { USB_DEVICE(DE_VID, WHT_PID) },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -870,6 +870,19 @@
+ #define RATOC_PRODUCT_ID_USB60F       0xb020
+ /*
++ * Atmel STK541
++ */
++#define ATMEL_VID             0x03eb /* Vendor ID */
++#define STK541_PID            0x2109 /* Zigbee Controller */
++
++/*
++ * Dresden Elektronic Sensor Terminal Board
++ */
++#define DE_VID                        0x1cf1 /* Vendor ID */
++#define STB_PID                       0x0001 /* Sensor Terminal Board */
++#define WHT_PID                       0x0004 /* Wireless Handheld Terminal */
++
++/*
+  *   BmRequestType:  1100 0000b
+  *   bRequest:       FTDI_E2_READ
+  *   wValue:         0
diff --git a/queue-2.6.27/usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch b/queue-2.6.27/usb-serial-ftdi-enable-uart-detection-on-gnice-jtag-adaptors-blacklist-interface0.patch
new file mode 100644 (file)
index 0000000..da90c88
--- /dev/null
@@ -0,0 +1,46 @@
+From b0d659002168146ec6b03d1ef062d8dcf05ff510 Mon Sep 17 00:00:00 2001
+From: Michael Hennerich <michael.hennerich@analog.com>
+Date: Fri, 6 Mar 2009 14:07:43 -0800
+Subject: USB: serial: ftdi: enable UART detection on gnICE JTAG adaptors blacklist interface0
+
+From: Michael Hennerich <michael.hennerich@analog.com>
+
+commit b0d659002168146ec6b03d1ef062d8dcf05ff510 upstream.
+
+Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
+Signed-off-by: Bryan Wu <cooloney@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    2 ++
+ drivers/usb/serial/ftdi_sio.h |    7 +++++++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -660,6 +660,8 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(ATMEL_VID, STK541_PID) },
+       { USB_DEVICE(DE_VID, STB_PID) },
+       { USB_DEVICE(DE_VID, WHT_PID) },
++      { USB_DEVICE(ADI_VID, ADI_GNICE_PID),
++              .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -883,6 +883,13 @@
+ #define WHT_PID                       0x0004 /* Wireless Handheld Terminal */
+ /*
++ * Blackfin gnICE JTAG
++ * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
++ */
++#define ADI_VID               0x0456
++#define ADI_GNICE_PID                 0xF000
++
++/*
+  *   BmRequestType:  1100 0000b
+  *   bRequest:       FTDI_E2_READ
+  *   wValue:         0
diff --git a/queue-2.6.27/usb-serial-new-cp2101-device-id.patch b/queue-2.6.27/usb-serial-new-cp2101-device-id.patch
new file mode 100644 (file)
index 0000000..5795f3b
--- /dev/null
@@ -0,0 +1,26 @@
+From c6535668798b0644e1af5934c2aec0e912280449 Mon Sep 17 00:00:00 2001
+From: Robert M. Kenney <rmk@unh.edu>
+Date: Thu, 26 Feb 2009 14:58:39 -0500
+Subject: USB: serial: new cp2101 device id
+
+From: Robert M. Kenney <rmk@unh.edu>
+
+commit c6535668798b0644e1af5934c2aec0e912280449 upstream.
+
+From: Robert M. Kenney <rmk@unh.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp2101.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp2101.c
++++ b/drivers/usb/serial/cp2101.c
+@@ -77,6 +77,7 @@ static struct usb_device_id id_table [] 
+       { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
+       { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
+       { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
++      { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
+       { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
+       { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
+       { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
diff --git a/queue-2.6.27/usb-storage-unusual-usb-device-prolific-2507-variation-added.patch b/queue-2.6.27/usb-storage-unusual-usb-device-prolific-2507-variation-added.patch
new file mode 100644 (file)
index 0000000..ef10ec9
--- /dev/null
@@ -0,0 +1,48 @@
+From 8a0845c51b2e300f5204a323b874f7f58ea0eff7 Mon Sep 17 00:00:00 2001
+From: Thomas Bartosik <tbartdev@gmx-topmail.de>
+Date: Mon, 16 Mar 2009 16:04:38 +0100
+Subject: USB: storage: Unusual USB device Prolific 2507 variation added
+
+From: Thomas Bartosik <tbartdev@gmx-topmail.de>
+
+commit 8a0845c51b2e300f5204a323b874f7f58ea0eff7 upstream.
+
+The "c-enter" USB to Toshiba 1.8" IDE enclosure needs special treatment
+to work flawlessly. This patch is absolutely trivial, as the integrated
+USB-IDE bridge is already identified to be an "unusual" device, only the
+bcdDevice is different (lower) to the bcdDeviceMin already included in
+the kernel.
+It is a Prolific 2507 bridge.
+
+T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
+D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
+P:  Vendor=067b ProdID=2507 Rev= 0.01
+S:  Manufacturer=Prolific Technology Inc.
+S:  Product=ATAPI-6 Bridge Controller
+S:  SerialNumber=00000272
+C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+
+Signed-off-by: Thomas Bartosik <tbartdev@gmx-topmail.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -990,7 +990,9 @@ UNUSUAL_DEV( 0x066f, 0x8000, 0x0001, 0x0
+               US_FL_FIX_CAPACITY ),
+ /* Reported by Richard -=[]=- <micro_flyer@hotmail.com> */
+-UNUSUAL_DEV( 0x067b, 0x2507, 0x0100, 0x0100,
++/* Change to bcdDeviceMin (0x0100 to 0x0001) reported by
++ * Thomas Bartosik <tbartdev@gmx-topmail.de> */
++UNUSUAL_DEV( 0x067b, 0x2507, 0x0001, 0x0100,
+               "Prolific Technology Inc.",
+               "Mass Storage Device",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
diff --git a/queue-2.6.27/usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch b/queue-2.6.27/usb-unusual_devs-add-support-for-gi-0431-sd-card-interface.patch
new file mode 100644 (file)
index 0000000..4e9f15c
--- /dev/null
@@ -0,0 +1,83 @@
+From c497e715f93d148d751c055401568684eea0bf6b Mon Sep 17 00:00:00 2001
+From: Jan Dumon <j.dumon@option.com>
+Date: Tue, 10 Mar 2009 17:29:47 +0100
+Subject: USB: unusual_devs: Add support for GI 0431 SD-Card interface
+
+From: Jan Dumon <j.dumon@option.com>
+
+commit c497e715f93d148d751c055401568684eea0bf6b upstream.
+
+Enable the SD-Card interface on the GI 0431 HSUPA stick from Option.
+
+The unusual_devs.h entry is necessary because the device descriptor is
+vendor-specific. That prevents usb-storage from binding to it as an
+interface driver.
+
+T:  Bus=07 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 15 Spd=480 MxCh= 0
+D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
+P:  Vendor=0af0 ProdID=7501 Rev= 0.00
+S:  Manufacturer=Option N.V.
+S:  Product=Globetrotter HSUPA Modem
+C:* #Ifs=11 Cfg#= 1 Atr=a0 MxPwr=500mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
+E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
+E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
+I:* If#=10 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+Signed-off-by: Jan Dumon <j.dumon@option.com>
+Signed-off-by: Phil Dibowitz <phil@ipom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1407,6 +1407,16 @@ UNUSUAL_DEV( 0x0af0, 0x7401, 0x0000, 0x0
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
+               0 ),
++/* Reported by Jan Dumon <j.dumon@option.com>
++ * This device (wrongly) has a vendor-specific device descriptor.
++ * The entry is needed so usb-storage can bind to it's mass-storage
++ * interface as an interface driver */
++UNUSUAL_DEV( 0x0af0, 0x7501, 0x0000, 0x0000,
++              "Option",
++              "GI 0431 SD-Card",
++              US_SC_DEVICE, US_PR_DEVICE, NULL,
++              0 ),
++
+ #ifdef CONFIG_USB_STORAGE_ISD200
+ UNUSUAL_DEV(  0x0bf6, 0xa001, 0x0100, 0x0110,
+               "ATI",
diff --git a/queue-2.6.27/usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch b/queue-2.6.27/usb-updated-unusual-devs-entry-for-usb-mass-storage-on-nokia-6233.patch
new file mode 100644 (file)
index 0000000..c0421d3
--- /dev/null
@@ -0,0 +1,34 @@
+From 716a9c8561d9c50ec454f4fbd39a265892feda2c Mon Sep 17 00:00:00 2001
+From: Moritz Muehlenhoff <jmm@debian.org>
+Date: Sat, 14 Mar 2009 00:43:21 +0100
+Subject: USB: Updated unusual-devs entry for USB mass storage on Nokia 6233
+
+From: Moritz Muehlenhoff <jmm@debian.org>
+
+commit 716a9c8561d9c50ec454f4fbd39a265892feda2c upstream.
+
+Current firmware revision 5.60 still behaves the same,
+so update the quirk up a (non-existing) 99.99 revision.
+
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=493415
+
+Signed-off-by: Moritz Muehlenhoff <jmm@debian.org>
+Tested-by: Jan Heitkoetter <devnull@heitkoetter.net>
+Signed-off-by: Phil Dibowitz <phil@ipom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -219,7 +219,7 @@ UNUSUAL_DEV(  0x0421, 0x047c, 0x0370, 0x
+               US_FL_MAX_SECTORS_64 ),
+ /* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */
+-UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x0452,
++UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x9999,
+               "Nokia",
+               "Nokia 6233",
+               US_SC_DEVICE, US_PR_DEVICE, NULL,
diff --git a/queue-2.6.27/usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch b/queue-2.6.27/usb-usbfs-keep-async-urbs-until-the-device-file-is-closed.patch
new file mode 100644 (file)
index 0000000..c4392f6
--- /dev/null
@@ -0,0 +1,69 @@
+From 6ff10464096540e14d7575a72c50d0316d003714 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 9 Mar 2009 13:44:02 -0400
+Subject: USB: usbfs: keep async URBs until the device file is closed
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 6ff10464096540e14d7575a72c50d0316d003714 upstream.
+
+The usbfs driver manages a list of completed asynchronous URBs.  But
+it is too eager to free the entries on this list: destroy_async() gets
+called whenever an interface is unbound or a device is removed, and it
+deallocates the outstanding struct async entries for all URBs on that
+interface or device.  This is wrong; the user program should be able
+to reap an URB any time after it has completed, regardless of whether
+or not the interface is still bound or the device is still present.
+
+This patch (as1222) moves the code for deallocating the completed list
+entries from destroy_async() to usbdev_release().  The outstanding
+entries won't be freed until the user program has closed the device
+file, thereby eliminating any possibility that the remaining URBs
+might still be reaped.
+
+This fixes a bug in which a program can hang in the USBDEVFS_REAPURB
+ioctl when the device is unplugged.
+
+Reported-and-tested-by: Martin Poupe <martin.poupe@upek.com>
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/devio.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/core/devio.c
++++ b/drivers/usb/core/devio.c
+@@ -359,11 +359,6 @@ static void destroy_async(struct dev_sta
+               spin_lock_irqsave(&ps->lock, flags);
+       }
+       spin_unlock_irqrestore(&ps->lock, flags);
+-      as = async_getcompleted(ps);
+-      while (as) {
+-              free_async(as);
+-              as = async_getcompleted(ps);
+-      }
+ }
+ static void destroy_async_on_interface(struct dev_state *ps,
+@@ -639,6 +634,7 @@ static int usbdev_release(struct inode *
+       struct dev_state *ps = file->private_data;
+       struct usb_device *dev = ps->dev;
+       unsigned int ifnum;
++      struct async *as;
+       usb_lock_device(dev);
+@@ -657,6 +653,12 @@ static int usbdev_release(struct inode *
+       usb_unlock_device(dev);
+       usb_put_dev(dev);
+       put_pid(ps->disc_pid);
++
++      as = async_getcompleted(ps);
++      while (as) {
++              free_async(as);
++              as = async_getcompleted(ps);
++      }
+       kfree(ps);
+       return 0;
+ }