]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.37 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 11 Feb 2011 21:19:57 +0000 (13:19 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 11 Feb 2011 21:19:57 +0000 (13:19 -0800)
36 files changed:
queue-2.6.37/atl1-fix-oops-when-changing-tx-rx-ring-params.patch [deleted file]
queue-2.6.37/series
queue-2.6.37/staging-brcm80211-fix-suspend-resume-issue-in-brcmsmac.patch [new file with mode: 0644]
queue-2.6.37/staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch [new file with mode: 0644]
queue-2.6.37/staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch [new file with mode: 0644]
queue-2.6.37/staging-hv-enable-sending-garp-packet-after-live-migration.patch [new file with mode: 0644]
queue-2.6.37/staging-hv-fix-netvsc-sleeping-while-atomic.patch [new file with mode: 0644]
queue-2.6.37/staging-hv-fix-sysfs-symlink-on-hv-block-device.patch [new file with mode: 0644]
queue-2.6.37/staging-hv-removed-unneeded-call-to-netif_stop_queue-in-hv_netvsc.patch [new file with mode: 0644]
queue-2.6.37/staging-r8712u-add-new-device-ids.patch [new file with mode: 0644]
queue-2.6.37/staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch [new file with mode: 0644]
queue-2.6.37/staging-rt2860-fix-previous-patch-error.patch [new file with mode: 0644]
queue-2.6.37/staging-rt3090-fix-rt3090-scan-ap-function.patch [new file with mode: 0644]
queue-2.6.37/staging-speakup-confusion-in-silent_store.patch [new file with mode: 0644]
queue-2.6.37/staging-zram-fix-data-corruption-issue.patch [new file with mode: 0644]
queue-2.6.37/usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch [new file with mode: 0644]
queue-2.6.37/usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch [new file with mode: 0644]
queue-2.6.37/usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch [new file with mode: 0644]
queue-2.6.37/usb-ehci-fix-dma-deallocation-bug.patch [new file with mode: 0644]
queue-2.6.37/usb-ehci-fix-scheduling-while-atomic-during-suspend.patch [new file with mode: 0644]
queue-2.6.37/usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch [new file with mode: 0644]
queue-2.6.37/usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch [new file with mode: 0644]
queue-2.6.37/usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch [new file with mode: 0644]
queue-2.6.37/usb-g_printer-fix-bug-in-module-parameter-definitions.patch [new file with mode: 0644]
queue-2.6.37/usb-g_printer-fix-bug-in-unregistration.patch [new file with mode: 0644]
queue-2.6.37/usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch [new file with mode: 0644]
queue-2.6.37/usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch [new file with mode: 0644]
queue-2.6.37/usb-qcaux-add-pantech-uml290-device-id.patch [new file with mode: 0644]
queue-2.6.37/usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch [new file with mode: 0644]
queue-2.6.37/usb-serial-updated-support-for-icom-devices.patch [new file with mode: 0644]
queue-2.6.37/usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch [new file with mode: 0644]
queue-2.6.37/usb-ti_usb-fix-module-removal.patch [new file with mode: 0644]
queue-2.6.37/usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch [new file with mode: 0644]
queue-2.6.37/usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch [new file with mode: 0644]
queue-2.6.37/usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch [new file with mode: 0644]
queue-2.6.37/usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch [new file with mode: 0644]

diff --git a/queue-2.6.37/atl1-fix-oops-when-changing-tx-rx-ring-params.patch b/queue-2.6.37/atl1-fix-oops-when-changing-tx-rx-ring-params.patch
deleted file mode 100644 (file)
index c3b4669..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-From 2f32c867219734b06abc980d4812f67b6d6fe517 Mon Sep 17 00:00:00 2001
-From: J. K. Cliburn <jcliburn@gmail.com>
-Date: Sat, 1 Jan 2011 05:02:12 +0000
-Subject: atl1: fix oops when changing tx/rx ring params
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: J. K. Cliburn <jcliburn@gmail.com>
-
-commit 2f32c867219734b06abc980d4812f67b6d6fe517 upstream.
-
-Commit 3f5a2a713aad28480d86b0add00c68484b54febc zeroes out the statistics
-message block (SMB) and coalescing message block (CMB) when adapter ring
-resources are freed.  This is desirable behavior, but, as a side effect,
-the commit leads to an oops when atl1_set_ringparam() attempts to alter
-the number of rx or tx elements in the ring buffer (by using ethtool
--G, for example).  We don't want SMB or CMB to change during this
-operation.
-
-Modify atl1_set_ringparam() to preserve SMB and CMB when changing ring
-parameters.
-
-Signed-off-by: Jay Cliburn <jcliburn@gmail.com>
-Reported-by: Tõnu Raitviir <jussuf@linux.ee>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
-index 5336310..3acf512 100644
---- a/drivers/net/atlx/atl1.c
-+++ b/drivers/net/atlx/atl1.c
-@@ -3504,6 +3504,8 @@ static int atl1_set_ringparam(struct net_device *netdev,
-       struct atl1_rfd_ring rfd_old, rfd_new;
-       struct atl1_rrd_ring rrd_old, rrd_new;
-       struct atl1_ring_header rhdr_old, rhdr_new;
-+      struct atl1_smb smb;
-+      struct atl1_cmb cmb;
-       int err;
-       tpd_old = adapter->tpd_ring;
-@@ -3544,11 +3546,19 @@ static int atl1_set_ringparam(struct net_device *netdev,
-               adapter->rrd_ring = rrd_old;
-               adapter->tpd_ring = tpd_old;
-               adapter->ring_header = rhdr_old;
-+              /*
-+               * Save SMB and CMB, since atl1_free_ring_resources
-+               * will clear them.
-+               */
-+              smb = adapter->smb;
-+              cmb = adapter->cmb;
-               atl1_free_ring_resources(adapter);
-               adapter->rfd_ring = rfd_new;
-               adapter->rrd_ring = rrd_new;
-               adapter->tpd_ring = tpd_new;
-               adapter->ring_header = rhdr_new;
-+              adapter->smb = smb;
-+              adapter->cmb = cmb;
-               err = atl1_up(adapter);
-               if (err)
index 18a914aa1cc5dab3ae32d02645de79d61c0326de..70894e2058f25f47ea8a57c1470a5efc526e77f1 100644 (file)
@@ -13,4 +13,37 @@ hwmon-applesmc-relax-the-severity-of-device-init-failure.patch
 usb-serial-handle-data-carrier-detect-changes.patch
 usb-cp210x-add-two-device-ids.patch
 usb-cp210x-removed-incorrect-device-id.patch
-atl1-fix-oops-when-changing-tx-rx-ring-params.patch
+usb-qcaux-add-pantech-uml290-device-id.patch
+usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch
+usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch
+usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch
+usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch
+usb-serial-updated-support-for-icom-devices.patch
+usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch
+usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch
+usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch
+usb-ehci-fix-dma-deallocation-bug.patch
+usb-g_printer-fix-bug-in-unregistration.patch
+usb-g_printer-fix-bug-in-module-parameter-definitions.patch
+usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch
+usb-ti_usb-fix-module-removal.patch
+usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch
+usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch
+usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch
+usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch
+usb-ehci-fix-scheduling-while-atomic-during-suspend.patch
+usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch
+usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch
+staging-zram-fix-data-corruption-issue.patch
+staging-r8712u-add-new-device-ids.patch
+staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch
+staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch
+staging-hv-fix-sysfs-symlink-on-hv-block-device.patch
+staging-hv-fix-netvsc-sleeping-while-atomic.patch
+staging-hv-removed-unneeded-call-to-netif_stop_queue-in-hv_netvsc.patch
+staging-hv-enable-sending-garp-packet-after-live-migration.patch
+staging-rt3090-fix-rt3090-scan-ap-function.patch
+staging-rt2860-fix-previous-patch-error.patch
+staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch
+staging-speakup-confusion-in-silent_store.patch
+staging-brcm80211-fix-suspend-resume-issue-in-brcmsmac.patch
diff --git a/queue-2.6.37/staging-brcm80211-fix-suspend-resume-issue-in-brcmsmac.patch b/queue-2.6.37/staging-brcm80211-fix-suspend-resume-issue-in-brcmsmac.patch
new file mode 100644 (file)
index 0000000..3ee42b0
--- /dev/null
@@ -0,0 +1,134 @@
+From 4032ec639af9b735fdd903fab09de567bd73eaa0 Mon Sep 17 00:00:00 2001
+From: Arend van Spriel <arend@broadcom.com>
+Date: Fri, 21 Jan 2011 13:36:44 +0100
+Subject: staging: brcm80211: fix suspend/resume issue in brcmsmac
+
+From: Arend van Spriel <arend@broadcom.com>
+
+commit 4032ec639af9b735fdd903fab09de567bd73eaa0 upstream.
+
+PCI PM suspend callback took down the interface and resume brought
+it back up. In the mac80211 context this is done in subsequent calls.
+Rework implementation so that suspend only stores config, and sets
+PCI power state. The resume return to full power state (D0), restores
+the config, and brings hardware back up. Full bringup is done by
+subsequent mac80211 calls.
+
+Reviewed-by: Brett Rudley <brudley@broadcom.com>
+Signed-off-by: Arend van Spriel <arend@broadcom.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/brcm80211/sys/wl_mac80211.c |   45 ++++++++++++++--------------
+ 1 file changed, 23 insertions(+), 22 deletions(-)
+
+--- a/drivers/staging/brcm80211/sys/wl_mac80211.c
++++ b/drivers/staging/brcm80211/sys/wl_mac80211.c
+@@ -299,11 +299,8 @@ static void wl_ops_stop(struct ieee80211
+       wl_info_t *wl = hw->priv;
+       ASSERT(wl);
+       WL_LOCK(wl);
+-      wl_down(wl);
+       ieee80211_stop_queues(hw);
+       WL_UNLOCK(wl);
+-
+-      return;
+ }
+ static int
+@@ -336,7 +333,14 @@ wl_ops_add_interface(struct ieee80211_hw
+ static void
+ wl_ops_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+ {
+-      return;
++      struct wl_info *wl;
++
++      wl = HW_TO_WL(hw);
++
++      /* put driver in down state */
++      WL_LOCK(wl);
++      wl_down(wl);
++      WL_UNLOCK(wl);
+ }
+ static int
+@@ -972,7 +976,7 @@ static wl_info_t *wl_attach(u16 vendor,
+       wl_found++;
+       return wl;
+- fail:
++fail:
+       wl_free(wl);
+ fail1:
+       return NULL;
+@@ -1356,7 +1360,6 @@ wl_pci_probe(struct pci_dev *pdev, const
+       return 0;
+ }
+-#ifdef LINUXSTA_PS
+ static int wl_suspend(struct pci_dev *pdev, pm_message_t state)
+ {
+       wl_info_t *wl;
+@@ -1371,11 +1374,12 @@ static int wl_suspend(struct pci_dev *pd
+               return -ENODEV;
+       }
++      /* only need to flag hw is down for proper resume */
+       WL_LOCK(wl);
+-      wl_down(wl);
+       wl->pub->hw_up = false;
+       WL_UNLOCK(wl);
+-      pci_save_state(pdev, wl->pci_psstate);
++
++      pci_save_state(pdev);
+       pci_disable_device(pdev);
+       return pci_set_power_state(pdev, PCI_D3hot);
+ }
+@@ -1399,7 +1403,7 @@ static int wl_resume(struct pci_dev *pde
+       if (err)
+               return err;
+-      pci_restore_state(pdev, wl->pci_psstate);
++      pci_restore_state(pdev);
+       err = pci_enable_device(pdev);
+       if (err)
+@@ -1411,13 +1415,12 @@ static int wl_resume(struct pci_dev *pde
+       if ((val & 0x0000ff00) != 0)
+               pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
+-      WL_LOCK(wl);
+-      err = wl_up(wl);
+-      WL_UNLOCK(wl);
+-
++      /*
++      *  done. driver will be put in up state
++      *  in wl_ops_add_interface() call.
++      */
+       return err;
+ }
+-#endif                                /* LINUXSTA_PS */
+ static void wl_remove(struct pci_dev *pdev)
+ {
+@@ -1450,14 +1453,12 @@ static void wl_remove(struct pci_dev *pd
+ }
+ static struct pci_driver wl_pci_driver = {
+- .name  = "brcm80211",
+- .probe = wl_pci_probe,
+-#ifdef LINUXSTA_PS
+- .suspend = wl_suspend,
+- .resume  = wl_resume,
+-#endif                                /* LINUXSTA_PS */
+- .remove   = __devexit_p(wl_remove),
+- .id_table = wl_id_table,
++      .name = "brcm80211",
++      .probe = wl_pci_probe,
++      .suspend = wl_suspend,
++      .resume = wl_resume,
++      .remove = __devexit_p(wl_remove),
++      .id_table = wl_id_table,
+ };
+ #endif                                /* !BCMSDIO */
diff --git a/queue-2.6.37/staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch b/queue-2.6.37/staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch
new file mode 100644 (file)
index 0000000..f810b2c
--- /dev/null
@@ -0,0 +1,48 @@
+From 6292817d58637f85dd623cfe563c7f5ec4f4c470 Mon Sep 17 00:00:00 2001
+From: Ruben Smits <ruben.smits@mech.kuleuven.be>
+Date: Sat, 11 Dec 2010 08:26:18 +0100
+Subject: staging: comedi: add support for newer jr3 1-channel pci board
+
+From: Ruben Smits <ruben.smits@mech.kuleuven.be>
+
+commit 6292817d58637f85dd623cfe563c7f5ec4f4c470 upstream.
+
+add DEVICE_ID to table
+
+Signed-off-by: Ruben Smits <ruben.smits@mech.kuleuven.be>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/comedi/drivers/jr3_pci.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/staging/comedi/drivers/jr3_pci.c
++++ b/drivers/staging/comedi/drivers/jr3_pci.c
+@@ -54,6 +54,7 @@ Devices: [JR3] PCI force sensor board (j
+ #define PCI_VENDOR_ID_JR3 0x1762
+ #define PCI_DEVICE_ID_JR3_1_CHANNEL 0x3111
++#define PCI_DEVICE_ID_JR3_1_CHANNEL_NEW 0x1111
+ #define PCI_DEVICE_ID_JR3_2_CHANNEL 0x3112
+ #define PCI_DEVICE_ID_JR3_3_CHANNEL 0x3113
+ #define PCI_DEVICE_ID_JR3_4_CHANNEL 0x3114
+@@ -73,6 +74,8 @@ static DEFINE_PCI_DEVICE_TABLE(jr3_pci_p
+       {
+       PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_1_CHANNEL,
+                   PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {
++      PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_1_CHANNEL_NEW,
++                  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {
+       PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_2_CHANNEL,
+                   PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {
+       PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_3_CHANNEL,
+@@ -807,6 +810,10 @@ static int jr3_pci_attach(struct comedi_
+                                       devpriv->n_channels = 1;
+                               }
+                               break;
++                      case PCI_DEVICE_ID_JR3_1_CHANNEL_NEW:{
++                                      devpriv->n_channels = 1;
++                              }
++                              break;
+                       case PCI_DEVICE_ID_JR3_2_CHANNEL:{
+                                       devpriv->n_channels = 2;
+                               }
diff --git a/queue-2.6.37/staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch b/queue-2.6.37/staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch
new file mode 100644 (file)
index 0000000..df4b0b1
--- /dev/null
@@ -0,0 +1,35 @@
+From d1ce318496f5943d2cc5e20171fc383a59a1421f Mon Sep 17 00:00:00 2001
+From: Ian Abbott <abbotti@mev.co.uk>
+Date: Wed, 19 Jan 2011 11:48:44 +0000
+Subject: staging: comedi: ni_labpc: Use shared IRQ for PCMCIA card
+
+From: Ian Abbott <abbotti@mev.co.uk>
+
+commit d1ce318496f5943d2cc5e20171fc383a59a1421f upstream.
+
+The ni_labpc driver module only requests a shared IRQ for PCI devices,
+requesting a non-shared IRQ for non-PCI devices.
+As this module is also used by the ni_labpc_cs module for certain
+National Instruments PCMCIA cards, it also needs to request a shared IRQ
+for PCMCIA devices, otherwise you get a IRQ mismatch with the CardBus
+controller.
+
+Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/comedi/drivers/ni_labpc.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/comedi/drivers/ni_labpc.c
++++ b/drivers/staging/comedi/drivers/ni_labpc.c
+@@ -575,7 +575,8 @@ int labpc_common_attach(struct comedi_de
+       /* grab our IRQ */
+       if (irq) {
+               isr_flags = 0;
+-              if (thisboard->bustype == pci_bustype)
++              if (thisboard->bustype == pci_bustype
++                  || thisboard->bustype == pcmcia_bustype)
+                       isr_flags |= IRQF_SHARED;
+               if (request_irq(irq, labpc_interrupt, isr_flags,
+                               driver_labpc.driver_name, dev)) {
diff --git a/queue-2.6.37/staging-hv-enable-sending-garp-packet-after-live-migration.patch b/queue-2.6.37/staging-hv-enable-sending-garp-packet-after-live-migration.patch
new file mode 100644 (file)
index 0000000..9383e54
--- /dev/null
@@ -0,0 +1,34 @@
+From 7c161d0b900ea9bd9fc5ea5d3fa9916e9eb0dd88 Mon Sep 17 00:00:00 2001
+From: Haiyang Zhang <haiyangz@microsoft.com>
+Date: Wed, 2 Feb 2011 13:42:58 -0800
+Subject: staging: hv: Enable sending GARP packet after live migration
+
+From: Haiyang Zhang <haiyangz@microsoft.com>
+
+commit 7c161d0b900ea9bd9fc5ea5d3fa9916e9eb0dd88 upstream.
+
+The hv_netvsc gets RNDIS_STATUS_MEDIA_CONNECT event after the VM
+is live migrated. Adding call to netif_notify_peers() for this event
+to send GARP (Gratuitous ARP) to notify network peers. Otherwise,
+the VM's network connection may stop after a live migration.
+
+This patch should also be applied to stable kernel 2.6.32 and later.
+
+Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/netvsc_drv.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/hv/netvsc_drv.c
++++ b/drivers/staging/hv/netvsc_drv.c
+@@ -233,6 +233,7 @@ static void netvsc_linkstatus_callback(s
+       if (status == 1) {
+               netif_carrier_on(net);
+               netif_wake_queue(net);
++              netif_notify_peers(net);
+       } else {
+               netif_carrier_off(net);
+               netif_stop_queue(net);
diff --git a/queue-2.6.37/staging-hv-fix-netvsc-sleeping-while-atomic.patch b/queue-2.6.37/staging-hv-fix-netvsc-sleeping-while-atomic.patch
new file mode 100644 (file)
index 0000000..63a2e10
--- /dev/null
@@ -0,0 +1,38 @@
+From d70c673153d42e8aefd5ac296c8159ef222d076b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Fri, 17 Dec 2010 11:40:24 +0200
+Subject: staging: hv: fix netvsc sleeping while atomic
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+
+commit d70c673153d42e8aefd5ac296c8159ef222d076b upstream.
+
+The channel callbacks are called directly from vmbus_event_dpc
+which runs in tasklet context. These callbacks need to use
+GFP_ATOMIC.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16701
+
+Cc: Hank Janssen <hjanssen@microsoft.com>
+Cc: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/netvsc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/hv/netvsc.c
++++ b/drivers/staging/hv/netvsc.c
+@@ -1236,7 +1236,7 @@ static void NetVscOnChannelCallback(void
+       /* ASSERT(device); */
+       packet = kzalloc(NETVSC_PACKET_SIZE * sizeof(unsigned char),
+-                       GFP_KERNEL);
++                       GFP_ATOMIC);
+       if (!packet)
+               return;
+       buffer = packet;
diff --git a/queue-2.6.37/staging-hv-fix-sysfs-symlink-on-hv-block-device.patch b/queue-2.6.37/staging-hv-fix-sysfs-symlink-on-hv-block-device.patch
new file mode 100644 (file)
index 0000000..9f4af80
--- /dev/null
@@ -0,0 +1,32 @@
+From 268eff909afaca93188d2d14554cbf824f6a0e41 Mon Sep 17 00:00:00 2001
+From: Ky Srinivasan <ksrinivasan@novell.com>
+Date: Thu, 16 Dec 2010 18:59:19 -0700
+Subject: Staging: hv: fix sysfs symlink on hv block device
+
+From: Ky Srinivasan <ksrinivasan@novell.com>
+
+commit 268eff909afaca93188d2d14554cbf824f6a0e41 upstream.
+
+The block device does not create the proper symlink in sysfs because we
+forgot to set up the gendisk structure properly.  This patch fixes the
+issue.
+
+Signed-off-by: K. Y. Srinivasan <ksrinivasan@novell.com>
+Cc: Hank Janssen <hjanssen@microsoft.com>
+Cc: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/blkvsc_drv.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/hv/blkvsc_drv.c
++++ b/drivers/staging/hv/blkvsc_drv.c
+@@ -368,6 +368,7 @@ static int blkvsc_probe(struct device *d
+               blkdev->gd->first_minor = 0;
+       blkdev->gd->fops = &block_ops;
+       blkdev->gd->private_data = blkdev;
++      blkdev->gd->driverfs_dev = &(blkdev->device_ctx->device);
+       sprintf(blkdev->gd->disk_name, "hd%c", 'a' + devnum);
+       blkvsc_do_inquiry(blkdev);
diff --git a/queue-2.6.37/staging-hv-removed-unneeded-call-to-netif_stop_queue-in-hv_netvsc.patch b/queue-2.6.37/staging-hv-removed-unneeded-call-to-netif_stop_queue-in-hv_netvsc.patch
new file mode 100644 (file)
index 0000000..24982ba
--- /dev/null
@@ -0,0 +1,39 @@
+From a786f915274ba446865a996515c7790a930f04dd Mon Sep 17 00:00:00 2001
+From: Hank Janssen <hjanssen@microsoft.com>
+Date: Fri, 7 Jan 2011 09:25:39 -0800
+Subject: staging: hv: Removed unneeded call to netif_stop_queue() in hv_netvsc
+
+From: Hank Janssen <hjanssen@microsoft.com>
+
+commit a786f915274ba446865a996515c7790a930f04dd upstream.
+
+Removed the call to netif_stop_queue() in netvsc_probe() as
+the queue is not initialized at that point and further call
+to it after queue initialization is really not necessary.
+
+This change was prompted after an upstream change went into
+2.6.37 (netif_tx_stop_queue) that now checks if netif_stop_queue
+is called before register with netdev is done.
+
+This will eliminate the warning message to the log when hv_netvsc
+driver starts up.
+
+Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
+Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/netvsc_drv.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/staging/hv/netvsc_drv.c
++++ b/drivers/staging/hv/netvsc_drv.c
+@@ -355,7 +355,6 @@ static int netvsc_probe(struct device *d
+       /* Set initial state */
+       netif_carrier_off(net);
+-      netif_stop_queue(net);
+       net_device_ctx = netdev_priv(net);
+       net_device_ctx->device_ctx = device_ctx;
diff --git a/queue-2.6.37/staging-r8712u-add-new-device-ids.patch b/queue-2.6.37/staging-r8712u-add-new-device-ids.patch
new file mode 100644 (file)
index 0000000..48fc5d7
--- /dev/null
@@ -0,0 +1,200 @@
+From 6b28405395f7ec492ea69f541cc774adcb9e00ca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Axel=20K=C3=B6llhofer?= <AxelKoellhofer@web.de>
+Date: Sat, 22 Jan 2011 14:33:50 -0600
+Subject: staging: r8712u: Add new device IDs
+
+From: =?UTF-8?q?Axel=20K=C3=B6llhofer?= <AxelKoellhofer@web.de>
+
+commit 6b28405395f7ec492ea69f541cc774adcb9e00ca upstream.
+
+This patch adds several new device ids to the r8712u staging driver.
+The new ids were retrieved from latest vendor driver (v2.6.6.0.20101111)
+downloadable from www.realtek.com.tw
+
+Signed-off-by: Axel Koellhofer <AxelKoellhofer@web.de>
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rtl8712/usb_intf.c |  145 ++++++++++++++++++++++++++++---------
+ 1 file changed, 113 insertions(+), 32 deletions(-)
+
+--- a/drivers/staging/rtl8712/usb_intf.c
++++ b/drivers/staging/rtl8712/usb_intf.c
+@@ -47,54 +47,123 @@ static int r871xu_drv_init(struct usb_in
+ static void r871xu_dev_remove(struct usb_interface *pusb_intf);
+ static struct usb_device_id rtl871x_usb_id_tbl[] = {
+-      /*92SU
+-       * Realtek */
+-      {USB_DEVICE(0x0bda, 0x8171)},
+-      {USB_DEVICE(0x0bda, 0x8172)},
++
++/* RTL8188SU */
++      /* Realtek */
++      {USB_DEVICE(0x0BDA, 0x8171)},
+       {USB_DEVICE(0x0bda, 0x8173)},
+-      {USB_DEVICE(0x0bda, 0x8174)},
+       {USB_DEVICE(0x0bda, 0x8712)},
+       {USB_DEVICE(0x0bda, 0x8713)},
+       {USB_DEVICE(0x0bda, 0xC512)},
+-      /* Abocom  */
++      /* Abocom */
+       {USB_DEVICE(0x07B8, 0x8188)},
++      /* ASUS */
++      {USB_DEVICE(0x0B05, 0x1786)},
++      {USB_DEVICE(0x0B05, 0x1791)}, /* 11n mode disable */
++      /* Belkin */
++      {USB_DEVICE(0x050D, 0x945A)},
+       /* Corega */
+-      {USB_DEVICE(0x07aa, 0x0047)},
+-      /* Dlink */
+-      {USB_DEVICE(0x07d1, 0x3303)},
+-      {USB_DEVICE(0x07d1, 0x3302)},
+-      {USB_DEVICE(0x07d1, 0x3300)},
+-      /* Dlink for Skyworth */
+-      {USB_DEVICE(0x14b2, 0x3300)},
+-      {USB_DEVICE(0x14b2, 0x3301)},
+-      {USB_DEVICE(0x14b2, 0x3302)},
++      {USB_DEVICE(0x07AA, 0x0047)},
++      /* D-Link */
++      {USB_DEVICE(0x2001, 0x3306)},
++      {USB_DEVICE(0x07D1, 0x3306)}, /* 11n mode disable */
++      /* Edimax */
++      {USB_DEVICE(0x7392, 0x7611)},
+       /* EnGenius */
+       {USB_DEVICE(0x1740, 0x9603)},
+-      {USB_DEVICE(0x1740, 0x9605)},
++      /* Hawking */
++      {USB_DEVICE(0x0E66, 0x0016)},
++      /* Hercules */
++      {USB_DEVICE(0x06F8, 0xE034)},
++      {USB_DEVICE(0x06F8, 0xE032)},
++      /* Logitec */
++      {USB_DEVICE(0x0789, 0x0167)},
++      /* PCI */
++      {USB_DEVICE(0x2019, 0xAB28)},
++      {USB_DEVICE(0x2019, 0xED16)},
++      /* Sitecom */
++      {USB_DEVICE(0x0DF6, 0x0057)},
++      {USB_DEVICE(0x0DF6, 0x0045)},
++      {USB_DEVICE(0x0DF6, 0x0059)}, /* 11n mode disable */
++      {USB_DEVICE(0x0DF6, 0x004B)},
++      {USB_DEVICE(0x0DF6, 0x0063)},
++      /* Sweex */
++      {USB_DEVICE(0x177F, 0x0154)},
++      /* Thinkware */
++      {USB_DEVICE(0x0BDA, 0x5077)},
++      /* Toshiba */
++      {USB_DEVICE(0x1690, 0x0752)},
++      /* - */
++      {USB_DEVICE(0x20F4, 0x646B)},
++      {USB_DEVICE(0x083A, 0xC512)},
++
++/* RTL8191SU */
++      /* Realtek */
++      {USB_DEVICE(0x0BDA, 0x8172)},
++      /* Amigo */
++      {USB_DEVICE(0x0EB0, 0x9061)},
++      /* ASUS/EKB */
++      {USB_DEVICE(0x0BDA, 0x8172)},
++      {USB_DEVICE(0x13D3, 0x3323)},
++      {USB_DEVICE(0x13D3, 0x3311)}, /* 11n mode disable */
++      {USB_DEVICE(0x13D3, 0x3342)},
++      /* ASUS/EKBLenovo */
++      {USB_DEVICE(0x13D3, 0x3333)},
++      {USB_DEVICE(0x13D3, 0x3334)},
++      {USB_DEVICE(0x13D3, 0x3335)}, /* 11n mode disable */
++      {USB_DEVICE(0x13D3, 0x3336)}, /* 11n mode disable */
++      /* ASUS/Media BOX */
++      {USB_DEVICE(0x13D3, 0x3309)},
+       /* Belkin */
+-      {USB_DEVICE(0x050d, 0x815F)},
+-      {USB_DEVICE(0x050d, 0x945A)},
+-      {USB_DEVICE(0x050d, 0x845A)},
+-      /* Guillemot */
+-      {USB_DEVICE(0x06f8, 0xe031)},
++      {USB_DEVICE(0x050D, 0x815F)},
++      /* D-Link */
++      {USB_DEVICE(0x07D1, 0x3302)},
++      {USB_DEVICE(0x07D1, 0x3300)},
++      {USB_DEVICE(0x07D1, 0x3303)},
+       /* Edimax */
+-      {USB_DEVICE(0x7392, 0x7611)},
+       {USB_DEVICE(0x7392, 0x7612)},
+-      {USB_DEVICE(0x7392, 0x7622)},
+-      /* Sitecom */
+-      {USB_DEVICE(0x0DF6, 0x0045)},
++      /* EnGenius */
++      {USB_DEVICE(0x1740, 0x9605)},
++      /* Guillemot */
++      {USB_DEVICE(0x06F8, 0xE031)},
+       /* Hawking */
+       {USB_DEVICE(0x0E66, 0x0015)},
+-      {USB_DEVICE(0x0E66, 0x0016)},
+-      {USB_DEVICE(0x0b05, 0x1786)},
+-      {USB_DEVICE(0x0b05, 0x1791)},    /* 11n mode disable */
+-
++      /* Mediao */
+       {USB_DEVICE(0x13D3, 0x3306)},
+-      {USB_DEVICE(0x13D3, 0x3309)},
++      /* PCI */
++      {USB_DEVICE(0x2019, 0xED18)},
++      {USB_DEVICE(0x2019, 0x4901)},
++      /* Sitecom */
++      {USB_DEVICE(0x0DF6, 0x0058)},
++      {USB_DEVICE(0x0DF6, 0x0049)},
++      {USB_DEVICE(0x0DF6, 0x004C)},
++      {USB_DEVICE(0x0DF6, 0x0064)},
++      /* Skyworth */
++      {USB_DEVICE(0x14b2, 0x3300)},
++      {USB_DEVICE(0x14b2, 0x3301)},
++      {USB_DEVICE(0x14B2, 0x3302)},
++      /* - */
++      {USB_DEVICE(0x04F2, 0xAFF2)},
++      {USB_DEVICE(0x04F2, 0xAFF5)},
++      {USB_DEVICE(0x04F2, 0xAFF6)},
++      {USB_DEVICE(0x13D3, 0x3339)},
++      {USB_DEVICE(0x13D3, 0x3340)}, /* 11n mode disable */
++      {USB_DEVICE(0x13D3, 0x3341)}, /* 11n mode disable */
+       {USB_DEVICE(0x13D3, 0x3310)},
+-      {USB_DEVICE(0x13D3, 0x3311)},    /* 11n mode disable */
+       {USB_DEVICE(0x13D3, 0x3325)},
+-      {USB_DEVICE(0x083A, 0xC512)},
++
++/* RTL8192SU */
++      /* Realtek */
++      {USB_DEVICE(0x0BDA, 0x8174)},
++      {USB_DEVICE(0x0BDA, 0x8174)},
++      /* Belkin */
++      {USB_DEVICE(0x050D, 0x845A)},
++      /* Corega */
++      {USB_DEVICE(0x07AA, 0x0051)},
++      /* Edimax */
++      {USB_DEVICE(0x7392, 0x7622)},
++      /* NEC */
++      {USB_DEVICE(0x0409, 0x02B6)},
+       {}
+ };
+@@ -103,8 +172,20 @@ MODULE_DEVICE_TABLE(usb, rtl871x_usb_id_
+ static struct specific_device_id specific_device_id_tbl[] = {
+       {.idVendor = 0x0b05, .idProduct = 0x1791,
+                .flags = SPEC_DEV_ID_DISABLE_HT},
++      {.idVendor = 0x0df6, .idProduct = 0x0059,
++               .flags = SPEC_DEV_ID_DISABLE_HT},
++      {.idVendor = 0x13d3, .idProduct = 0x3306,
++               .flags = SPEC_DEV_ID_DISABLE_HT},
+       {.idVendor = 0x13D3, .idProduct = 0x3311,
+                .flags = SPEC_DEV_ID_DISABLE_HT},
++      {.idVendor = 0x13d3, .idProduct = 0x3335,
++               .flags = SPEC_DEV_ID_DISABLE_HT},
++      {.idVendor = 0x13d3, .idProduct = 0x3336,
++               .flags = SPEC_DEV_ID_DISABLE_HT},
++      {.idVendor = 0x13d3, .idProduct = 0x3340,
++               .flags = SPEC_DEV_ID_DISABLE_HT},
++      {.idVendor = 0x13d3, .idProduct = 0x3341,
++               .flags = SPEC_DEV_ID_DISABLE_HT},
+       {}
+ };
diff --git a/queue-2.6.37/staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch b/queue-2.6.37/staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch
new file mode 100644 (file)
index 0000000..ac05547
--- /dev/null
@@ -0,0 +1,31 @@
+From 9c33008412683eba91bce2dc4575f28c728b6bd1 Mon Sep 17 00:00:00 2001
+From: Denis Kirjanov <dkirjanov@kernel.org>
+Date: Mon, 10 Jan 2011 20:09:30 +0000
+Subject: staging: rt2860: Fix incorrect netif_stop_queue usage warning
+
+From: Denis Kirjanov <dkirjanov@kernel.org>
+
+commit 9c33008412683eba91bce2dc4575f28c728b6bd1 upstream.
+
+The TX queues are allocated inside register_netdev.
+It doesn't make any sense to stop the queue before
+allocation.
+
+Signed-off-by: Denis Kirjanov <dkirjanov@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rt2860/rt_main_dev.c |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/staging/rt2860/rt_main_dev.c
++++ b/drivers/staging/rt2860/rt_main_dev.c
+@@ -483,8 +483,6 @@ struct net_device *RtmpPhyNetDevInit(str
+       net_dev->ml_priv = (void *)pAd;
+       pAd->net_dev = net_dev;
+-      netif_stop_queue(net_dev);
+-
+       return net_dev;
+ }
diff --git a/queue-2.6.37/staging-rt2860-fix-previous-patch-error.patch b/queue-2.6.37/staging-rt2860-fix-previous-patch-error.patch
new file mode 100644 (file)
index 0000000..d5d7ed0
--- /dev/null
@@ -0,0 +1,31 @@
+From 1f0613158ea14b399fd7a16470630a729ba9d0c3 Mon Sep 17 00:00:00 2001
+From: Chen, Chien-Chia <machen@novell.com>
+Date: Thu, 9 Dec 2010 10:52:08 +0800
+Subject: Staging: rt2860: fix previous patch error
+
+From: Chen, Chien-Chia <machen@novell.com>
+
+commit 1f0613158ea14b399fd7a16470630a729ba9d0c3 upstream.
+
+Somehow Greg messed up the last patch and missed a chunk.  This patch
+contains the missing chunk.
+
+Acked-by: Lee, Chun-Yi <jlee@novell.com>
+Signed-off-by: Chen, Chien-Chia <machen@novell.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rt2860/chips/rt30xx.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/rt2860/chips/rt30xx.c
++++ b/drivers/staging/rt2860/chips/rt30xx.c
+@@ -441,7 +441,7 @@ void RT30xxReverseRFSleepModeSetup(struc
+               /* VCO_IC, RF R7 register Bit 4 & Bit 5 to 1 */
+               RT30xxReadRFRegister(pAd, RF_R07, &RFValue);
+-              RFValue |= 0x30;
++              RFValue |= 0x20;
+               RT30xxWriteRFRegister(pAd, RF_R07, RFValue);
+               /* Idoh, RF R9 register Bit 1, Bit 2 & Bit 3 to 1 */
diff --git a/queue-2.6.37/staging-rt3090-fix-rt3090-scan-ap-function.patch b/queue-2.6.37/staging-rt3090-fix-rt3090-scan-ap-function.patch
new file mode 100644 (file)
index 0000000..3e4bf77
--- /dev/null
@@ -0,0 +1,47 @@
+From 1226056d9608d241db4b558a0d88a347ad5c66ae Mon Sep 17 00:00:00 2001
+From: Chen, Chien-Chia <machen@novell.com>
+Date: Wed, 8 Dec 2010 14:20:33 -0800
+Subject: Staging: rt3090: Fix RT3090 scan AP function
+
+From: Chen, Chien-Chia <machen@novell.com>
+
+commit 1226056d9608d241db4b558a0d88a347ad5c66ae upstream.
+
+Fix RT3090 scan AP function.
+
+This patch fixes the rt3090 wireless module failed
+to scan AP around due to  Windows driver causing
+rt3090 module unable to scan AP in Linux.
+
+Acked-by: Lee, Chun-Yi <jlee@novell.com>
+Signed-off-by: Chen, Chien-Chia <machen@novell.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rt2860/chips/rt3090.c |    3 ++-
+ drivers/staging/rt2860/chips/rt30xx.c |    2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/rt2860/chips/rt3090.c
++++ b/drivers/staging/rt2860/chips/rt3090.c
+@@ -51,7 +51,8 @@ void NICInitRT3090RFRegisters(struct rt_
+       if (IS_RT3090(pAd)) {
+               /* Init RF calibration */
+               /* Driver should toggle RF R30 bit7 before init RF registers */
+-              u32 RfReg = 0, data;
++              u8 RfReg;
++              u32 data;
+               RT30xxReadRFRegister(pAd, RF_R30, (u8 *)&RfReg);
+               RfReg |= 0x80;
+--- a/drivers/staging/rt2860/chips/rt30xx.c
++++ b/drivers/staging/rt2860/chips/rt30xx.c
+@@ -53,7 +53,7 @@ struct rt_reg_pair RT30xx_RFRegTable[] =
+       ,
+       {RF_R06, 0x02}
+       ,
+-      {RF_R07, 0x70}
++      {RF_R07, 0x60}
+       ,
+       {RF_R09, 0x0F}
+       ,
diff --git a/queue-2.6.37/staging-speakup-confusion-in-silent_store.patch b/queue-2.6.37/staging-speakup-confusion-in-silent_store.patch
new file mode 100644 (file)
index 0000000..09d424d
--- /dev/null
@@ -0,0 +1,30 @@
+From e7bf352fcd85c33b0805da891fc97fea8b5e996e Mon Sep 17 00:00:00 2001
+From: roel kluin <roel.kluin@gmail.com>
+Date: Mon, 3 Jan 2011 11:59:48 -0800
+Subject: Staging: speakup: &&/|| confusion in silent_store()
+
+From: roel kluin <roel.kluin@gmail.com>
+
+commit e7bf352fcd85c33b0805da891fc97fea8b5e996e upstream.
+
+Fix test: the branch is always taken.
+
+Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/speakup/kobjects.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/speakup/kobjects.c
++++ b/drivers/staging/speakup/kobjects.c
+@@ -332,7 +332,7 @@ static ssize_t silent_store(struct kobje
+       unsigned long flags;
+       len = strlen(buf);
+-      if (len > 0 || len < 3) {
++      if (len > 0 && len < 3) {
+               ch = buf[0];
+               if (ch == '\n')
+                       ch = '0';
diff --git a/queue-2.6.37/staging-zram-fix-data-corruption-issue.patch b/queue-2.6.37/staging-zram-fix-data-corruption-issue.patch
new file mode 100644 (file)
index 0000000..c440ea4
--- /dev/null
@@ -0,0 +1,53 @@
+From 5414e557fca545614ceedc3d3496f747457e2e3b Mon Sep 17 00:00:00 2001
+From: Nitin Gupta <ngupta@vflare.org>
+Date: Sat, 5 Feb 2011 20:34:20 -0500
+Subject: staging: zram: fix data corruption issue
+
+From: Nitin Gupta <ngupta@vflare.org>
+
+commit 5414e557fca545614ceedc3d3496f747457e2e3b upstream.
+
+In zram_read() and zram_write() we were not incrementing the
+index number and thus were reading/writing values from/to
+incorrect sectors on zram disk, resulting in data corruption.
+
+Signed-off-by: Nitin Gupta <ngupta@vflare.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/zram/zram_drv.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/staging/zram/zram_drv.c
++++ b/drivers/staging/zram/zram_drv.c
+@@ -227,6 +227,7 @@ static int zram_read(struct zram *zram,
+               if (zram_test_flag(zram, index, ZRAM_ZERO)) {
+                       handle_zero_page(page);
++                      index++;
+                       continue;
+               }
+@@ -235,12 +236,14 @@ static int zram_read(struct zram *zram,
+                       pr_debug("Read before write: sector=%lu, size=%u",
+                               (ulong)(bio->bi_sector), bio->bi_size);
+                       /* Do nothing */
++                      index++;
+                       continue;
+               }
+               /* Page is stored uncompressed since it's incompressible */
+               if (unlikely(zram_test_flag(zram, index, ZRAM_UNCOMPRESSED))) {
+                       handle_uncompressed_page(zram, page, index);
++                      index++;
+                       continue;
+               }
+@@ -320,6 +323,7 @@ static int zram_write(struct zram *zram,
+                       mutex_unlock(&zram->lock);
+                       zram_stat_inc(&zram->stats.pages_zero);
+                       zram_set_flag(zram, index, ZRAM_ZERO);
++                      index++;
+                       continue;
+               }
diff --git a/queue-2.6.37/usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch b/queue-2.6.37/usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch
new file mode 100644 (file)
index 0000000..3d7c5d5
--- /dev/null
@@ -0,0 +1,59 @@
+From aa52b3a92918039b273fc9d1994bd34227c40269 Mon Sep 17 00:00:00 2001
+From: Nicolaus Colberg <nicolaus.colberg@cinterion.com>
+Date: Wed, 12 Jan 2011 16:30:03 +0100
+Subject: USB: adding USB support for Cinterion's HC2x, EU3 and PH8 products
+
+From: Nicolaus Colberg <nicolaus.colberg@cinterion.com>
+
+commit aa52b3a92918039b273fc9d1994bd34227c40269 upstream.
+
+/drivers/usb/serial/option.c: Adding support for Cinterion's HC25, HC28,
+HC28J, EU3-E, EU3-P and PH8 by correcting/adding Cinterion's and
+Siemens' Vendor IDs as well as Product IDs and USB_DEVICE tuples
+
+Signed-off-by: Nicolaus Colberg <nicolaus.colberg@cinterion.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |   23 +++++++++++++++++++++--
+ 1 file changed, 21 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -382,7 +382,16 @@ static void option_instat_callback(struc
+ #define HAIER_VENDOR_ID                               0x201e
+ #define HAIER_PRODUCT_CE100                   0x2009
+-#define CINTERION_VENDOR_ID                   0x0681
++/* Cinterion (formerly Siemens) products */
++#define SIEMENS_VENDOR_ID                             0x0681
++#define CINTERION_VENDOR_ID                           0x1e2d
++#define CINTERION_PRODUCT_HC25_MDM            0x0047
++#define CINTERION_PRODUCT_HC25_MDMNET 0x0040
++#define CINTERION_PRODUCT_HC28_MDM            0x004C
++#define CINTERION_PRODUCT_HC28_MDMNET 0x004A /* same for HC28J */
++#define CINTERION_PRODUCT_EU3_E                       0x0051
++#define CINTERION_PRODUCT_EU3_P                       0x0052
++#define CINTERION_PRODUCT_PH8                 0x0053
+ /* Olivetti products */
+ #define OLIVETTI_VENDOR_ID                    0x0b3c
+@@ -945,7 +954,17 @@ static const struct usb_device_id option
+       { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100F) },
+       { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1011)},
+       { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1012)},
+-      { USB_DEVICE(CINTERION_VENDOR_ID, 0x0047) },
++      /* Cinterion */
++      { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_E) },
++      { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) },
++      { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8) },
++      { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) },
++      { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
++      { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) },
++      { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
++      { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
++      { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
++
+       { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
+       { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
+       { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */
diff --git a/queue-2.6.37/usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch b/queue-2.6.37/usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch
new file mode 100644 (file)
index 0000000..de40970
--- /dev/null
@@ -0,0 +1,32 @@
+From 721d92fc6373dee15846216f9d178ec240ec0fd7 Mon Sep 17 00:00:00 2001
+From: Arvid Ephraim Picciani <arvid.picciani@nokia.com>
+Date: Tue, 25 Jan 2011 15:58:40 +0100
+Subject: USB: cdc-acm: Adding second ACM channel support for Nokia N8
+
+From: Arvid Ephraim Picciani <arvid.picciani@nokia.com>
+
+commit 721d92fc6373dee15846216f9d178ec240ec0fd7 upstream.
+
+This adds the N8 to the list of devices in cdc-acm, in order to get the
+secondary ACM device exposed.
+
+In the spirit of:
+http://kerneltrap.org/mailarchive/linux-usb/2010/9/4/6264554
+
+Signed-off-by: Arvid Ephraim Picciani <arvid.picciani@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/cdc-acm.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/class/cdc-acm.c
++++ b/drivers/usb/class/cdc-acm.c
+@@ -1607,6 +1607,7 @@ static const struct usb_device_id acm_id
+       { NOKIA_PCSUITE_ACM_INFO(0x0154), }, /* Nokia 5800 XpressMusic */
+       { NOKIA_PCSUITE_ACM_INFO(0x04ce), }, /* Nokia E90 */
+       { NOKIA_PCSUITE_ACM_INFO(0x01d4), }, /* Nokia E55 */
++      { NOKIA_PCSUITE_ACM_INFO(0x0302), }, /* Nokia N8 */
+       { SAMSUNG_PCSUITE_ACM_INFO(0x6651), }, /* Samsung GTi8510 (INNOV8) */
+       /* NOTE: non-Nokia COMM/ACM/0xff is likely MSFT RNDIS... NOT a modem! */
diff --git a/queue-2.6.37/usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch b/queue-2.6.37/usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch
new file mode 100644 (file)
index 0000000..7a008d8
--- /dev/null
@@ -0,0 +1,77 @@
+From baab93afc2844b68d57b0dcca5e1d34c5d7cf411 Mon Sep 17 00:00:00 2001
+From: Alex He <alex.he@amd.com>
+Date: Tue, 21 Dec 2010 17:45:46 +0800
+Subject: USB: EHCI: ASPM quirk of ISOC on AMD Hudson
+
+From: Alex He <alex.he@amd.com>
+
+commit baab93afc2844b68d57b0dcca5e1d34c5d7cf411 upstream.
+
+AMD Hudson also needs the same ASPM quirk as SB800
+
+Signed-off-by: Alex He <alex.he@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-pci.c |   33 ++++++++++++++++++++-------------
+ 1 file changed, 20 insertions(+), 13 deletions(-)
+
+--- a/drivers/usb/host/ehci-pci.c
++++ b/drivers/usb/host/ehci-pci.c
+@@ -41,28 +41,35 @@ static int ehci_pci_reinit(struct ehci_h
+       return 0;
+ }
+-static int ehci_quirk_amd_SB800(struct ehci_hcd *ehci)
++static int ehci_quirk_amd_hudson(struct ehci_hcd *ehci)
+ {
+       struct pci_dev *amd_smbus_dev;
+       u8 rev = 0;
+       amd_smbus_dev = pci_get_device(PCI_VENDOR_ID_ATI, 0x4385, NULL);
+-      if (!amd_smbus_dev)
+-              return 0;
+-
+-      pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev);
+-      if (rev < 0x40) {
+-              pci_dev_put(amd_smbus_dev);
+-              amd_smbus_dev = NULL;
+-              return 0;
++      if (amd_smbus_dev) {
++              pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev);
++              if (rev < 0x40) {
++                      pci_dev_put(amd_smbus_dev);
++                      amd_smbus_dev = NULL;
++                      return 0;
++              }
++      } else {
++              amd_smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD, 0x780b, NULL);
++              if (!amd_smbus_dev)
++                      return 0;
++              pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev);
++              if (rev < 0x11 || rev > 0x18) {
++                      pci_dev_put(amd_smbus_dev);
++                      amd_smbus_dev = NULL;
++                      return 0;
++              }
+       }
+       if (!amd_nb_dev)
+               amd_nb_dev = pci_get_device(PCI_VENDOR_ID_AMD, 0x1510, NULL);
+-      if (!amd_nb_dev)
+-              ehci_err(ehci, "QUIRK: unable to get AMD NB device\n");
+-      ehci_info(ehci, "QUIRK: Enable AMD SB800 L1 fix\n");
++      ehci_info(ehci, "QUIRK: Enable exception for AMD Hudson ASPM\n");
+       pci_dev_put(amd_smbus_dev);
+       amd_smbus_dev = NULL;
+@@ -128,7 +135,7 @@ static int ehci_pci_setup(struct usb_hcd
+       /* cache this readonly data; minimize chip reads */
+       ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
+-      if (ehci_quirk_amd_SB800(ehci))
++      if (ehci_quirk_amd_hudson(ehci))
+               ehci->amd_l1_fix = 1;
+       retval = ehci_halt(ehci);
diff --git a/queue-2.6.37/usb-ehci-fix-dma-deallocation-bug.patch b/queue-2.6.37/usb-ehci-fix-dma-deallocation-bug.patch
new file mode 100644 (file)
index 0000000..eee0f29
--- /dev/null
@@ -0,0 +1,71 @@
+From f75593ceaa08e6d27aec1a5de31cded19e850dd1 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Thu, 6 Jan 2011 10:17:09 -0500
+Subject: USB: EHCI: fix DMA deallocation bug
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit f75593ceaa08e6d27aec1a5de31cded19e850dd1 upstream.
+
+This patch (as1440) fixes a bug in ehci-hcd.  ehci->periodic_size is
+used to compute the size in a dma_alloc_coherent() call, but then it
+gets changed later on.  As a result, the corresponding call to
+dma_free_coherent() passes a different size from the original
+allocation.  Fix the problem by adjusting ehci->periodic_size before
+carrying out any of the memory allocations.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
+CC: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-hcd.c |   19 ++++++++++++-------
+ 1 file changed, 12 insertions(+), 7 deletions(-)
+
+--- a/drivers/usb/host/ehci-hcd.c
++++ b/drivers/usb/host/ehci-hcd.c
+@@ -572,6 +572,8 @@ static int ehci_init(struct usb_hcd *hcd
+       ehci->iaa_watchdog.function = ehci_iaa_watchdog;
+       ehci->iaa_watchdog.data = (unsigned long) ehci;
++      hcc_params = ehci_readl(ehci, &ehci->caps->hcc_params);
++
+       /*
+        * hw default: 1K periodic list heads, one per frame.
+        * periodic_size can shrink by USBCMD update if hcc_params allows.
+@@ -579,11 +581,20 @@ static int ehci_init(struct usb_hcd *hcd
+       ehci->periodic_size = DEFAULT_I_TDPS;
+       INIT_LIST_HEAD(&ehci->cached_itd_list);
+       INIT_LIST_HEAD(&ehci->cached_sitd_list);
++
++      if (HCC_PGM_FRAMELISTLEN(hcc_params)) {
++              /* periodic schedule size can be smaller than default */
++              switch (EHCI_TUNE_FLS) {
++              case 0: ehci->periodic_size = 1024; break;
++              case 1: ehci->periodic_size = 512; break;
++              case 2: ehci->periodic_size = 256; break;
++              default:        BUG();
++              }
++      }
+       if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0)
+               return retval;
+       /* controllers may cache some of the periodic schedule ... */
+-      hcc_params = ehci_readl(ehci, &ehci->caps->hcc_params);
+       if (HCC_ISOC_CACHE(hcc_params))         // full frame cache
+               ehci->i_thresh = 2 + 8;
+       else                                    // N microframes cached
+@@ -637,12 +648,6 @@ static int ehci_init(struct usb_hcd *hcd
+               /* periodic schedule size can be smaller than default */
+               temp &= ~(3 << 2);
+               temp |= (EHCI_TUNE_FLS << 2);
+-              switch (EHCI_TUNE_FLS) {
+-              case 0: ehci->periodic_size = 1024; break;
+-              case 1: ehci->periodic_size = 512; break;
+-              case 2: ehci->periodic_size = 256; break;
+-              default:        BUG();
+-              }
+       }
+       if (HCC_LPM(hcc_params)) {
+               /* support link power management EHCI 1.1 addendum */
diff --git a/queue-2.6.37/usb-ehci-fix-scheduling-while-atomic-during-suspend.patch b/queue-2.6.37/usb-ehci-fix-scheduling-while-atomic-during-suspend.patch
new file mode 100644 (file)
index 0000000..e98e67c
--- /dev/null
@@ -0,0 +1,126 @@
+From 148fc55fd0449683a1d15bf219ad8d8b6fa17545 Mon Sep 17 00:00:00 2001
+From: Yin Kangkai <kangkai.yin@intel.com>
+Date: Fri, 28 Jan 2011 12:04:35 +0800
+Subject: USB: EHCI: fix scheduling while atomic during suspend
+
+From: Yin Kangkai <kangkai.yin@intel.com>
+
+commit 148fc55fd0449683a1d15bf219ad8d8b6fa17545 upstream.
+
+There is a msleep with spin lock held during ehci pci suspend, which will
+cause kernel BUG: scheduling while atomic. Fix that.
+
+[  184.139620] BUG: scheduling while atomic: kworker/u:11/416/0x00000002
+[  184.139632] 4 locks held by kworker/u:11/416:
+[  184.139640]  #0:  (events_unbound){+.+.+.}, at: [<c104ddd4>] process_one_work+0x1b3/0x4cb
+[  184.139669]  #1:  ((&entry->work)){+.+.+.}, at: [<c104ddd4>] process_one_work+0x1b3/0x4cb
+[  184.139686]  #2:  (&__lockdep_no_validate__){+.+.+.}, at: [<c127cde3>] __device_suspend+0x2c/0x154
+[  184.139706]  #3:  (&(&ehci->lock)->rlock){-.-...}, at: [<c132f3d8>] ehci_pci_suspend+0x35/0x7b
+[  184.139725] Modules linked in: serio_raw pegasus joydev mrst_gfx(C) battery
+[  184.139748] irq event stamp: 52
+[  184.139753] hardirqs last  enabled at (51): [<c14fdaac>] mutex_lock_nested+0x258/0x293
+[  184.139766] hardirqs last disabled at (52): [<c14fe7b4>] _raw_spin_lock_irqsave+0xf/0x3e
+[  184.139777] softirqs last  enabled at (0): [<c10371c1>] copy_process+0x3d2/0x109d
+[  184.139789] softirqs last disabled at (0): [<  (null)>]   (null)
+[  184.139802] Pid: 416, comm: kworker/u:11 Tainted: G         C  2.6.37-6.3-adaptation-oaktrail #37
+[  184.139809] Call Trace:
+[  184.139820]  [<c102eeff>] __schedule_bug+0x5e/0x65
+[  184.139829]  [<c14fbca5>] schedule+0xac/0xc4c
+[  184.139840]  [<c11d4845>] ? string+0x37/0x8b
+[  184.139853]  [<c1044f21>] ? lock_timer_base+0x1f/0x3e
+[  184.139863]  [<c14fe7da>] ? _raw_spin_lock_irqsave+0x35/0x3e
+[  184.139876]  [<c1061590>] ? trace_hardirqs_off+0xb/0xd
+[  184.139885]  [<c14fccdc>] schedule_timeout+0x283/0x2d9
+[  184.139896]  [<c104516f>] ? process_timeout+0x0/0xa
+[  184.139906]  [<c14fcd47>] schedule_timeout_uninterruptible+0x15/0x17
+[  184.139916]  [<c104566a>] msleep+0x10/0x16
+[  184.139926]  [<c132f316>] ehci_adjust_port_wakeup_flags+0x69/0xf6
+[  184.139937]  [<c132f3eb>] ehci_pci_suspend+0x48/0x7b
+[  184.139946]  [<c1326587>] suspend_common+0x52/0xbb
+[  184.139956]  [<c1326625>] hcd_pci_suspend+0x26/0x28
+[  184.139967]  [<c11e7182>] pci_pm_suspend+0x5f/0xd0
+[  184.139976]  [<c127ca3a>] pm_op+0x5d/0xf0
+[  184.139986]  [<c127ceac>] __device_suspend+0xf5/0x154
+[  184.139996]  [<c127d2c8>] async_suspend+0x16/0x3a
+[  184.140006]  [<c1058f54>] async_run_entry_fn+0x89/0x111
+[  184.140016]  [<c104deb6>] process_one_work+0x295/0x4cb
+[  184.140026]  [<c1058ecb>] ? async_run_entry_fn+0x0/0x111
+[  184.140036]  [<c104e3d0>] worker_thread+0x17f/0x298
+[  184.140045]  [<c104e251>] ? worker_thread+0x0/0x298
+[  184.140055]  [<c105277f>] kthread+0x64/0x69
+[  184.140064]  [<c105271b>] ? kthread+0x0/0x69
+[  184.140075]  [<c1002efa>] kernel_thread_helper+0x6/0x1a
+
+Signed-off-by: Yin Kangkai <kangkai.yin@intel.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+CC: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-au1xxx.c |    2 +-
+ drivers/usb/host/ehci-hub.c    |    7 +++++++
+ drivers/usb/host/ehci-pci.c    |    2 +-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/host/ehci-au1xxx.c
++++ b/drivers/usb/host/ehci-au1xxx.c
+@@ -227,8 +227,8 @@ static int ehci_hcd_au1xxx_drv_suspend(s
+        * mark HW unaccessible.  The PM and USB cores make sure that
+        * the root hub is either suspended or stopped.
+        */
+-      spin_lock_irqsave(&ehci->lock, flags);
+       ehci_prepare_ports_for_controller_suspend(ehci, device_may_wakeup(dev));
++      spin_lock_irqsave(&ehci->lock, flags);
+       ehci_writel(ehci, 0, &ehci->regs->intr_enable);
+       (void)ehci_readl(ehci, &ehci->regs->intr_enable);
+--- a/drivers/usb/host/ehci-hub.c
++++ b/drivers/usb/host/ehci-hub.c
+@@ -111,6 +111,7 @@ static void ehci_adjust_port_wakeup_flag
+ {
+       int             port;
+       u32             temp;
++      unsigned long   flags;
+       /* If remote wakeup is enabled for the root hub but disabled
+        * for the controller, we must adjust all the port wakeup flags
+@@ -120,6 +121,8 @@ static void ehci_adjust_port_wakeup_flag
+       if (!ehci_to_hcd(ehci)->self.root_hub->do_remote_wakeup || do_wakeup)
+               return;
++      spin_lock_irqsave(&ehci->lock, flags);
++
+       /* clear phy low-power mode before changing wakeup flags */
+       if (ehci->has_hostpc) {
+               port = HCS_N_PORTS(ehci->hcs_params);
+@@ -131,7 +134,9 @@ static void ehci_adjust_port_wakeup_flag
+                       temp = ehci_readl(ehci, hostpc_reg);
+                       ehci_writel(ehci, temp & ~HOSTPC_PHCD, hostpc_reg);
+               }
++              spin_unlock_irqrestore(&ehci->lock, flags);
+               msleep(5);
++              spin_lock_irqsave(&ehci->lock, flags);
+       }
+       port = HCS_N_PORTS(ehci->hcs_params);
+@@ -170,6 +175,8 @@ static void ehci_adjust_port_wakeup_flag
+       /* Does the root hub have a port wakeup pending? */
+       if (!suspending && (ehci_readl(ehci, &ehci->regs->status) & STS_PCD))
+               usb_hcd_resume_root_hub(ehci_to_hcd(ehci));
++
++      spin_unlock_irqrestore(&ehci->lock, flags);
+ }
+ static int ehci_bus_suspend (struct usb_hcd *hcd)
+--- a/drivers/usb/host/ehci-pci.c
++++ b/drivers/usb/host/ehci-pci.c
+@@ -360,8 +360,8 @@ static int ehci_pci_suspend(struct usb_h
+        * mark HW unaccessible.  The PM and USB cores make sure that
+        * the root hub is either suspended or stopped.
+        */
+-      spin_lock_irqsave (&ehci->lock, flags);
+       ehci_prepare_ports_for_controller_suspend(ehci, do_wakeup);
++      spin_lock_irqsave (&ehci->lock, flags);
+       ehci_writel(ehci, 0, &ehci->regs->intr_enable);
+       (void)ehci_readl(ehci, &ehci->regs->intr_enable);
diff --git a/queue-2.6.37/usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch b/queue-2.6.37/usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch
new file mode 100644 (file)
index 0000000..68d5080
--- /dev/null
@@ -0,0 +1,48 @@
+From bf3d7d40e42a85ca73a34e1385ff34f092a384eb Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Wed, 2 Feb 2011 13:59:33 -0500
+Subject: USB: fix race between root-hub resume and wakeup requests
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit bf3d7d40e42a85ca73a34e1385ff34f092a384eb upstream.
+
+The USB core keeps track of pending resume requests for root hubs, in
+order to resolve races between wakeup requests and suspends.  However
+the code that does this is subject to another race (between wakeup
+requests and resumes) because the WAKEUP_PENDING flag is cleared
+before the resume occurs, leaving a window in which another wakeup
+request might arrive.
+
+This patch (as1447) fixes the problem by clearing the WAKEUP_PENDING
+flag after the resume instead of before it.
+
+This fixes Bugzilla #24952.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Paul Bender <pebender@san.rr.com>
+Tested-by: warpme <warpme@o2.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hcd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/core/hcd.c
++++ b/drivers/usb/core/hcd.c
+@@ -1956,7 +1956,6 @@ int hcd_bus_resume(struct usb_device *rh
+       dev_dbg(&rhdev->dev, "usb %s%s\n",
+                       (msg.event & PM_EVENT_AUTO ? "auto-" : ""), "resume");
+-      clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags);
+       if (!hcd->driver->bus_resume)
+               return -ENOENT;
+       if (hcd->state == HC_STATE_RUNNING)
+@@ -1964,6 +1963,7 @@ int hcd_bus_resume(struct usb_device *rh
+       hcd->state = HC_STATE_RESUMING;
+       status = hcd->driver->bus_resume(hcd);
++      clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags);
+       if (status == 0) {
+               /* TRSMRCY = 10 msec */
+               msleep(10);
diff --git a/queue-2.6.37/usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch b/queue-2.6.37/usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch
new file mode 100644 (file)
index 0000000..a425ccc
--- /dev/null
@@ -0,0 +1,93 @@
+From 6ec2f46c4b4abf48c88c0ae7c476f347b97e1105 Mon Sep 17 00:00:00 2001
+From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Date: Sat, 29 Jan 2011 15:32:52 +0100
+Subject: USB: ftdi_sio: add ST Micro Connect Lite uart support
+
+From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit 6ec2f46c4b4abf48c88c0ae7c476f347b97e1105 upstream.
+
+on ST Micro Connect Lite we have 4 port
+Part A and B for the JTAG
+Port C Uart
+Port D for PIO
+
+Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |   26 ++++++++++++++++++++++++++
+ drivers/usb/serial/ftdi_sio_ids.h |    6 ++++++
+ 2 files changed, 32 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -99,6 +99,7 @@ struct ftdi_sio_quirk {
+ static int   ftdi_jtag_probe(struct usb_serial *serial);
+ static int   ftdi_mtxorb_hack_setup(struct usb_serial *serial);
+ static int   ftdi_NDI_device_setup(struct usb_serial *serial);
++static int   ftdi_stmclite_probe(struct usb_serial *serial);
+ static void  ftdi_USB_UIRT_setup(struct ftdi_private *priv);
+ static void  ftdi_HE_TIRA1_setup(struct ftdi_private *priv);
+@@ -122,6 +123,10 @@ static struct ftdi_sio_quirk ftdi_HE_TIR
+       .port_probe = ftdi_HE_TIRA1_setup,
+ };
++static struct ftdi_sio_quirk ftdi_stmclite_quirk = {
++      .probe  = ftdi_stmclite_probe,
++};
++
+ /*
+  * The 8U232AM has the same API as the sio except for:
+  * - it can support MUCH higher baudrates; up to:
+@@ -809,6 +814,8 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) },
+       { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
++      { USB_DEVICE(ST_VID, ST_STMCLT1030_PID),
++              .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+@@ -1691,6 +1698,25 @@ static int ftdi_jtag_probe(struct usb_se
+ }
+ /*
++ * First and second port on STMCLiteadaptors is reserved for JTAG interface
++ * and the forth port for pio
++ */
++static int ftdi_stmclite_probe(struct usb_serial *serial)
++{
++      struct usb_device *udev = serial->dev;
++      struct usb_interface *interface = serial->interface;
++
++      dbg("%s", __func__);
++
++      if (interface == udev->actconfig->interface[2])
++              return 0;
++
++      dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n");
++
++      return -ENODEV;
++}
++
++/*
+  * The Matrix Orbital VK204-25-USB has an invalid IN endpoint.
+  * We have to correct it if we want to read from it.
+  */
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1034,6 +1034,12 @@
+ #define WHT_PID                       0x0004 /* Wireless Handheld Terminal */
+ /*
++ * STMicroelectonics
++ */
++#define ST_VID                        0x0483
++#define ST_STMCLT1030_PID     0x3747 /* ST Micro Connect Lite STMCLT1030 */
++
++/*
+  * Papouch products (http://www.papouch.com/)
+  * Submitted by Folkert van Heusden
+  */
diff --git a/queue-2.6.37/usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch b/queue-2.6.37/usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch
new file mode 100644 (file)
index 0000000..2b892b0
--- /dev/null
@@ -0,0 +1,45 @@
+From 28fe2eb0162a1d23370dd99ff7d0e35632b1ee91 Mon Sep 17 00:00:00 2001
+From: Michael Williamson <michael.h.williamson@gmail.com>
+Date: Thu, 27 Jan 2011 18:36:19 -0600
+Subject: USB: ftdi_sio: Add VID=0x0647, PID=0x0100 for Acton Research spectrograph
+
+From: Michael Williamson <michael.h.williamson@gmail.com>
+
+commit 28fe2eb0162a1d23370dd99ff7d0e35632b1ee91 upstream.
+
+Add the USB Vendor ID and Product ID for a Acton Research Corp.
+spectrograph device with a FTDI chip for serial I/O.
+
+Signed-off-by: Michael H Williamson <michael.h.williamson@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    1 +
+ drivers/usb/serial/ftdi_sio_ids.h |    6 ++++++
+ 2 files changed, 7 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -620,6 +620,7 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, FTDI_OCEANIC_PID) },
+       { USB_DEVICE(TTI_VID, TTI_QL355P_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) },
++      { USB_DEVICE(ACTON_VID, ACTON_SPECTRAPRO_PID) },
+       { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) },
+       { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) },
+       { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -518,6 +518,12 @@
+ #define RATOC_PRODUCT_ID_USB60F       0xb020
+ /*
++ * Acton Research Corp.
++ */
++#define ACTON_VID             0x0647  /* Vendor ID */
++#define ACTON_SPECTRAPRO_PID  0x0100
++
++/*
+  * Contec products (http://www.contec.com)
+  * Submitted by Daniel Sangorrin
+  */
diff --git a/queue-2.6.37/usb-g_printer-fix-bug-in-module-parameter-definitions.patch b/queue-2.6.37/usb-g_printer-fix-bug-in-module-parameter-definitions.patch
new file mode 100644 (file)
index 0000000..2e85221
--- /dev/null
@@ -0,0 +1,69 @@
+From ad84e4a9efb7c8ed322bafb6ebdb9c3a49a3d3a8 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 10 Jan 2011 11:24:14 -0500
+Subject: USB: g_printer: fix bug in module parameter definitions
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit ad84e4a9efb7c8ed322bafb6ebdb9c3a49a3d3a8 upstream.
+
+This patch (as1442) fixes a bug in g_printer: Module parameters should
+not be marked "__initdata" if they are accessible in sysfs (i.e., if
+the mode value in the module_param() macro is nonzero).  Otherwise
+attempts to access the parameters will cause addressing violations.
+
+Character-string module parameters must not be marked "__initdata"
+if the module can be unloaded, because the kernel needs to access the
+parameter variable at unload time in order to free the
+dynamically-allocated string.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: Roland Kletzing <devzero@web.de>
+CC: Craig W. Nadler <craig@nadler.us>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/printer.c |   14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+--- a/drivers/usb/gadget/printer.c
++++ b/drivers/usb/gadget/printer.c
+@@ -131,31 +131,31 @@ static struct printer_dev usb_printer_ga
+  * parameters are in UTF-8 (superset of ASCII's 7 bit characters).
+  */
+-static ushort __initdata idVendor;
++static ushort idVendor;
+ module_param(idVendor, ushort, S_IRUGO);
+ MODULE_PARM_DESC(idVendor, "USB Vendor ID");
+-static ushort __initdata idProduct;
++static ushort idProduct;
+ module_param(idProduct, ushort, S_IRUGO);
+ MODULE_PARM_DESC(idProduct, "USB Product ID");
+-static ushort __initdata bcdDevice;
++static ushort bcdDevice;
+ module_param(bcdDevice, ushort, S_IRUGO);
+ MODULE_PARM_DESC(bcdDevice, "USB Device version (BCD)");
+-static char *__initdata iManufacturer;
++static char *iManufacturer;
+ module_param(iManufacturer, charp, S_IRUGO);
+ MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string");
+-static char *__initdata iProduct;
++static char *iProduct;
+ module_param(iProduct, charp, S_IRUGO);
+ MODULE_PARM_DESC(iProduct, "USB Product string");
+-static char *__initdata iSerialNum;
++static char *iSerialNum;
+ module_param(iSerialNum, charp, S_IRUGO);
+ MODULE_PARM_DESC(iSerialNum, "1");
+-static char *__initdata iPNPstring;
++static char *iPNPstring;
+ module_param(iPNPstring, charp, S_IRUGO);
+ MODULE_PARM_DESC(iPNPstring, "MFG:linux;MDL:g_printer;CLS:PRINTER;SN:1;");
diff --git a/queue-2.6.37/usb-g_printer-fix-bug-in-unregistration.patch b/queue-2.6.37/usb-g_printer-fix-bug-in-unregistration.patch
new file mode 100644 (file)
index 0000000..f958f32
--- /dev/null
@@ -0,0 +1,44 @@
+From d5aa475180d03d45c5dc6134aa833f1b3e89c45e Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 10 Jan 2011 11:23:05 -0500
+Subject: USB: g_printer: fix bug in unregistration
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit d5aa475180d03d45c5dc6134aa833f1b3e89c45e upstream.
+
+This patch (as1441) fixes a bug in g_printer.  The gadget driver, char
+device number, and class device should be unregistered in reverse
+order of registration.  As it is now, when the module is unloaded the
+class device gets unregistered first, causing a crash when the unbind
+method tries to access it.
+
+This fixes Bugzilla #25882.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: Roland Kletzing <devzero@web.de>
+CC: Craig W. Nadler <craig@nadler.us>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/printer.c |    5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/gadget/printer.c
++++ b/drivers/usb/gadget/printer.c
+@@ -1596,13 +1596,12 @@ cleanup(void)
+       int status;
+       mutex_lock(&usb_printer_gadget.lock_printer_io);
+-      class_destroy(usb_gadget_class);
+-      unregister_chrdev_region(g_printer_devno, 2);
+-
+       status = usb_gadget_unregister_driver(&printer_driver);
+       if (status)
+               ERROR(dev, "usb_gadget_unregister_driver %x\n", status);
++      unregister_chrdev_region(g_printer_devno, 2);
++      class_destroy(usb_gadget_class);
+       mutex_unlock(&usb_printer_gadget.lock_printer_io);
+ }
+ module_exit(cleanup);
diff --git a/queue-2.6.37/usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch b/queue-2.6.37/usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch
new file mode 100644 (file)
index 0000000..6b0e2ad
--- /dev/null
@@ -0,0 +1,45 @@
+From 271c1150b4f8e1685e5a8cbf76e329ec894481da Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
+Date: Mon, 17 Jan 2011 14:19:37 +0100
+Subject: USB: io_edgeport: fix the reported firmware major and minor
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Bjørn Mork <bjorn@mork.no>
+
+commit 271c1150b4f8e1685e5a8cbf76e329ec894481da upstream.
+
+The major and minor number saved in the product_info structure
+were copied from the address instead of the data, causing an
+inconsistency in the reported versions during firmware loading:
+
+ usb 4-1: firmware: requesting edgeport/down.fw
+ /usr/src/linux/drivers/usb/serial/io_edgeport.c: downloading firmware version (930) 1.16.4
+ [..]
+ /usr/src/linux/drivers/usb/serial/io_edgeport.c: edge_startup - time 3 4328191260
+ /usr/src/linux/drivers/usb/serial/io_edgeport.c:   FirmwareMajorVersion  0.0.4
+
+This can cause some confusion whether firmware loaded successfully
+or not.
+
+Signed-off-by: Bjørn Mork <bjorn@mork.no>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/io_edgeport.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/io_edgeport.c
++++ b/drivers/usb/serial/io_edgeport.c
+@@ -2889,8 +2889,8 @@ static void load_application_firmware(st
+       dbg("%s %d.%d.%d", fw_info, rec->data[0], rec->data[1], build);
+-      edge_serial->product_info.FirmwareMajorVersion = fw->data[0];
+-      edge_serial->product_info.FirmwareMinorVersion = fw->data[1];
++      edge_serial->product_info.FirmwareMajorVersion = rec->data[0];
++      edge_serial->product_info.FirmwareMinorVersion = rec->data[1];
+       edge_serial->product_info.FirmwareBuildNumber = cpu_to_le16(build);
+       for (rec = ihex_next_binrec(rec); rec;
diff --git a/queue-2.6.37/usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch b/queue-2.6.37/usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch
new file mode 100644 (file)
index 0000000..80aa2dd
--- /dev/null
@@ -0,0 +1,37 @@
+From d199c96d41d80a567493e12b8e96ea056a1350c1 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 31 Jan 2011 10:56:37 -0500
+Subject: USB: prevent buggy hubs from crashing the USB stack
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit d199c96d41d80a567493e12b8e96ea056a1350c1 upstream.
+
+If anyone comes across a high-speed hub that (by mistake or by design)
+claims to have no Transaction Translators, plugging a full- or
+low-speed device into it will cause the USB stack to crash.  This
+patch (as1446) prevents the problem by ignoring such devices, since
+the kernel has no way to communicate with them.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Perry Neben <neben@vmware.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hub.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -2723,6 +2723,11 @@ hub_port_init (struct usb_hub *hub, stru
+               udev->ttport = hdev->ttport;
+       } else if (udev->speed != USB_SPEED_HIGH
+                       && hdev->speed == USB_SPEED_HIGH) {
++              if (!hub->tt.hub) {
++                      dev_err(&udev->dev, "parent hub has no TT\n");
++                      retval = -EINVAL;
++                      goto fail;
++              }
+               udev->tt = &hub->tt;
+               udev->ttport = port1;
+       }
diff --git a/queue-2.6.37/usb-qcaux-add-pantech-uml290-device-id.patch b/queue-2.6.37/usb-qcaux-add-pantech-uml290-device-id.patch
new file mode 100644 (file)
index 0000000..bf769ac
--- /dev/null
@@ -0,0 +1,36 @@
+From a58861fbde2a350df4d27fc62fb42905669b37ce Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw@redhat.com>
+Date: Fri, 31 Dec 2010 10:51:51 -0600
+Subject: USB: qcaux: add Pantech UML290 device ID
+
+From: Dan Williams <dcbw@redhat.com>
+
+commit a58861fbde2a350df4d27fc62fb42905669b37ce upstream.
+
+Another CDC-ACM + vendor specific interface layout for the QCDM port.
+
+Signed-off-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/qcaux.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/qcaux.c
++++ b/drivers/usb/serial/qcaux.c
+@@ -36,6 +36,7 @@
+ #define UTSTARCOM_PRODUCT_UM175_V1            0x3712
+ #define UTSTARCOM_PRODUCT_UM175_V2            0x3714
+ #define UTSTARCOM_PRODUCT_UM175_ALLTEL                0x3715
++#define PANTECH_PRODUCT_UML290_VZW            0x3718
+ /* CMOTECH devices */
+ #define CMOTECH_VENDOR_ID                     0x16d8
+@@ -66,6 +67,7 @@ static struct usb_device_id id_table[] =
+       { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) },
+       { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) },
+       { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) },
++      { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) },
+       { },
+ };
+ MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/queue-2.6.37/usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch b/queue-2.6.37/usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch
new file mode 100644 (file)
index 0000000..c6ed186
--- /dev/null
@@ -0,0 +1,169 @@
+From 5620b5f7f19e9ee3fcf6ecf493fed7821b7b495b Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Tue, 11 Jan 2011 14:16:50 -0500
+Subject: USB serial: add missing .usb_driver field in serial drivers
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 5620b5f7f19e9ee3fcf6ecf493fed7821b7b495b upstream.
+
+This patch (as1443) fixes a bug found in many of the USB serial
+drivers: They don't set the .usb_driver field in their
+usb_serial_driver structure.  This field is needed for assigning
+dynamic IDs for device matching.
+
+In addition, starting with the 2.6.37 kernel, the .usb_driver field is
+needed for proper autosuspend operation.  Without it, attempts to open
+the device file will fail.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: Dan Williams <dcbw@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/io_tables.h   |    1 +
+ drivers/usb/serial/iuu_phoenix.c |    1 +
+ drivers/usb/serial/keyspan.h     |    4 ++++
+ drivers/usb/serial/moto_modem.c  |    1 +
+ drivers/usb/serial/oti6858.c     |    1 +
+ drivers/usb/serial/qcaux.c       |    1 +
+ drivers/usb/serial/siemens_mpi.c |    1 +
+ drivers/usb/serial/spcp8x5.c     |    1 +
+ drivers/usb/serial/usb-serial.c  |    8 ++++++--
+ drivers/usb/serial/usb_debug.c   |    1 +
+ 10 files changed, 18 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/io_tables.h
++++ b/drivers/usb/serial/io_tables.h
+@@ -199,6 +199,7 @@ static struct usb_serial_driver epic_dev
+               .name           = "epic",
+       },
+       .description            = "EPiC device",
++      .usb_driver             = &io_driver,
+       .id_table               = Epic_port_id_table,
+       .num_ports              = 1,
+       .open                   = edge_open,
+--- a/drivers/usb/serial/iuu_phoenix.c
++++ b/drivers/usb/serial/iuu_phoenix.c
+@@ -1275,6 +1275,7 @@ static struct usb_serial_driver iuu_devi
+                  .name = "iuu_phoenix",
+                  },
+       .id_table = id_table,
++      .usb_driver = &iuu_driver,
+       .num_ports = 1,
+       .bulk_in_size = 512,
+       .bulk_out_size = 512,
+--- a/drivers/usb/serial/keyspan.h
++++ b/drivers/usb/serial/keyspan.h
+@@ -546,6 +546,7 @@ static struct usb_serial_driver keyspan_
+               .name           = "keyspan_no_firm",
+       },
+       .description            = "Keyspan - (without firmware)",
++      .usb_driver             = &keyspan_driver,
+       .id_table               = keyspan_pre_ids,
+       .num_ports              = 1,
+       .attach                 = keyspan_fake_startup,
+@@ -557,6 +558,7 @@ static struct usb_serial_driver keyspan_
+               .name           = "keyspan_1",
+       },
+       .description            = "Keyspan 1 port adapter",
++      .usb_driver             = &keyspan_driver,
+       .id_table               = keyspan_1port_ids,
+       .num_ports              = 1,
+       .open                   = keyspan_open,
+@@ -579,6 +581,7 @@ static struct usb_serial_driver keyspan_
+               .name           = "keyspan_2",
+       },
+       .description            = "Keyspan 2 port adapter",
++      .usb_driver             = &keyspan_driver,
+       .id_table               = keyspan_2port_ids,
+       .num_ports              = 2,
+       .open                   = keyspan_open,
+@@ -601,6 +604,7 @@ static struct usb_serial_driver keyspan_
+               .name           = "keyspan_4",
+       },
+       .description            = "Keyspan 4 port adapter",
++      .usb_driver             = &keyspan_driver,
+       .id_table               = keyspan_4port_ids,
+       .num_ports              = 4,
+       .open                   = keyspan_open,
+--- a/drivers/usb/serial/moto_modem.c
++++ b/drivers/usb/serial/moto_modem.c
+@@ -44,6 +44,7 @@ static struct usb_serial_driver moto_dev
+               .name =         "moto-modem",
+       },
+       .id_table =             id_table,
++      .usb_driver =           &moto_driver,
+       .num_ports =            1,
+ };
+--- a/drivers/usb/serial/oti6858.c
++++ b/drivers/usb/serial/oti6858.c
+@@ -157,6 +157,7 @@ static struct usb_serial_driver oti6858_
+               .name =         "oti6858",
+       },
+       .id_table =             id_table,
++      .usb_driver =           &oti6858_driver,
+       .num_ports =            1,
+       .open =                 oti6858_open,
+       .close =                oti6858_close,
+--- a/drivers/usb/serial/qcaux.c
++++ b/drivers/usb/serial/qcaux.c
+@@ -86,6 +86,7 @@ static struct usb_serial_driver qcaux_de
+               .name =         "qcaux",
+       },
+       .id_table =             id_table,
++      .usb_driver =           &qcaux_driver,
+       .num_ports =            1,
+ };
+--- a/drivers/usb/serial/siemens_mpi.c
++++ b/drivers/usb/serial/siemens_mpi.c
+@@ -42,6 +42,7 @@ static struct usb_serial_driver siemens_
+               .name =         "siemens_mpi",
+       },
+       .id_table =             id_table,
++      .usb_driver =           &siemens_usb_mpi_driver,
+       .num_ports =            1,
+ };
+--- a/drivers/usb/serial/spcp8x5.c
++++ b/drivers/usb/serial/spcp8x5.c
+@@ -649,6 +649,7 @@ static struct usb_serial_driver spcp8x5_
+               .name =         "SPCP8x5",
+       },
+       .id_table               = id_table,
++      .usb_driver             = &spcp8x5_driver,
+       .num_ports              = 1,
+       .open                   = spcp8x5_open,
+       .dtr_rts                = spcp8x5_dtr_rts,
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -1344,11 +1344,15 @@ int usb_serial_register(struct usb_seria
+               return -ENODEV;
+       fixup_generic(driver);
+-      if (driver->usb_driver)
+-              driver->usb_driver->supports_autosuspend = 1;
+       if (!driver->description)
+               driver->description = driver->driver.name;
++      if (!driver->usb_driver) {
++              WARN(1, "Serial driver %s has no usb_driver\n",
++                              driver->description);
++              return -EINVAL;
++      }
++      driver->usb_driver->supports_autosuspend = 1;
+       /* Add this device to our list of devices */
+       mutex_lock(&table_lock);
+--- a/drivers/usb/serial/usb_debug.c
++++ b/drivers/usb/serial/usb_debug.c
+@@ -75,6 +75,7 @@ static struct usb_serial_driver debug_de
+               .name =         "debug",
+       },
+       .id_table =             id_table,
++      .usb_driver =           &debug_driver,
+       .num_ports =            1,
+       .bulk_out_size =        USB_DEBUG_MAX_PACKET_SIZE,
+       .break_ctl =            usb_debug_break_ctl,
diff --git a/queue-2.6.37/usb-serial-updated-support-for-icom-devices.patch b/queue-2.6.37/usb-serial-updated-support-for-icom-devices.patch
new file mode 100644 (file)
index 0000000..cf17ef5
--- /dev/null
@@ -0,0 +1,73 @@
+From a9d61bc49188e32d2ae9cf0f683cde3e1744feef Mon Sep 17 00:00:00 2001
+From: Pieter Maes <maescool@gmail.com>
+Date: Tue, 18 Jan 2011 00:26:16 +0100
+Subject: USB: serial: Updated support for ICOM devices
+
+From: Pieter Maes <maescool@gmail.com>
+
+commit a9d61bc49188e32d2ae9cf0f683cde3e1744feef upstream.
+
+I found the original patch on the db0fhn repeater wiki (couldn't find the email
+of the origial author) I guess it was never commited.
+I updated and added some Icom HAM-radio devices to the ftdi driver.
+Added extra comments to make clear what devices it are.
+
+Signed-off-by: Pieter Maes <maescool@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |   12 +++++++++++-
+ drivers/usb/serial/ftdi_sio_ids.h |   20 ++++++++++++++++----
+ 2 files changed, 27 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -675,7 +675,17 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) },
+-      { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_1_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_OPC_U_UC_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C1_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C2_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2D_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2VT_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2VR_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP4KVT_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP4KVR_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2KVT_PID) },
++      { USB_DEVICE(ICOM_VID, ICOM_ID_RP2KVR_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -569,11 +569,23 @@
+ #define OCT_US101_PID         0x0421  /* OCT US101 USB to RS-232 */
+ /*
+- * Icom ID-1 digital transceiver
++ * Definitions for Icom Inc. devices
+  */
+-
+-#define ICOM_ID1_VID            0x0C26
+-#define ICOM_ID1_PID            0x0004
++#define ICOM_VID              0x0C26 /* Icom vendor ID */
++/* Note: ID-1 is a communications tranceiver for HAM-radio operators */
++#define ICOM_ID_1_PID         0x0004 /* ID-1 USB to RS-232 */
++/* Note: OPC is an Optional cable to connect an Icom Tranceiver */
++#define ICOM_OPC_U_UC_PID     0x0018 /* OPC-478UC, OPC-1122U cloning cable */
++/* Note: ID-RP* devices are Icom Repeater Devices for HAM-radio */
++#define ICOM_ID_RP2C1_PID     0x0009 /* ID-RP2C Asset 1 to RS-232 */
++#define ICOM_ID_RP2C2_PID     0x000A /* ID-RP2C Asset 2 to RS-232 */
++#define ICOM_ID_RP2D_PID      0x000B /* ID-RP2D configuration port*/
++#define ICOM_ID_RP2VT_PID     0x000C /* ID-RP2V Transmit config port */
++#define ICOM_ID_RP2VR_PID     0x000D /* ID-RP2V Receive config port */
++#define ICOM_ID_RP4KVT_PID    0x0010 /* ID-RP4000V Transmit config port */
++#define ICOM_ID_RP4KVR_PID    0x0011 /* ID-RP4000V Receive config port */
++#define ICOM_ID_RP2KVT_PID    0x0012 /* ID-RP2000V Transmit config port */
++#define ICOM_ID_RP2KVR_PID    0x0013 /* ID-RP2000V Receive config port */
+ /*
+  * GN Otometrics (http://www.otometrics.com)
diff --git a/queue-2.6.37/usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch b/queue-2.6.37/usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch
new file mode 100644 (file)
index 0000000..5003b39
--- /dev/null
@@ -0,0 +1,35 @@
+From c25f6b1591b158f7ae3b9132367d0fa6d632e70e Mon Sep 17 00:00:00 2001
+From: Nick Holloway <Nick.Holloway@pyrites.org.uk>
+Date: Wed, 26 Jan 2011 21:47:43 +0000
+Subject: USB: Storage: Add unusual_devs entry for VTech Kidizoom
+
+From: Nick Holloway <Nick.Holloway@pyrites.org.uk>
+
+commit c25f6b1591b158f7ae3b9132367d0fa6d632e70e upstream.
+
+This device suffers from the off-by-one error when reporting the capacity,
+so add entry with US_FL_FIX_CAPACITY.
+
+Signed-off-by: Nick Holloway <Nick.Holloway@pyrites.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1397,6 +1397,13 @@ UNUSUAL_DEV(  0x0f19, 0x0105, 0x0100, 0x
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_IGNORE_RESIDUE ),
++/* Submitted by Nick Holloway */
++UNUSUAL_DEV( 0x0f88, 0x042e, 0x0100, 0x0100,
++              "VTech",
++              "Kidizoom",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_FIX_CAPACITY ),
++
+ /* Reported by Michael Stattmann <michael@stattmann.com> */
+ UNUSUAL_DEV(  0x0fce, 0xd008, 0x0000, 0x0000,
+               "Sony Ericsson",
diff --git a/queue-2.6.37/usb-ti_usb-fix-module-removal.patch b/queue-2.6.37/usb-ti_usb-fix-module-removal.patch
new file mode 100644 (file)
index 0000000..e9f881b
--- /dev/null
@@ -0,0 +1,76 @@
+From b14de3857227cd978f515247853fd15cc2425d3e Mon Sep 17 00:00:00 2001
+From: Ionut Nicu <ionut.nicu@gmail.com>
+Date: Tue, 28 Dec 2010 22:21:08 +0200
+Subject: USB: ti_usb: fix module removal
+
+From: Ionut Nicu <ionut.nicu@gmail.com>
+
+commit b14de3857227cd978f515247853fd15cc2425d3e upstream.
+
+If usb_deregister() is called after usb_serial_deregister() when
+the device is plugged in, the following Oops occurs:
+
+[   95.337377] BUG: unable to handle kernel NULL pointer dereference at 00000010
+[   95.338236] IP: [<c0776b2d>] klist_put+0x12/0x62
+[   95.338356] *pdpt = 000000003001a001 *pde = 0000000000000000
+[   95.338356] Oops: 0000 [#1] SMP
+[   95.340499] last sysfs file: /sys/devices/pci0000:00/0000:00:1d.2/usb8/idVendor
+[   95.340499] Modules linked in: ti_usb_3410_5052(-) usbserial cpufreq_ondemand acpi_cpufreq mperf iptable_nat nf_nat iptable_mangle ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables ipv6 uinput arc4 ecb iwlagn iwlcore mac80211 cfg80211 microcode pcspkr acer_wmi joydev wmi sky2 [last unloaded: scsi_wait_scan]
+[   95.341908]
+[   95.341908] Pid: 1532, comm: modprobe Not tainted 2.6.37-rc7+ #6 Eiger                          /Aspire 5930
+[   95.341908] EIP: 0060:[<c0776b2d>] EFLAGS: 00010246 CPU: 0
+[   95.341908] EIP is at klist_put+0x12/0x62
+[   95.341908] EAX: 00000000 EBX: eedc0c84 ECX: c09c21b4 EDX: 00000001
+[   95.341908] ESI: 00000000 EDI: efaa0c1c EBP: f214fe2c ESP: f214fe1c
+[   95.341908]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
+[   95.341908] Process modprobe (pid: 1532, ti=f214e000 task=efaaf080 task.ti=f214e000)
+[   95.341908] Stack:
+[   95.341908]  f214fe24 eedc0c84 efaaf080 efaa0c1c f214fe34 c0776ba8 f214fe5c c0776c76
+[   95.341908]  c09c21b4 c09c21b4 eedc0c84 efaaf080 00000000 c0634398 eafe2d1c f7b515f0
+[   95.341908]  f214fe6c c0631b5c eafe2d50 eafe2d1c f214fe7c c0631ba2 eafe2d1c eafe2c00
+[   95.341908] Call Trace:
+[   95.341908]  [<c0776ba8>] ? klist_del+0xd/0xf
+[   95.341908]  [<c0776c76>] ? klist_remove+0x48/0x74
+[   95.341908]  [<c0634398>] ? devres_release_all+0x49/0x51
+[   95.341908]  [<c0631b5c>] ? __device_release_driver+0x7b/0xa4
+[   95.341908]  [<c0631ba2>] ? device_release_driver+0x1d/0x28
+[   95.341908]  [<c06317c4>] ? bus_remove_device+0x92/0xa1
+[   95.341908]  [<c062f3d8>] ? device_del+0xf9/0x13e
+[   95.341908]  [<f7b06146>] ? usb_serial_disconnect+0xd9/0x116 [usbserial]
+[   95.341908]  [<c0681e3f>] ? usb_disable_interface+0x32/0x40
+[   95.341908]  [<c0683972>] ? usb_unbind_interface+0x48/0xfd
+[   95.341908]  [<c0631b43>] ? __device_release_driver+0x62/0xa4
+[   95.341908]  [<c06320b9>] ? driver_detach+0x62/0x81
+[   95.341908]  [<c0631a41>] ? bus_remove_driver+0x8f/0xae
+[   95.341908]  [<c063214c>] ? driver_unregister+0x50/0x57
+[   95.341908]  [<c0682f95>] ? usb_deregister+0x77/0x84
+[   95.341908]  [<f7b505b6>] ? ti_exit+0x26/0x28 [ti_usb_3410_5052]
+[   95.341908]  [<c046a307>] ? sys_delete_module+0x181/0x1de
+[   95.341908]  [<c04e2727>] ? path_put+0x1a/0x1d
+[   95.341908]  [<c047f4c5>] ? audit_syscall_entry+0x116/0x138
+[   95.341908]  [<c04094df>] ? sysenter_do_call+0x12/0x28
+[   95.341908] Code: 00 83 7d f0 00 74 09 85 f6 74 05 89 f0 ff 55 f0 8b 43 04 5a 5b 5e 5f 5d c3 55 89 e5 57 56 53 89 c3 83 ec 04 8b 30 83 e6 fe 89 f0 <8b> 7e 10 88 55 f0 e8 47 26 01 00 8a 55 f0 84 d2 74 17 f6 03 01
+[   95.341908] EIP: [<c0776b2d>] klist_put+0x12/0x62 SS:ESP 0068:f214fe1c
+[   95.341908] CR2: 0000000000000010
+[   95.342357] ---[ end trace 8124d00ad871ad18 ]---
+
+Signed-off-by: Ionut Nicu <ionut.nicu@mindbit.ro>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ti_usb_3410_5052.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/ti_usb_3410_5052.c
++++ b/drivers/usb/serial/ti_usb_3410_5052.c
+@@ -369,9 +369,9 @@ failed_1port:
+ static void __exit ti_exit(void)
+ {
++      usb_deregister(&ti_usb_driver);
+       usb_serial_deregister(&ti_1port_device);
+       usb_serial_deregister(&ti_2port_device);
+-      usb_deregister(&ti_usb_driver);
+ }
diff --git a/queue-2.6.37/usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch b/queue-2.6.37/usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch
new file mode 100644 (file)
index 0000000..88ab45c
--- /dev/null
@@ -0,0 +1,39 @@
+From 12f68c480c7155a66bd2a76ab2fef28dd5f93fa2 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 3 Jan 2011 16:47:49 -0500
+Subject: USB: usb-storage: unusual_devs entry for CamSport Evo
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 12f68c480c7155a66bd2a76ab2fef28dd5f93fa2 upstream.
+
+This patch (as1438) adds an unusual_devs entry for the MagicPixel
+FW_Omega2 chip, used in the CamSport Evo camera.  The firmware
+incorrectly reports a vendor-specific bDeviceClass.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: <ttkspam@free.fr>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1044,6 +1044,15 @@ UNUSUAL_DEV(  0x084d, 0x0011, 0x0110, 0x
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_BULK32),
++/* Reported by <ttkspam@free.fr>
++ * The device reports a vendor-specific device class, requiring an
++ * explicit vendor/product match.
++ */
++UNUSUAL_DEV(  0x0851, 0x1542, 0x0002, 0x0002,
++              "MagicPixel",
++              "FW_Omega2",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL, 0),
++
+ /* Andrew Lunn <andrew@lunn.ch>
+  * PanDigital Digital Picture Frame. Does not like ALLOW_MEDIUM_REMOVAL
+  * on LUN 4.
diff --git a/queue-2.6.37/usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch b/queue-2.6.37/usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch
new file mode 100644 (file)
index 0000000..b84db53
--- /dev/null
@@ -0,0 +1,36 @@
+From 3ea3c9b5a8464ec8223125f95e5dddb3bfd02a39 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Tue, 25 Jan 2011 13:07:04 -0500
+Subject: USB: usb-storage: unusual_devs entry for Coby MP3 player
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 3ea3c9b5a8464ec8223125f95e5dddb3bfd02a39 upstream.
+
+This patch (as1444) adds an unusual_devs entry for an MP3 player from
+Coby electronics.  The device has two nasty bugs.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Jasper Mackenzie <scarletpimpernal@hotmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1890,6 +1890,13 @@ UNUSUAL_DEV(  0x1e68, 0x001b, 0x0000, 0x
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ),
++/* Reported by Jasper Mackenzie <scarletpimpernal@hotmail.com> */
++UNUSUAL_DEV( 0x1e74, 0x4621, 0x0000, 0x0000,
++              "Coby Electronics",
++              "MP3 Player",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_BULK_IGNORE_TAG | US_FL_MAX_SECTORS_64 ),
++
+ UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001,
+               "ST",
+               "2A",
diff --git a/queue-2.6.37/usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch b/queue-2.6.37/usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch
new file mode 100644 (file)
index 0000000..48ced3f
--- /dev/null
@@ -0,0 +1,33 @@
+From cae41118f50ef0c431e13159df6d7dd8bbd54004 Mon Sep 17 00:00:00 2001
+From: Richard Schütz <r.schtz@t-online.de>
+Date: Sun, 19 Dec 2010 21:18:38 +0100
+Subject: USB: usb-storage: unusual_devs update for Cypress ATACB
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Richard Schütz <r.schtz@t-online.de>
+
+commit cae41118f50ef0c431e13159df6d7dd8bbd54004 upstream.
+
+New device ID added for unusual Cypress ATACB device.
+
+Signed-off-by: Richard Schütz <r.schtz@t-online.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_cypress.h |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/storage/unusual_cypress.h
++++ b/drivers/usb/storage/unusual_cypress.h
+@@ -31,4 +31,9 @@ UNUSUAL_DEV(  0x04b4, 0x6831, 0x0000, 0x
+               "Cypress ISD-300LP",
+               USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0),
++UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x9999,
++              "Super Top",
++              "USB 2.0  SATA BRIDGE",
++              USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0),
++
+ #endif /* defined(CONFIG_USB_STORAGE_CYPRESS_ATACB) || ... */
diff --git a/queue-2.6.37/usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch b/queue-2.6.37/usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch
new file mode 100644 (file)
index 0000000..e2a77a3
--- /dev/null
@@ -0,0 +1,41 @@
+From 7e1e7bd9dbd469267b6e6de1bf8d71a7d65ce86a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Richard=20Sch=C3=BCtz?= <r.schtz@t-online.de>
+Date: Wed, 22 Dec 2010 14:28:56 +0100
+Subject: USB: usb-storage: unusual_devs update for TrekStor DataStation maxi g.u external hard drive enclosure
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Richard=20Sch=C3=BCtz?= <r.schtz@t-online.de>
+
+commit 7e1e7bd9dbd469267b6e6de1bf8d71a7d65ce86a upstream.
+
+The TrekStor DataStation maxi g.u external hard drive enclosure uses a
+JMicron USB to SATA chip which needs the US_FL_IGNORE_RESIDUE flag to work
+properly.
+
+Signed-off-by: Richard Schütz <r.schtz@t-online.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1872,6 +1872,15 @@ UNUSUAL_DEV( 0x1908, 0x3335, 0x0200, 0x0
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_NO_READ_DISC_INFO ),
++/* Patch by Richard Schütz <r.schtz@t-online.de>
++ * This external hard drive enclosure uses a JMicron chip which
++ * needs the US_FL_IGNORE_RESIDUE flag to work properly. */
++UNUSUAL_DEV(  0x1e68, 0x001b, 0x0000, 0x0000,
++              "TrekStor GmbH & Co. KG",
++              "DataStation maxi g.u",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ),
++
+ UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001,
+               "ST",
+               "2A",