]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.35 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 29 Oct 2010 23:34:14 +0000 (16:34 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 29 Oct 2010 23:34:14 +0000 (16:34 -0700)
27 files changed:
queue-2.6.35/asus-laptop-fix-gps-rfkill.patch [new file with mode: 0644]
queue-2.6.35/drivers-net-wireless-p54-eeprom.c-return-enomem-on-memory-allocation-failure.patch [new file with mode: 0644]
queue-2.6.35/ohci-work-around-for-nvidia-shutdown-problem.patch [new file with mode: 0644]
queue-2.6.35/p54usb-add-five-more-usbids.patch [new file with mode: 0644]
queue-2.6.35/p54usb-fix-off-by-one-on-config_pm.patch [new file with mode: 0644]
queue-2.6.35/series
queue-2.6.35/usb-accept-some-invalid-ep0-maxpacket-values.patch [new file with mode: 0644]
queue-2.6.35/usb-add-pid-for-ftdi-based-opendcc-hardware.patch [new file with mode: 0644]
queue-2.6.35/usb-atmel_usba_udc-force-vbus_pin-at-einval-when-gpio_request-failled.patch [new file with mode: 0644]
queue-2.6.35/usb-change-acm_iad_descriptor-bfunctionprotocol-to-usb_cdc_acm_proto_at_v25ter.patch [new file with mode: 0644]
queue-2.6.35/usb-cp210x-add-renesas-rx-stick-device-id.patch [new file with mode: 0644]
queue-2.6.35/usb-cp210x-add-wago-750-923-service-cable-device-id.patch [new file with mode: 0644]
queue-2.6.35/usb-disable-endpoints-after-unbinding-interfaces-not-before.patch [new file with mode: 0644]
queue-2.6.35/usb-ftdi_sio-add-device-ids-for-sciencescope.patch [new file with mode: 0644]
queue-2.6.35/usb-ftdi_sio-add-pid-for-accesio-products.patch [new file with mode: 0644]
queue-2.6.35/usb-ftdi_sio-new-vid-pids-for-various-papouch-devices.patch [new file with mode: 0644]
queue-2.6.35/usb-ftdi_sio-revert-usb-ftdi_sio-fix-dtr-rts-line-modes.patch [new file with mode: 0644]
queue-2.6.35/usb-gadget-composite-prevent-oops-for-non-standard-control-request.patch [new file with mode: 0644]
queue-2.6.35/usb-gadget-g_ffs-fixed-vendor-and-product-id.patch [new file with mode: 0644]
queue-2.6.35/usb-gadget-g_multi-fixed-vendor-and-product-id.patch [new file with mode: 0644]
queue-2.6.35/usb-musb-blackfin-call-gpio_free-on-error-path-in-musb_platform_init.patch [new file with mode: 0644]
queue-2.6.35/usb-musb-blackfin-call-usb_nop_xceiv_unregister-in-musb_platform_exit.patch [new file with mode: 0644]
queue-2.6.35/usb-musb-fix-kernel-warning-oops-when-unloading-module-in-otg-mode.patch [new file with mode: 0644]
queue-2.6.35/usb-opticon-fix-long-standing-bugs-in-opticon-driver.patch [new file with mode: 0644]
queue-2.6.35/usb-option-add-more-zte-modem-usb-id-s.patch [new file with mode: 0644]
queue-2.6.35/usb-r8a66597-hcd-change-mistake-of-the-outsw-function.patch [new file with mode: 0644]
queue-2.6.35/usb-visor-fix-initialisation-of-ux50-th55-devices.patch [new file with mode: 0644]

diff --git a/queue-2.6.35/asus-laptop-fix-gps-rfkill.patch b/queue-2.6.35/asus-laptop-fix-gps-rfkill.patch
new file mode 100644 (file)
index 0000000..a7e9b7d
--- /dev/null
@@ -0,0 +1,44 @@
+From 23f45c3a76e715217f40ac397c15815c774cad7f Mon Sep 17 00:00:00 2001
+From: Corentin Chary <corentincj@iksaif.net>
+Date: Tue, 24 Aug 2010 09:30:46 +0200
+Subject: asus-laptop: fix gps rfkill
+
+From: Corentin Chary <corentincj@iksaif.net>
+
+commit 23f45c3a76e715217f40ac397c15815c774cad7f upstream.
+
+The GPS rfkill crappy code. The ops_data argument wasn't
+set, and was totally misused. The fix have been tested
+on an Asus R2H.
+
+Signed-off-by: Corentin Chary <corentincj@iksaif.net>
+Signed-off-by: Matthew Garrett <mjg@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/platform/x86/asus-laptop.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/platform/x86/asus-laptop.c
++++ b/drivers/platform/x86/asus-laptop.c
+@@ -1064,9 +1064,9 @@ static ssize_t store_gps(struct device *
+  */
+ static int asus_gps_rfkill_set(void *data, bool blocked)
+ {
+-      acpi_handle handle = data;
++      struct asus_laptop *asus = data;
+-      return asus_gps_switch(handle, !blocked);
++      return asus_gps_switch(asus, !blocked);
+ }
+ static const struct rfkill_ops asus_gps_rfkill_ops = {
+@@ -1093,7 +1093,7 @@ static int asus_rfkill_init(struct asus_
+       asus->gps_rfkill = rfkill_alloc("asus-gps", &asus->platform_device->dev,
+                                       RFKILL_TYPE_GPS,
+-                                      &asus_gps_rfkill_ops, NULL);
++                                      &asus_gps_rfkill_ops, asus);
+       if (!asus->gps_rfkill)
+               return -EINVAL;
diff --git a/queue-2.6.35/drivers-net-wireless-p54-eeprom.c-return-enomem-on-memory-allocation-failure.patch b/queue-2.6.35/drivers-net-wireless-p54-eeprom.c-return-enomem-on-memory-allocation-failure.patch
new file mode 100644 (file)
index 0000000..3b12efd
--- /dev/null
@@ -0,0 +1,53 @@
+From 0d91f22b75347d9503b17a42b6c74d3f7750acd6 Mon Sep 17 00:00:00 2001
+From: Julia Lawall <julia@diku.dk>
+Date: Fri, 15 Oct 2010 15:00:06 +0200
+Subject: drivers/net/wireless/p54/eeprom.c: Return -ENOMEM on memory allocation failure
+
+From: Julia Lawall <julia@diku.dk>
+
+commit 0d91f22b75347d9503b17a42b6c74d3f7750acd6 upstream.
+
+In this code, 0 is returned on memory allocation failure, even though other
+failures return -ENOMEM or other similar values.
+
+A simplified version of the semantic match that finds this problem is as
+follows: (http://coccinelle.lip6.fr/)
+
+// <smpl>
+@@
+expression ret;
+expression x,e1,e2,e3;
+@@
+
+ret = 0
+... when != ret = e1
+*x = \(kmalloc\|kcalloc\|kzalloc\)(...)
+... when != ret = e2
+if (x == NULL) { ... when != ret = e3
+  return ret;
+}
+// </smpl>
+
+Signed-off-by: Julia Lawall <julia@diku.dk>
+Acked-by: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/p54/eeprom.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/p54/eeprom.c
++++ b/drivers/net/wireless/p54/eeprom.c
+@@ -262,8 +262,10 @@ static int p54_generate_channel_lists(st
+       list->max_entries = max_channel_num;
+       list->channels = kzalloc(sizeof(struct p54_channel_entry) *
+                                max_channel_num, GFP_KERNEL);
+-      if (!list->channels)
++      if (!list->channels) {
++              ret = -ENOMEM;
+               goto free;
++      }
+       for (i = 0; i < max_channel_num; i++) {
+               if (i < priv->iq_autocal_len) {
diff --git a/queue-2.6.35/ohci-work-around-for-nvidia-shutdown-problem.patch b/queue-2.6.35/ohci-work-around-for-nvidia-shutdown-problem.patch
new file mode 100644 (file)
index 0000000..35c2429
--- /dev/null
@@ -0,0 +1,169 @@
+From 3df7169e73fc1d71a39cffeacc969f6840cdf52b Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Fri, 10 Sep 2010 16:37:05 -0400
+Subject: OHCI: work around for nVidia shutdown problem
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 3df7169e73fc1d71a39cffeacc969f6840cdf52b upstream.
+
+This patch (as1417) fixes a problem affecting some (or all) nVidia
+chipsets.  When the computer is shut down, the OHCI controllers
+continue to power the USB buses and evidently they drive a Reset
+signal out all their ports.  This prevents attached devices from going
+to low power.  Mouse LEDs stay on, for example, which is disconcerting
+for users and a drain on laptop batteries.
+
+The fix involves leaving each OHCI controller in the OPERATIONAL state
+during system shutdown rather than putting it in the RESET state.
+Although this nominally means the controller is running, in fact it's
+not doing very much since all the schedules are all disabled.  However
+there is ongoing DMA to the Host Controller Communications Area, so
+the patch also disables the bus-master capability of all PCI USB
+controllers after the shutdown routine runs.
+
+The fix is applied only to nVidia-based PCI OHCI controllers, so it
+shouldn't cause problems on systems using other hardware.  As an added
+safety measure, in case the kernel encounters one of these running
+controllers during boot, the patch changes quirk_usb_handoff_ohci()
+(which runs early on during PCI discovery) to reset the controller
+before anything bad can happen.
+
+Reported-by: Pali Rohár <pali.rohar@gmail.com>
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: David Brownell <david-b@pacbell.net>
+Tested-by: Pali Rohár <pali.rohar@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hcd-pci.c    |    4 +++-
+ drivers/usb/host/ohci-hcd.c   |    9 ++++++++-
+ drivers/usb/host/ohci-pci.c   |   18 ++++++++++++++++++
+ drivers/usb/host/ohci.h       |    1 +
+ drivers/usb/host/pci-quirks.c |   18 +++++++++++-------
+ 5 files changed, 41 insertions(+), 9 deletions(-)
+
+--- a/drivers/usb/core/hcd-pci.c
++++ b/drivers/usb/core/hcd-pci.c
+@@ -317,8 +317,10 @@ void usb_hcd_pci_shutdown(struct pci_dev
+       if (!hcd)
+               return;
+-      if (hcd->driver->shutdown)
++      if (hcd->driver->shutdown) {
+               hcd->driver->shutdown(hcd);
++              pci_disable_device(dev);
++      }
+ }
+ EXPORT_SYMBOL_GPL(usb_hcd_pci_shutdown);
+--- a/drivers/usb/host/ohci-hcd.c
++++ b/drivers/usb/host/ohci-hcd.c
+@@ -398,7 +398,14 @@ ohci_shutdown (struct usb_hcd *hcd)
+       ohci = hcd_to_ohci (hcd);
+       ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
+-      ohci_usb_reset (ohci);
++      ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
++
++      /* If the SHUTDOWN quirk is set, don't put the controller in RESET */
++      ohci->hc_control &= (ohci->flags & OHCI_QUIRK_SHUTDOWN ?
++                      OHCI_CTRL_RWC | OHCI_CTRL_HCFS :
++                      OHCI_CTRL_RWC);
++      ohci_writel(ohci, ohci->hc_control, &ohci->regs->control);
++
+       /* flush the writes */
+       (void) ohci_readl (ohci, &ohci->regs->control);
+ }
+--- a/drivers/usb/host/ohci-pci.c
++++ b/drivers/usb/host/ohci-pci.c
+@@ -201,6 +201,20 @@ static int ohci_quirk_amd700(struct usb_
+       return 0;
+ }
++/* nVidia controllers continue to drive Reset signalling on the bus
++ * even after system shutdown, wasting power.  This flag tells the
++ * shutdown routine to leave the controller OPERATIONAL instead of RESET.
++ */
++static int ohci_quirk_nvidia_shutdown(struct usb_hcd *hcd)
++{
++      struct ohci_hcd *ohci = hcd_to_ohci(hcd);
++
++      ohci->flags |= OHCI_QUIRK_SHUTDOWN;
++      ohci_dbg(ohci, "enabled nVidia shutdown quirk\n");
++
++      return 0;
++}
++
+ /*
+  * The hardware normally enables the A-link power management feature, which
+  * lets the system lower the power consumption in idle states.
+@@ -332,6 +346,10 @@ static const struct pci_device_id ohci_p
+               PCI_DEVICE(PCI_VENDOR_ID_ATI, 0x4399),
+               .driver_data = (unsigned long)ohci_quirk_amd700,
+       },
++      {
++              PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID),
++              .driver_data = (unsigned long) ohci_quirk_nvidia_shutdown,
++      },
+       /* FIXME for some of the early AMD 760 southbridges, OHCI
+        * won't work at all.  blacklist them.
+--- a/drivers/usb/host/ohci.h
++++ b/drivers/usb/host/ohci.h
+@@ -403,6 +403,7 @@ struct ohci_hcd {
+ #define       OHCI_QUIRK_HUB_POWER    0x100                   /* distrust firmware power/oc setup */
+ #define       OHCI_QUIRK_AMD_ISO      0x200                   /* ISO transfers*/
+ #define       OHCI_QUIRK_AMD_PREFETCH 0x400                   /* pre-fetch for ISO transfer */
++#define       OHCI_QUIRK_SHUTDOWN     0x800                   /* nVidia power bug */
+       // there are also chip quirks/bugs in init logic
+       struct work_struct      nec_work;       /* Worker for NEC quirk */
+--- a/drivers/usb/host/pci-quirks.c
++++ b/drivers/usb/host/pci-quirks.c
+@@ -169,6 +169,7 @@ static int __devinit mmio_resource_enabl
+ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)
+ {
+       void __iomem *base;
++      u32 control;
+       if (!mmio_resource_enabled(pdev, 0))
+               return;
+@@ -177,10 +178,14 @@ static void __devinit quirk_usb_handoff_
+       if (base == NULL)
+               return;
++      control = readl(base + OHCI_CONTROL);
++
+ /* On PA-RISC, PDC can leave IR set incorrectly; ignore it there. */
+-#ifndef __hppa__
+-{
+-      u32 control = readl(base + OHCI_CONTROL);
++#ifdef __hppa__
++#define       OHCI_CTRL_MASK          (OHCI_CTRL_RWC | OHCI_CTRL_IR)
++#else
++#define       OHCI_CTRL_MASK          OHCI_CTRL_RWC
++
+       if (control & OHCI_CTRL_IR) {
+               int wait_time = 500; /* arbitrary; 5 seconds */
+               writel(OHCI_INTR_OC, base + OHCI_INTRENABLE);
+@@ -194,13 +199,12 @@ static void __devinit quirk_usb_handoff_
+                       dev_warn(&pdev->dev, "OHCI: BIOS handoff failed"
+                                       " (BIOS bug?) %08x\n",
+                                       readl(base + OHCI_CONTROL));
+-
+-              /* reset controller, preserving RWC */
+-              writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL);
+       }
+-}
+ #endif
++      /* reset controller, preserving RWC (and possibly IR) */
++      writel(control & OHCI_CTRL_MASK, base + OHCI_CONTROL);
++
+       /*
+        * disable interrupts
+        */
diff --git a/queue-2.6.35/p54usb-add-five-more-usbids.patch b/queue-2.6.35/p54usb-add-five-more-usbids.patch
new file mode 100644 (file)
index 0000000..c485d1f
--- /dev/null
@@ -0,0 +1,66 @@
+From 1a92795dac419128eb511dce30a6aad672064b88 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@googlemail.com>
+Date: Fri, 1 Oct 2010 22:01:24 +0200
+Subject: p54usb: add five more USBIDs
+
+From: Christian Lamparter <chunkeey@googlemail.com>
+
+commit 1a92795dac419128eb511dce30a6aad672064b88 upstream.
+
+Source:
+http://www.wikidevi.com/wiki/Intersil/p54/usb/windows
+
+Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/p54/p54usb.c |   13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/drivers/net/wireless/p54/p54usb.c
++++ b/drivers/net/wireless/p54/p54usb.c
+@@ -33,8 +33,17 @@ MODULE_ALIAS("prism54usb");
+ MODULE_FIRMWARE("isl3886usb");
+ MODULE_FIRMWARE("isl3887usb");
++/*
++ * Note:
++ *
++ * Always update our wiki's device list (located at:
++ * http://wireless.kernel.org/en/users/Drivers/p54/devices ),
++ * whenever you add a new device.
++ */
++
+ static struct usb_device_id p54u_table[] __devinitdata = {
+       /* Version 1 devices (pci chip + net2280) */
++      {USB_DEVICE(0x045e, 0x00c2)},   /* Microsoft MN-710 */
+       {USB_DEVICE(0x0506, 0x0a11)},   /* 3COM 3CRWE254G72 */
+       {USB_DEVICE(0x06b9, 0x0120)},   /* Thomson SpeedTouch 120g */
+       {USB_DEVICE(0x0707, 0xee06)},   /* SMC 2862W-G */
+@@ -47,7 +56,9 @@ static struct usb_device_id p54u_table[]
+       {USB_DEVICE(0x0846, 0x4220)},   /* Netgear WG111 */
+       {USB_DEVICE(0x09aa, 0x1000)},   /* Spinnaker Proto board */
+       {USB_DEVICE(0x0cde, 0x0006)},   /* Medion 40900, Roper Europe */
++      {USB_DEVICE(0x107b, 0x55f2)},   /* Gateway WGU-210 (Gemtek) */
+       {USB_DEVICE(0x124a, 0x4023)},   /* Shuttle PN15, Airvast WM168g, IOGear GWU513 */
++      {USB_DEVICE(0x1630, 0x0005)},   /* 2Wire 802.11g USB (v1) / Z-Com */
+       {USB_DEVICE(0x1915, 0x2234)},   /* Linksys WUSB54G OEM */
+       {USB_DEVICE(0x1915, 0x2235)},   /* Linksys WUSB54G Portable OEM */
+       {USB_DEVICE(0x2001, 0x3701)},   /* DLink DWL-G120 Spinnaker */
+@@ -60,6 +71,7 @@ static struct usb_device_id p54u_table[]
+       {USB_DEVICE(0x050d, 0x7050)},   /* Belkin F5D7050 ver 1000 */
+       {USB_DEVICE(0x0572, 0x2000)},   /* Cohiba Proto board */
+       {USB_DEVICE(0x0572, 0x2002)},   /* Cohiba Proto board */
++      {USB_DEVICE(0x06a9, 0x000e)},   /* Westell 802.11g USB (A90-211WG-01) */
+       {USB_DEVICE(0x06b9, 0x0121)},   /* Thomson SpeedTouch 121g */
+       {USB_DEVICE(0x0707, 0xee13)},   /* SMC 2862W-G version 2 */
+       {USB_DEVICE(0x083a, 0x4521)},   /* Siemens Gigaset USB Adapter 54 version 2 */
+@@ -79,6 +91,7 @@ static struct usb_device_id p54u_table[]
+       {USB_DEVICE(0x13B1, 0x000C)},   /* Linksys WUSB54AG */
+       {USB_DEVICE(0x1413, 0x5400)},   /* Telsey 802.11g USB2.0 Adapter */
+       {USB_DEVICE(0x1435, 0x0427)},   /* Inventel UR054G */
++      {USB_DEVICE(0x1668, 0x1050)},   /* Actiontec 802UIG-1 */
+       {USB_DEVICE(0x2001, 0x3704)},   /* DLink DWL-G122 rev A2 */
+       {USB_DEVICE(0x413c, 0x5513)},   /* Dell WLA3310 USB Wireless Adapter */
+       {USB_DEVICE(0x413c, 0x8102)},   /* Spinnaker DUT */
diff --git a/queue-2.6.35/p54usb-fix-off-by-one-on-config_pm.patch b/queue-2.6.35/p54usb-fix-off-by-one-on-config_pm.patch
new file mode 100644 (file)
index 0000000..c29acab
--- /dev/null
@@ -0,0 +1,37 @@
+From 11791a6f7534906b4a01ffb54ba0b02ca39398ef Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@googlemail.com>
+Date: Sun, 22 Aug 2010 22:41:33 +0200
+Subject: p54usb: fix off-by-one on !CONFIG_PM
+
+From: Christian Lamparter <chunkeey@googlemail.com>
+
+commit 11791a6f7534906b4a01ffb54ba0b02ca39398ef upstream.
+
+The ISL3887 chip needs a USB reset, whenever the
+usb-frontend module "p54usb" is reloaded.
+
+This patch fixes an off-by-one bug, if the user
+is running a kernel without the CONFIG_PM option
+set and for some reason (e.g.: compat-wireless)
+wants to switch between different p54usb modules.
+
+Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/p54/p54usb.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/p54/p54usb.c
++++ b/drivers/net/wireless/p54/p54usb.c
+@@ -930,8 +930,8 @@ static int __devinit p54u_probe(struct u
+ #ifdef CONFIG_PM
+               /* ISL3887 needs a full reset on resume */
+               udev->reset_resume = 1;
++#endif /* CONFIG_PM */
+               err = p54u_device_reset(dev);
+-#endif
+               priv->hw_type = P54U_3887;
+               dev->extra_tx_headroom += sizeof(struct lm87_tx_hdr);
index a769d02bce5e5d2ff6ab033c74f5cf2cb35ea6f0..b675139afa435ee353a496b7d6a98411c327c686 100644 (file)
@@ -24,3 +24,29 @@ kvm-x86-report-svm-bit-to-userspace-only-when-supported.patch
 kvm-svm-restore-correct-registers-after-sel_cr0-intercept-emulation.patch
 usb-mct_u232-fix-broken-close.patch
 pipe-fix-failure-to-return-error-code-on-confirm.patch
+p54usb-fix-off-by-one-on-config_pm.patch
+p54usb-add-five-more-usbids.patch
+drivers-net-wireless-p54-eeprom.c-return-enomem-on-memory-allocation-failure.patch
+usb-gadget-composite-prevent-oops-for-non-standard-control-request.patch
+usb-gadget-g_ffs-fixed-vendor-and-product-id.patch
+usb-gadget-g_multi-fixed-vendor-and-product-id.patch
+usb-ftdi_sio-add-pid-for-accesio-products.patch
+usb-ftdi_sio-revert-usb-ftdi_sio-fix-dtr-rts-line-modes.patch
+usb-add-pid-for-ftdi-based-opendcc-hardware.patch
+usb-ftdi_sio-new-vid-pids-for-various-papouch-devices.patch
+usb-ftdi_sio-add-device-ids-for-sciencescope.patch
+usb-musb-fix-kernel-warning-oops-when-unloading-module-in-otg-mode.patch
+usb-musb-blackfin-call-usb_nop_xceiv_unregister-in-musb_platform_exit.patch
+usb-musb-blackfin-call-gpio_free-on-error-path-in-musb_platform_init.patch
+usb-change-acm_iad_descriptor-bfunctionprotocol-to-usb_cdc_acm_proto_at_v25ter.patch
+usb-option-add-more-zte-modem-usb-id-s.patch
+usb-cp210x-add-renesas-rx-stick-device-id.patch
+usb-cp210x-add-wago-750-923-service-cable-device-id.patch
+usb-atmel_usba_udc-force-vbus_pin-at-einval-when-gpio_request-failled.patch
+usb-disable-endpoints-after-unbinding-interfaces-not-before.patch
+usb-visor-fix-initialisation-of-ux50-th55-devices.patch
+usb-opticon-fix-long-standing-bugs-in-opticon-driver.patch
+usb-r8a66597-hcd-change-mistake-of-the-outsw-function.patch
+usb-accept-some-invalid-ep0-maxpacket-values.patch
+ohci-work-around-for-nvidia-shutdown-problem.patch
+asus-laptop-fix-gps-rfkill.patch
diff --git a/queue-2.6.35/usb-accept-some-invalid-ep0-maxpacket-values.patch b/queue-2.6.35/usb-accept-some-invalid-ep0-maxpacket-values.patch
new file mode 100644 (file)
index 0000000..f6fe580
--- /dev/null
@@ -0,0 +1,49 @@
+From 56626a72a47bf3e50875d960d6b5f17b9bee0ab2 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Thu, 14 Oct 2010 15:25:21 -0400
+Subject: USB: accept some invalid ep0-maxpacket values
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 56626a72a47bf3e50875d960d6b5f17b9bee0ab2 upstream.
+
+A few devices (such as the RCA VR5220 voice recorder) are so
+non-compliant with the USB spec that they have invalid maxpacket sizes
+for endpoint 0.  Nevertheless, as long as we can safely use them, we
+may as well do so.
+
+This patch (as1432) softens our acceptance criterion by allowing
+high-speed devices to have ep0-maxpacket sizes other than 64.  A
+warning is printed in the system log when this happens, and the
+existing error message is clarified.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: James <bjlockie@lockie.ca>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hub.c |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -2859,13 +2859,16 @@ hub_port_init (struct usb_hub *hub, stru
+       else
+               i = udev->descriptor.bMaxPacketSize0;
+       if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) {
+-              if (udev->speed != USB_SPEED_FULL ||
++              if (udev->speed == USB_SPEED_LOW ||
+                               !(i == 8 || i == 16 || i == 32 || i == 64)) {
+-                      dev_err(&udev->dev, "ep0 maxpacket = %d\n", i);
++                      dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i);
+                       retval = -EMSGSIZE;
+                       goto fail;
+               }
+-              dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
++              if (udev->speed == USB_SPEED_FULL)
++                      dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
++              else
++                      dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i);
+               udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i);
+               usb_ep0_reinit(udev);
+       }
diff --git a/queue-2.6.35/usb-add-pid-for-ftdi-based-opendcc-hardware.patch b/queue-2.6.35/usb-add-pid-for-ftdi-based-opendcc-hardware.patch
new file mode 100644 (file)
index 0000000..55ee7d9
--- /dev/null
@@ -0,0 +1,41 @@
+From 99c1e4f89d1033444ce4d0c064bd2826e81c3775 Mon Sep 17 00:00:00 2001
+From: Rainer Keller <mail@rainerkeller.de>
+Date: Tue, 28 Sep 2010 12:27:43 +0200
+Subject: USB: add PID for FTDI based OpenDCC hardware
+
+From: Rainer Keller <mail@rainerkeller.de>
+
+commit 99c1e4f89d1033444ce4d0c064bd2826e81c3775 upstream.
+
+The OpenDCC project is developing a new hardware. This patch adds its
+PID to the list of known FTDI devices. The PID can be found at
+http://www.opendcc.de/elektronik/usb/opendcc_usb.html
+
+Signed-off-by: Rainer Keller <mail@rainerkeller.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    1 +
+ drivers/usb/serial/ftdi_sio_ids.h |    1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -177,6 +177,7 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_SNIFFER_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_THROTTLE_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GATEWAY_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GBM_PID) },
+       { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
+       { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -61,6 +61,7 @@
+ #define FTDI_OPENDCC_SNIFFER_PID      0xBFD9
+ #define FTDI_OPENDCC_THROTTLE_PID     0xBFDA
+ #define FTDI_OPENDCC_GATEWAY_PID      0xBFDB
++#define FTDI_OPENDCC_GBM_PID  0xBFDC
+ /*
+  * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
diff --git a/queue-2.6.35/usb-atmel_usba_udc-force-vbus_pin-at-einval-when-gpio_request-failled.patch b/queue-2.6.35/usb-atmel_usba_udc-force-vbus_pin-at-einval-when-gpio_request-failled.patch
new file mode 100644 (file)
index 0000000..7da4aac
--- /dev/null
@@ -0,0 +1,31 @@
+From 969affff54702785330de553b790372e261e93f9 Mon Sep 17 00:00:00 2001
+From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Date: Mon, 20 Sep 2010 18:31:07 +0200
+Subject: USB: atmel_usba_udc: force vbus_pin at -EINVAL when gpio_request failled
+
+From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+
+commit 969affff54702785330de553b790372e261e93f9 upstream.
+
+to ensure gpio_is_valid return false
+
+Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
+Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/atmel_usba_udc.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/gadget/atmel_usba_udc.c
++++ b/drivers/usb/gadget/atmel_usba_udc.c
+@@ -2014,6 +2014,9 @@ static int __init usba_udc_probe(struct
+                       } else {
+                               disable_irq(gpio_to_irq(udc->vbus_pin));
+                       }
++              } else {
++                      /* gpio_request fail so use -EINVAL for gpio_is_valid */
++                      ubc->vbus_pin = -EINVAL;
+               }
+       }
diff --git a/queue-2.6.35/usb-change-acm_iad_descriptor-bfunctionprotocol-to-usb_cdc_acm_proto_at_v25ter.patch b/queue-2.6.35/usb-change-acm_iad_descriptor-bfunctionprotocol-to-usb_cdc_acm_proto_at_v25ter.patch
new file mode 100644 (file)
index 0000000..0c43aeb
--- /dev/null
@@ -0,0 +1,35 @@
+From 5c8db070b4480c43394680d9dfd2ddb06b97d2ae Mon Sep 17 00:00:00 2001
+From: Praveena Nadahally <praveen.nadahally@stericsson.com>
+Date: Fri, 10 Sep 2010 23:05:03 +0530
+Subject: USB: Change acm_iad_descriptor bFunctionProtocol to USB_CDC_ACM_PROTO_AT_V25TER
+
+From: Praveena Nadahally <praveen.nadahally@stericsson.com>
+
+commit 5c8db070b4480c43394680d9dfd2ddb06b97d2ae upstream.
+
+The protocol code is set 00 in IAD and it's set to 01 in ACM control
+interface descriptor in f_acm.c file. Due to this, windows is unable to
+install the modem(ACM) driver based on class-subclass-protocol matching.
+
+This patch corrects the protocol code in ACM IAD to the same as in
+acm_control_interface_desc protocol code.
+
+Acked-by: Linus Walleij <linus.walleij@stericsson.com>
+Signed-off-by: Praveena Nadahally <praveen.nadahally@stericsson.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/f_acm.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/gadget/f_acm.c
++++ b/drivers/usb/gadget/f_acm.c
+@@ -111,7 +111,7 @@ acm_iad_descriptor = {
+       .bInterfaceCount =      2,      // control + data
+       .bFunctionClass =       USB_CLASS_COMM,
+       .bFunctionSubClass =    USB_CDC_SUBCLASS_ACM,
+-      .bFunctionProtocol =    USB_CDC_PROTO_NONE,
++      .bFunctionProtocol =    USB_CDC_ACM_PROTO_AT_V25TER,
+       /* .iFunction =         DYNAMIC */
+ };
diff --git a/queue-2.6.35/usb-cp210x-add-renesas-rx-stick-device-id.patch b/queue-2.6.35/usb-cp210x-add-renesas-rx-stick-device-id.patch
new file mode 100644 (file)
index 0000000..8aefb94
--- /dev/null
@@ -0,0 +1,47 @@
+From 2f1136d1d08a63dcdbcd462621373f30d8dfe590 Mon Sep 17 00:00:00 2001
+From: DJ Delorie <dj@delorie.com>
+Date: Fri, 17 Sep 2010 11:09:06 -0400
+Subject: USB: cp210x: Add Renesas RX-Stick device ID
+
+From: DJ Delorie <dj@delorie.com>
+
+commit 2f1136d1d08a63dcdbcd462621373f30d8dfe590 upstream.
+
+RX610 development board by Renesas
+
+Bus 001 Device 024: ID 045b:0053 Hitachi, Ltd
+Device Descriptor:
+  bLength                18
+  bDescriptorType         1
+  bcdUSB               1.10
+  bDeviceClass            0 (Defined at Interface level)
+  bDeviceSubClass         0
+  bDeviceProtocol         0
+  bMaxPacketSize0        64
+  idVendor           0x045b Hitachi, Ltd
+  idProduct          0x0053
+  bcdDevice            1.00
+  iManufacturer           1 Silicon Labs
+  iProduct                2 RX-Stick
+  iSerial                 3 0001
+  . . .
+
+http://am.renesas.com/rx610stick
+
+Signed-off-by: DJ Delorie <dj@delorie.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp210x.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -54,6 +54,7 @@ static int cp210x_carrier_raised(struct
+ static int debug;
+ static const struct usb_device_id id_table[] = {
++      { USB_DEVICE(0x045B, 0x0053) }, /* Renesas RX610 RX-Stick */
+       { USB_DEVICE(0x0471, 0x066A) }, /* AKTAKOM ACE-1001 cable */
+       { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */
+       { USB_DEVICE(0x0745, 0x1000) }, /* CipherLab USB CCD Barcode Scanner 1000 */
diff --git a/queue-2.6.35/usb-cp210x-add-wago-750-923-service-cable-device-id.patch b/queue-2.6.35/usb-cp210x-add-wago-750-923-service-cable-device-id.patch
new file mode 100644 (file)
index 0000000..82c3756
--- /dev/null
@@ -0,0 +1,46 @@
+From 93ad03d60b5b18897030038234aa2ebae8234748 Mon Sep 17 00:00:00 2001
+From: Anders Larsen <al@alarsen.net>
+Date: Wed, 6 Oct 2010 23:46:25 +0200
+Subject: USB: cp210x: Add WAGO 750-923 Service Cable device ID
+
+From: Anders Larsen <al@alarsen.net>
+
+commit 93ad03d60b5b18897030038234aa2ebae8234748 upstream.
+
+The WAGO 750-923 USB Service Cable is used for configuration and firmware
+updates of several industrial automation products from WAGO Kontakttechnik GmbH.
+
+Bus 004 Device 002: ID 1be3:07a6
+Device Descriptor:
+  bLength                18
+  bDescriptorType         1
+  bcdUSB               1.10
+  bDeviceClass            0 (Defined at Interface level)
+  bDeviceSubClass         0
+  bDeviceProtocol         0
+  bMaxPacketSize0        64
+  idVendor           0x1be3
+  idProduct          0x07a6
+  bcdDevice            1.00
+  iManufacturer           1 Silicon Labs
+  iProduct                2 WAGO USB Service Cable
+  iSerial                 3 1277796751
+  . . .
+
+Signed-off-by: Anders Larsen <al@alarsen.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cp210x.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -132,6 +132,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */
+       { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
+       { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
++      { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
+       { USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
+       { } /* Terminating Entry */
+ };
diff --git a/queue-2.6.35/usb-disable-endpoints-after-unbinding-interfaces-not-before.patch b/queue-2.6.35/usb-disable-endpoints-after-unbinding-interfaces-not-before.patch
new file mode 100644 (file)
index 0000000..5266703
--- /dev/null
@@ -0,0 +1,69 @@
+From 80f0cf3947889014d3a3dc0ad60fb87cfda4b12a Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Thu, 30 Sep 2010 15:16:23 -0400
+Subject: USB: disable endpoints after unbinding interfaces, not before
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 80f0cf3947889014d3a3dc0ad60fb87cfda4b12a upstream.
+
+This patch (as1430) fixes a bug in usbcore.  When a device
+configuration change occurs or a device is removed, the endpoints for
+the old config should be completely disabled.  However it turns out
+they aren't; this is because usb_unbind_interface() calls
+usb_enable_interface() or usb_set_interface() to put interfaces back
+in altsetting 0, which re-enables the interfaces' endpoints.
+
+As a result, when a device goes through a config change or is
+unconfigured, the ep_in[] and ep_out[] arrays may be left holding old
+pointers to usb_host_endpoint structures.  If the device is
+deauthorized these structures get freed, and the stale pointers cause
+errors when the the device is eventually unplugged.
+
+The solution is to disable the endpoints after unbinding the
+interfaces instead of before.  This isn't as large a change as it
+sounds, since usb_unbind_interface() disables all the interface's
+endpoints anyway before calling the driver's disconnect routine,
+unless the driver claims to support "soft" unbind.
+
+This fixes Bugzilla #19192.  Thanks to "Tom" Lei Ming for diagnosing
+the underlying cause of the problem.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Carsten Sommer <carsten_sommer@ymail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/message.c |   14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+--- a/drivers/usb/core/message.c
++++ b/drivers/usb/core/message.c
+@@ -1140,13 +1140,6 @@ void usb_disable_device(struct usb_devic
+ {
+       int i;
+-      dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
+-              skip_ep0 ? "non-ep0" : "all");
+-      for (i = skip_ep0; i < 16; ++i) {
+-              usb_disable_endpoint(dev, i, true);
+-              usb_disable_endpoint(dev, i + USB_DIR_IN, true);
+-      }
+-
+       /* getting rid of interfaces will disconnect
+        * any drivers bound to them (a key side effect)
+        */
+@@ -1176,6 +1169,13 @@ void usb_disable_device(struct usb_devic
+               if (dev->state == USB_STATE_CONFIGURED)
+                       usb_set_device_state(dev, USB_STATE_ADDRESS);
+       }
++
++      dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
++              skip_ep0 ? "non-ep0" : "all");
++      for (i = skip_ep0; i < 16; ++i) {
++              usb_disable_endpoint(dev, i, true);
++              usb_disable_endpoint(dev, i + USB_DIR_IN, true);
++      }
+ }
+ /**
diff --git a/queue-2.6.35/usb-ftdi_sio-add-device-ids-for-sciencescope.patch b/queue-2.6.35/usb-ftdi_sio-add-device-ids-for-sciencescope.patch
new file mode 100644 (file)
index 0000000..28ad04b
--- /dev/null
@@ -0,0 +1,43 @@
+From 0f266abd70cd83571eca019f764b5f1992da7361 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Tue, 19 Oct 2010 09:05:43 -0700
+Subject: USB: ftdi_sio: add device ids for ScienceScope
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 0f266abd70cd83571eca019f764b5f1992da7361 upstream.
+
+This adds the requested device ids to the ftdi_sio driver.
+
+Reported-by: Ewan Bingham <ewan@auc.co.uk>
+Cc: Kuba Ober <kuba@mareimbrium.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    3 +++
+ drivers/usb/serial/ftdi_sio_ids.h |    5 +++++
+ 2 files changed, 8 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -791,6 +791,9 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MAXI_WING_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MEDIA_WING_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_WING_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LOGBOOKML_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LS_LOGBOOK_PID) },
++      { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_HS_LOGBOOK_PID) },
+       { },                                    /* Optional parameter entry */
+       { }                                     /* Terminating entry */
+ };
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1095,3 +1095,8 @@
+  * Accesio USB Data Acquisition products (http://www.accesio.com/)
+  */
+ #define ACCESIO_COM4SM_PID    0xD578
++
++/* www.sciencescope.co.uk educational dataloggers */
++#define FTDI_SCIENCESCOPE_LOGBOOKML_PID               0xFF18
++#define FTDI_SCIENCESCOPE_LS_LOGBOOK_PID      0xFF1C
++#define FTDI_SCIENCESCOPE_HS_LOGBOOK_PID      0xFF1D
diff --git a/queue-2.6.35/usb-ftdi_sio-add-pid-for-accesio-products.patch b/queue-2.6.35/usb-ftdi_sio-add-pid-for-accesio-products.patch
new file mode 100644 (file)
index 0000000..7e7de37
--- /dev/null
@@ -0,0 +1,42 @@
+From 3126d8236ca6f68eb8292c6af22c2e59afbeef24 Mon Sep 17 00:00:00 2001
+From: Rich Mattes <richmattes@gmail.com>
+Date: Tue, 14 Sep 2010 00:35:40 -0400
+Subject: USB: ftdi_sio: Add PID for accesio products
+
+From: Rich Mattes <richmattes@gmail.com>
+
+commit 3126d8236ca6f68eb8292c6af22c2e59afbeef24 upstream.
+
+Adds support for Accesio USB to Serial adapters, which are built around
+FTDI FT232 UARTs.  Tested with the Accesio USB-COM-4SM.
+
+Signed-off-by: Rich Mattes <richmattes@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
+@@ -751,6 +751,7 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SH4_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(FTDI_VID, SEGWAY_RMP200_PID) },
++      { USB_DEVICE(FTDI_VID, ACCESIO_COM4SM_PID) },
+       { USB_DEVICE(IONICS_VID, IONICS_PLUGCOMPUTER_PID),
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_24_MASTER_WING_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1063,3 +1063,9 @@
+  * Submitted by John G. Rogers
+  */
+ #define SEGWAY_RMP200_PID     0xe729
++
++
++/*
++ * Accesio USB Data Acquisition products (http://www.accesio.com/)
++ */
++#define ACCESIO_COM4SM_PID    0xD578
diff --git a/queue-2.6.35/usb-ftdi_sio-new-vid-pids-for-various-papouch-devices.patch b/queue-2.6.35/usb-ftdi_sio-new-vid-pids-for-various-papouch-devices.patch
new file mode 100644 (file)
index 0000000..673c66f
--- /dev/null
@@ -0,0 +1,109 @@
+From 59c6ccd9f9aecfa59c99ceba6d4d34b180547a05 Mon Sep 17 00:00:00 2001
+From: Daniel Suchy <danny@danysek.cz>
+Date: Tue, 12 Oct 2010 15:44:24 +0200
+Subject: USB: ftdi_sio: new VID/PIDs for various Papouch devices
+
+From: Daniel Suchy <danny@danysek.cz>
+
+commit 59c6ccd9f9aecfa59c99ceba6d4d34b180547a05 upstream.
+
+This patch for FTDI USB serial driver ads new VID/PIDs used on various
+devices manufactured by Papouch (http://www.papouch.com). These devices
+have their own VID/PID, although they're using standard FTDI chip. In
+ftdi_sio.c, I also made small cleanup to have declarations for all
+Papouch devices together.
+
+Signed-off-by: Daniel Suchy <danny@danysek.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |   30 +++++++++++++++++++++++++++++-
+ drivers/usb/serial/ftdi_sio_ids.h |   27 ++++++++++++++++++++++++++-
+ 2 files changed, 55 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -675,7 +675,6 @@ static struct usb_device_id id_table_com
+       { 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(PAPOUCH_VID, PAPOUCH_TMU_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) },
+@@ -716,8 +715,37 @@ static struct usb_device_id id_table_com
+               .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+       { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
+       { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
++
++      /* Papouch devices based on FTDI chip */
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AP485_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB422_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485_2_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AP485_2_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB422_2_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485S_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485C_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_LEC_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB232_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_IRAMP_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_DRAK5_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO8x8_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO2x2_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO10x1_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO30x3_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO60x3_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO2x16_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO3x32_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_DRAK6_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_UPSUSB_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_MU_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SIMUKEY_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AD4USB_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_GMUX_PID) },
++      { USB_DEVICE(PAPOUCH_VID, PAPOUCH_GMSR_PID) },
++
+       { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
+       { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1023,9 +1023,34 @@
+  */
+ #define PAPOUCH_VID                   0x5050  /* Vendor ID */
++#define PAPOUCH_SB485_PID             0x0100  /* Papouch SB485 USB-485/422 Converter */
++#define PAPOUCH_AP485_PID             0x0101  /* AP485 USB-RS485 Converter */
++#define PAPOUCH_SB422_PID             0x0102  /* Papouch SB422 USB-RS422 Converter  */
++#define PAPOUCH_SB485_2_PID           0x0103  /* Papouch SB485 USB-485/422 Converter */
++#define PAPOUCH_AP485_2_PID           0x0104  /* AP485 USB-RS485 Converter */
++#define PAPOUCH_SB422_2_PID           0x0105  /* Papouch SB422 USB-RS422 Converter  */
++#define PAPOUCH_SB485S_PID            0x0106  /* Papouch SB485S USB-485/422 Converter */
++#define PAPOUCH_SB485C_PID            0x0107  /* Papouch SB485C USB-485/422 Converter */
++#define PAPOUCH_LEC_PID                       0x0300  /* LEC USB Converter */
++#define PAPOUCH_SB232_PID             0x0301  /* Papouch SB232 USB-RS232 Converter */
+ #define PAPOUCH_TMU_PID                       0x0400  /* TMU USB Thermometer */
+-#define PAPOUCH_QUIDO4x4_PID          0x0900  /* Quido 4/4 Module */
++#define PAPOUCH_IRAMP_PID             0x0500  /* Papouch IRAmp Duplex */
++#define PAPOUCH_DRAK5_PID             0x0700  /* Papouch DRAK5 */
++#define PAPOUCH_QUIDO8x8_PID          0x0800  /* Papouch Quido 8/8 Module */
++#define PAPOUCH_QUIDO4x4_PID          0x0900  /* Papouch Quido 4/4 Module */
++#define PAPOUCH_QUIDO2x2_PID          0x0a00  /* Papouch Quido 2/2 Module */
++#define PAPOUCH_QUIDO10x1_PID         0x0b00  /* Papouch Quido 10/1 Module */
++#define PAPOUCH_QUIDO30x3_PID         0x0c00  /* Papouch Quido 30/3 Module */
++#define PAPOUCH_QUIDO60x3_PID         0x0d00  /* Papouch Quido 60(100)/3 Module */
++#define PAPOUCH_QUIDO2x16_PID         0x0e00  /* Papouch Quido 2/16 Module */
++#define PAPOUCH_QUIDO3x32_PID         0x0f00  /* Papouch Quido 3/32 Module */
++#define PAPOUCH_DRAK6_PID             0x1000  /* Papouch DRAK6 */
++#define PAPOUCH_UPSUSB_PID            0x8000  /* Papouch UPS-USB adapter */
++#define PAPOUCH_MU_PID                        0x8001  /* MU controller */
++#define PAPOUCH_SIMUKEY_PID           0x8002  /* Papouch SimuKey */
+ #define PAPOUCH_AD4USB_PID            0x8003  /* AD4USB Measurement Module */
++#define PAPOUCH_GMUX_PID              0x8004  /* Papouch GOLIATH MUX */
++#define PAPOUCH_GMSR_PID              0x8005  /* Papouch GOLIATH MSR */
+ /*
+  * Marvell SheevaPlug
diff --git a/queue-2.6.35/usb-ftdi_sio-revert-usb-ftdi_sio-fix-dtr-rts-line-modes.patch b/queue-2.6.35/usb-ftdi_sio-revert-usb-ftdi_sio-fix-dtr-rts-line-modes.patch
new file mode 100644 (file)
index 0000000..0329f79
--- /dev/null
@@ -0,0 +1,54 @@
+From 677aeafe19e88c282af74564048243ccabb1c590 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <jhovold@gmail.com>
+Date: Sun, 12 Sep 2010 16:31:45 +0200
+Subject: USB: ftdi_sio: revert "USB: ftdi_sio: fix DTR/RTS line modes"
+
+From: Johan Hovold <jhovold@gmail.com>
+
+commit 677aeafe19e88c282af74564048243ccabb1c590 upstream.
+
+This reverts commit 6a1a82df91fa0eb1cc76069a9efe5714d087eccd.
+
+RTS and DTR should not be modified based on CRTSCTS when calling
+set_termios.
+
+Modem control lines are raised at port open by the tty layer and should stay
+raised regardless of whether hardware flow control is enabled or not.
+
+This is in conformance with the way serial ports work today and many
+applications depend on this behaviour to be able to talk to hardware
+implementing hardware flow control (without the applications actually using
+it).
+
+Hardware which expects different behaviour on these lines can always
+use TIOCMSET/TIOCMBI[SC] after port open to change them.
+
+Reported-by: Daniel Mack <daniel@caiaq.de>
+Reported-by: Dave Mielke <dave@mielke.cc>
+Signed-off-by: Johan Hovold <jhovold@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c |    4 ----
+ 1 file changed, 4 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -2029,8 +2029,6 @@ static void ftdi_set_termios(struct tty_
+                               "urb failed to set to rts/cts flow control\n");
+               }
+-              /* raise DTR/RTS */
+-              set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
+       } else {
+               /*
+                * Xon/Xoff code
+@@ -2078,8 +2076,6 @@ static void ftdi_set_termios(struct tty_
+                       }
+               }
+-              /* lower DTR/RTS */
+-              clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
+       }
+       return;
+ }
diff --git a/queue-2.6.35/usb-gadget-composite-prevent-oops-for-non-standard-control-request.patch b/queue-2.6.35/usb-gadget-composite-prevent-oops-for-non-standard-control-request.patch
new file mode 100644 (file)
index 0000000..fb07f1d
--- /dev/null
@@ -0,0 +1,59 @@
+From 5c836e4d583701a5eecb288b5f131da39115f5ec Mon Sep 17 00:00:00 2001
+From: Roger Quadros <roger.quadros@nokia.com>
+Date: Wed, 8 Sep 2010 13:48:44 +0300
+Subject: usb gadget: composite: prevent OOPS for non-standard control request
+
+From: Roger Quadros <roger.quadros@nokia.com>
+
+commit 5c836e4d583701a5eecb288b5f131da39115f5ec upstream.
+
+The composite gadget will OOPS if the host sends a control request
+targetted to an interface of an un-configured composite device. This patch
+prevents this.
+
+The OOPS was observed during WHQL USB CV tests. With this patch, the device
+STALLs as per requirement.
+
+Failing test case: From host do the following. I used libusb-1.0
+
+1) Set configuration to zero.
+       libusb_control_transfer(device_handle,
+               0, /* standard OUT */
+               0x9, /* setConfiguration */
+               0, 0, NULL, 0, 0);
+
+2) Query current configuratioan.
+       libusb_control_transfer(device_handle,
+               0x80, /* standard IN*/
+               0x8, /* getConfiguration */
+               0, 0, data, 1, 0);
+
+3) Send the non-standard ctrl transfer targetted to interface
+       libusb_control_transfer(device_handle,
+               0x81, /* standard IN to interface*/
+               0x6, /* getDescriptor */
+               0x2300, 0, data, 0x12, 0);
+
+Signed-off-by: Roger Quadros <roger.quadros@nokia.com>
+Cc: David Brownell <dbrownell@users.sourceforge.net>
+Cc: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Cc: Robert Lukassen <robert.lukassen@tomtom.com>
+Cc: Kyungmin Park <kyungmin.park@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/composite.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/gadget/composite.c
++++ b/drivers/usb/gadget/composite.c
+@@ -838,7 +838,8 @@ unknown:
+                */
+               switch (ctrl->bRequestType & USB_RECIP_MASK) {
+               case USB_RECIP_INTERFACE:
+-                      f = cdev->config->interface[intf];
++                      if (cdev->config)
++                              f = cdev->config->interface[intf];
+                       break;
+               case USB_RECIP_ENDPOINT:
diff --git a/queue-2.6.35/usb-gadget-g_ffs-fixed-vendor-and-product-id.patch b/queue-2.6.35/usb-gadget-g_ffs-fixed-vendor-and-product-id.patch
new file mode 100644 (file)
index 0000000..b0f5770
--- /dev/null
@@ -0,0 +1,36 @@
+From ba0534be935d7b24e5fdd6f82c443ee75abc9149 Mon Sep 17 00:00:00 2001
+From: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Date: Thu, 12 Aug 2010 17:43:45 +0200
+Subject: USB: gadget: g_ffs: fixed vendor and product ID
+
+From: Michal Nazarewicz <m.nazarewicz@samsung.com>
+
+commit ba0534be935d7b24e5fdd6f82c443ee75abc9149 upstream.
+
+This patch fixes the vendor and product ID the gadget uses
+by replacing the temporary IDs that were used during
+development (which should never get into mainline) with
+proper IDs.
+
+Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/g_ffs.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/gadget/g_ffs.c
++++ b/drivers/usb/gadget/g_ffs.c
+@@ -52,8 +52,8 @@ MODULE_AUTHOR("Michal Nazarewicz");
+ MODULE_LICENSE("GPL");
+-static unsigned short gfs_vendor_id    = 0x0525;      /* XXX NetChip */
+-static unsigned short gfs_product_id   = 0xa4ac;      /* XXX */
++static unsigned short gfs_vendor_id    = 0x1d6b;      /* Linux Foundation */
++static unsigned short gfs_product_id   = 0x0105;      /* FunctionFS Gadget */
+ static struct usb_device_descriptor gfs_dev_desc = {
+       .bLength                = sizeof gfs_dev_desc,
diff --git a/queue-2.6.35/usb-gadget-g_multi-fixed-vendor-and-product-id.patch b/queue-2.6.35/usb-gadget-g_multi-fixed-vendor-and-product-id.patch
new file mode 100644 (file)
index 0000000..3db0907
--- /dev/null
@@ -0,0 +1,35 @@
+From 1c6529e92b7682573837e9c9eb7b5ba7a8216a88 Mon Sep 17 00:00:00 2001
+From: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Date: Thu, 12 Aug 2010 17:43:44 +0200
+Subject: USB: gadget: g_multi: fixed vendor and product ID
+
+From: Michal Nazarewicz <m.nazarewicz@samsung.com>
+
+commit 1c6529e92b7682573837e9c9eb7b5ba7a8216a88 upstream.
+
+This patch fixes the vendor and product ID the gadget uses
+by replacing the temporary IDs that were used during
+development (which should never get into mainline) with
+proper IDs.
+
+Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
+Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/multi.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/gadget/multi.c
++++ b/drivers/usb/gadget/multi.c
+@@ -39,8 +39,8 @@
+ /*-------------------------------------------------------------------------*/
+-#define MULTI_VENDOR_NUM      0x0525  /* XXX NetChip */
+-#define MULTI_PRODUCT_NUM     0xa4ab  /* XXX */
++#define MULTI_VENDOR_NUM      0x1d6b  /* Linux Foundation */
++#define MULTI_PRODUCT_NUM     0x0104  /* Multifunction Composite Gadget */
+ /*-------------------------------------------------------------------------*/
diff --git a/queue-2.6.35/usb-musb-blackfin-call-gpio_free-on-error-path-in-musb_platform_init.patch b/queue-2.6.35/usb-musb-blackfin-call-gpio_free-on-error-path-in-musb_platform_init.patch
new file mode 100644 (file)
index 0000000..fa5157f
--- /dev/null
@@ -0,0 +1,35 @@
+From 00be545e49d83485d49a598d3b7e090088934be8 Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Wed, 29 Sep 2010 09:54:31 +0300
+Subject: usb: musb: blackfin: call gpio_free() on error path in musb_platform_init()
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+commit 00be545e49d83485d49a598d3b7e090088934be8 upstream.
+
+Blackfin's musb_platform_init() needs to call gpio_free() for error cleanup iff
+otg_get_transceiver() call returns NULL.
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Acked-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/blackfin.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/blackfin.c
++++ b/drivers/usb/musb/blackfin.c
+@@ -342,8 +342,10 @@ int __init musb_platform_init(struct mus
+       usb_nop_xceiv_register();
+       musb->xceiv = otg_get_transceiver();
+-      if (!musb->xceiv)
++      if (!musb->xceiv) {
++              gpio_free(musb->config->gpio_vrsel);
+               return -ENODEV;
++      }
+       if (ANOMALY_05000346) {
+               bfin_write_USB_APHY_CALIB(ANOMALY_05000346_value);
diff --git a/queue-2.6.35/usb-musb-blackfin-call-usb_nop_xceiv_unregister-in-musb_platform_exit.patch b/queue-2.6.35/usb-musb-blackfin-call-usb_nop_xceiv_unregister-in-musb_platform_exit.patch
new file mode 100644 (file)
index 0000000..0562510
--- /dev/null
@@ -0,0 +1,34 @@
+From 3daad24d6c72affdd40e8b6a75c87d3c175880b6 Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Wed, 29 Sep 2010 09:54:30 +0300
+Subject: usb: musb: blackfin: call usb_nop_xceiv_unregister() in musb_platform_exit()
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+commit 3daad24d6c72affdd40e8b6a75c87d3c175880b6 upstream.
+
+Blackfin's musb_platform_exit() forgets to call usb_nop_xceiv_unregister().
+While fixing this, also remove the unneeded blank line there.
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Acked-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/blackfin.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/blackfin.c
++++ b/drivers/usb/musb/blackfin.c
+@@ -394,9 +394,9 @@ int __init musb_platform_init(struct mus
+ int musb_platform_exit(struct musb *musb)
+ {
+-
+       gpio_free(musb->config->gpio_vrsel);
+       otg_put_transceiver(musb->xceiv);
++      usb_nop_xceiv_unregister();
+       return 0;
+ }
diff --git a/queue-2.6.35/usb-musb-fix-kernel-warning-oops-when-unloading-module-in-otg-mode.patch b/queue-2.6.35/usb-musb-fix-kernel-warning-oops-when-unloading-module-in-otg-mode.patch
new file mode 100644 (file)
index 0000000..4b92d4d
--- /dev/null
@@ -0,0 +1,104 @@
+From f405387435a85a440d1ce16f3ca36e042281643a Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Wed, 29 Sep 2010 09:54:29 +0300
+Subject: USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+commit f405387435a85a440d1ce16f3ca36e042281643a upstream.
+
+Since commit 461972d8a4c94bc44f11a13046041c78a7cf18dd (musb_core: don't call
+musb_platform_exit() twice), unloading the driver module results in a WARNING
+"kobject: '(null)' (c73de788): is not initialized, yet kobject_put() is being
+called." (or even kernel oops) on e.g. DaVincis, though only in the OTG mode.
+There exists dubious and unbalanced put_device() call in musb_free() which
+takes place only in the OTG mode.  As this commit caused musb_platform_exit()
+to be called (and so unregister the NOP transceiver) before this put_device()
+call, this function references already freed memory.
+
+On the other hand, all the glue layers miss the otg_put_transceiver() call,
+complementary to the otg_get_transceiver() call that they do.  So, I think
+the solution is to get rid of the strange put_device() call, and instead
+call otg_put_transceiver() in the glue layers...
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/blackfin.c  |    1 +
+ drivers/usb/musb/davinci.c   |    2 ++
+ drivers/usb/musb/musb_core.c |    4 ----
+ drivers/usb/musb/omap2430.c  |    1 +
+ drivers/usb/musb/tusb6010.c  |    4 ++++
+ 5 files changed, 8 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/musb/blackfin.c
++++ b/drivers/usb/musb/blackfin.c
+@@ -397,5 +397,6 @@ int musb_platform_exit(struct musb *musb
+       gpio_free(musb->config->gpio_vrsel);
++      otg_put_transceiver(musb->xceiv);
+       return 0;
+ }
+--- a/drivers/usb/musb/davinci.c
++++ b/drivers/usb/musb/davinci.c
+@@ -446,6 +446,7 @@ int __init musb_platform_init(struct mus
+ fail:
+       clk_disable(musb->clock);
++      otg_put_transceiver(musb->xceiv);
+       usb_nop_xceiv_unregister();
+       return -ENODEV;
+ }
+@@ -496,6 +497,7 @@ int musb_platform_exit(struct musb *musb
+       clk_disable(musb->clock);
++      otg_put_transceiver(musb->xceiv);
+       usb_nop_xceiv_unregister();
+       return 0;
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1922,10 +1922,6 @@ static void musb_free(struct musb *musb)
+               dma_controller_destroy(c);
+       }
+-#ifdef CONFIG_USB_MUSB_OTG
+-      put_device(musb->xceiv->dev);
+-#endif
+-
+ #ifdef CONFIG_USB_MUSB_HDRC_HCD
+       usb_put_hcd(musb_to_hcd(musb));
+ #else
+--- a/drivers/usb/musb/omap2430.c
++++ b/drivers/usb/musb/omap2430.c
+@@ -326,5 +326,6 @@ int musb_platform_exit(struct musb *musb
+       musb_platform_suspend(musb);
++      otg_put_transceiver(musb->xceiv);
+       return 0;
+ }
+--- a/drivers/usb/musb/tusb6010.c
++++ b/drivers/usb/musb/tusb6010.c
+@@ -1152,6 +1152,8 @@ done:
+       if (ret < 0) {
+               if (sync)
+                       iounmap(sync);
++
++              otg_put_transceiver(musb->xceiv);
+               usb_nop_xceiv_unregister();
+       }
+       return ret;
+@@ -1166,6 +1168,8 @@ int musb_platform_exit(struct musb *musb
+               musb->board_set_power(0);
+       iounmap(musb->sync_va);
++
++      otg_put_transceiver(musb->xceiv);
+       usb_nop_xceiv_unregister();
+       return 0;
+ }
diff --git a/queue-2.6.35/usb-opticon-fix-long-standing-bugs-in-opticon-driver.patch b/queue-2.6.35/usb-opticon-fix-long-standing-bugs-in-opticon-driver.patch
new file mode 100644 (file)
index 0000000..bb52990
--- /dev/null
@@ -0,0 +1,45 @@
+From 97cd8dc4ca9a1a5efb2cc38758e01492e3b013e2 Mon Sep 17 00:00:00 2001
+From: Alon Ziv <alon+git@nolaviz.org>
+Date: Sun, 10 Oct 2010 08:32:18 +0200
+Subject: USB: opticon: Fix long-standing bugs in opticon driver
+
+From: Alon Ziv <alon+git@nolaviz.org>
+
+commit 97cd8dc4ca9a1a5efb2cc38758e01492e3b013e2 upstream.
+
+The bulk-read callback had two bugs:
+a) The bulk-in packet's leading two zeros were returned (and the two last
+   bytes truncated)
+b) The wrong URB was transmitted for the second (and later) read requests,
+   causing further reads to return the entire packet (including leading
+   zeros)
+
+Signed-off-by: Alon Ziv <alon-git@nolaviz.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/opticon.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/serial/opticon.c
++++ b/drivers/usb/serial/opticon.c
+@@ -96,8 +96,8 @@ static void opticon_bulk_callback(struct
+                       /* real data, send it to the tty layer */
+                       tty = tty_port_tty_get(&port->port);
+                       if (tty) {
+-                              tty_insert_flip_string(tty, data,
+-                                                             data_length);
++                              tty_insert_flip_string(tty, data + 2,
++                                                     data_length);
+                               tty_flip_buffer_push(tty);
+                               tty_kref_put(tty);
+                       }
+@@ -130,7 +130,7 @@ exit:
+                                                 priv->bulk_address),
+                                 priv->bulk_in_buffer, priv->buffer_size,
+                                 opticon_bulk_callback, priv);
+-              result = usb_submit_urb(port->read_urb, GFP_ATOMIC);
++              result = usb_submit_urb(priv->bulk_read_urb, GFP_ATOMIC);
+               if (result)
+                       dev_err(&port->dev,
+                           "%s - failed resubmitting read urb, error %d\n",
diff --git a/queue-2.6.35/usb-option-add-more-zte-modem-usb-id-s.patch b/queue-2.6.35/usb-option-add-more-zte-modem-usb-id-s.patch
new file mode 100644 (file)
index 0000000..f693d25
--- /dev/null
@@ -0,0 +1,104 @@
+From ecfa153ef616b901e86d9a051b329fcda7a6ce7b Mon Sep 17 00:00:00 2001
+From: Mauro Carvalho Chehab <mchehab@redhat.com>
+Date: Sun, 12 Sep 2010 11:41:50 -0300
+Subject: USB: option: Add more ZTE modem USB id's
+
+From: Mauro Carvalho Chehab <mchehab@redhat.com>
+
+commit ecfa153ef616b901e86d9a051b329fcda7a6ce7b upstream.
+
+There are lots of ZTE USB id's currently not covered by usb/serial. Adds them,
+to allow those devices to work properly on Linux.
+
+While here, put the USB ID's for 0x2002/0x2003 at the sorted order.
+
+This patch is based on zte.c file found on MF645.
+
+PS.: The ZTE driver is commenting the USB ID for 0x0053. It also adds, commented,
+an USB ID for 0x0026.
+
+Not sure why, but I think that 0053 is used by their devices in storage mode only.
+So, I opted to keep the comment on this patch.
+
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |   23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -595,6 +595,7 @@ static const struct usb_device_id option
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0011, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0012, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0013, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0016, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff) },
+@@ -606,38 +607,52 @@ static const struct usb_device_id option
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0023, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0024, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0025, 0xff, 0xff, 0xff) },
+-      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0026, 0xff, 0xff, 0xff) },
++      /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0026, 0xff, 0xff, 0xff) }, */
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0028, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0029, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0030, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0032, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0033, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0034, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0037, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0038, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0039, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0040, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0042, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0043, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0044, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0048, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0049, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0050, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0051, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0052, 0xff, 0xff, 0xff) },
++      /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0053, 0xff, 0xff, 0xff) }, */
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0054, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0055, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0056, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0057, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0058, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0061, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0062, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0063, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0064, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0065, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0066, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0067, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0069, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0076, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0077, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0078, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0079, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0082, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0083, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0086, 0xff, 0xff, 0xff) },
+-      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff) },
+-      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0087, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0105, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0106, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0108, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0113, 0xff, 0xff, 0xff) },
+@@ -853,6 +868,8 @@ static const struct usb_device_id option
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff) },
++      { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
diff --git a/queue-2.6.35/usb-r8a66597-hcd-change-mistake-of-the-outsw-function.patch b/queue-2.6.35/usb-r8a66597-hcd-change-mistake-of-the-outsw-function.patch
new file mode 100644 (file)
index 0000000..5e0ac9d
--- /dev/null
@@ -0,0 +1,32 @@
+From ac9dfe9cdda4eb42ecaa9f13b0fee518e0b6518e Mon Sep 17 00:00:00 2001
+From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+Date: Thu, 14 Oct 2010 14:52:54 +0900
+Subject: usb: r8a66597-hcd: Change mistake of the outsw function
+
+From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+
+commit ac9dfe9cdda4eb42ecaa9f13b0fee518e0b6518e upstream.
+
+Some functions changed by 1c98347e613bf17ea2f18c9766ce0ab77f65a96d.
+However, There was a change mistake of the function (outsw).
+
+Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+CC: Paul Mundt <lethal@linux-sh.org>
+Acked-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/r8a66597.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/r8a66597.h
++++ b/drivers/usb/host/r8a66597.h
+@@ -227,7 +227,7 @@ static inline void r8a66597_write_fifo(s
+               int odd = len & 0x0001;
+               len = len / 2;
+-              ioread16_rep(fifoaddr, buf, len);
++              iowrite16_rep(fifoaddr, buf, len);
+               if (unlikely(odd)) {
+                       buf = &buf[len];
+                       iowrite8((unsigned char)*buf, fifoaddr);
diff --git a/queue-2.6.35/usb-visor-fix-initialisation-of-ux50-th55-devices.patch b/queue-2.6.35/usb-visor-fix-initialisation-of-ux50-th55-devices.patch
new file mode 100644 (file)
index 0000000..ef565dd
--- /dev/null
@@ -0,0 +1,52 @@
+From cfb8da8f69b81d367b766888e83ec0483a31bf01 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <jhovold@gmail.com>
+Date: Tue, 12 Oct 2010 01:07:05 +0200
+Subject: USB: visor: fix initialisation of UX50/TH55 devices
+
+From: Johan Hovold <jhovold@gmail.com>
+
+commit cfb8da8f69b81d367b766888e83ec0483a31bf01 upstream.
+
+Fix regression introduced by commit
+214916f2ec6701e1c9972f26c60b3dc37d3153c6 (USB: visor: reimplement using
+generic framework) which broke initialisation of UX50/TH55 devices that
+used re-mapped bulk-out endpoint addresses.
+
+Reported-by: Robert Gadsdon <rgadsdon@bayarea.net>
+Tested-by: Robert Gadsdon <rgadsdon@bayarea.net>
+Signed-off-by: Johan Hovold <jhovold@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/visor.c |   11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/visor.c
++++ b/drivers/usb/serial/visor.c
+@@ -606,6 +606,10 @@ static int treo_attach(struct usb_serial
+ static int clie_5_attach(struct usb_serial *serial)
+ {
++      struct usb_serial_port *port;
++      unsigned int pipe;
++      int j;
++
+       dbg("%s", __func__);
+       /* TH55 registers 2 ports.
+@@ -621,9 +625,14 @@ static int clie_5_attach(struct usb_seri
+               return -1;
+       /* port 0 now uses the modified endpoint Address */
+-      serial->port[0]->bulk_out_endpointAddress =
++      port = serial->port[0];
++      port->bulk_out_endpointAddress =
+                               serial->port[1]->bulk_out_endpointAddress;
++      pipe = usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress);
++      for (j = 0; j < ARRAY_SIZE(port->write_urbs); ++j)
++              port->write_urbs[j]->pipe = pipe;
++
+       return 0;
+ }