From: Greg Kroah-Hartman Date: Fri, 29 Oct 2010 23:34:14 +0000 (-0700) Subject: .35 patches X-Git-Tag: v2.6.27.56~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bb025da928787491a6226cad0b98a86828143124;p=thirdparty%2Fkernel%2Fstable-queue.git .35 patches --- 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 index 00000000000..a7e9b7ddbbf --- /dev/null +++ b/queue-2.6.35/asus-laptop-fix-gps-rfkill.patch @@ -0,0 +1,44 @@ +From 23f45c3a76e715217f40ac397c15815c774cad7f Mon Sep 17 00:00:00 2001 +From: Corentin Chary +Date: Tue, 24 Aug 2010 09:30:46 +0200 +Subject: asus-laptop: fix gps rfkill + +From: Corentin Chary + +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 +Signed-off-by: Matthew Garrett +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..3b12efd05de --- /dev/null +++ b/queue-2.6.35/drivers-net-wireless-p54-eeprom.c-return-enomem-on-memory-allocation-failure.patch @@ -0,0 +1,53 @@ +From 0d91f22b75347d9503b17a42b6c74d3f7750acd6 Mon Sep 17 00:00:00 2001 +From: Julia Lawall +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 + +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/) + +// +@@ +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; +} +// + +Signed-off-by: Julia Lawall +Acked-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..35c2429de31 --- /dev/null +++ b/queue-2.6.35/ohci-work-around-for-nvidia-shutdown-problem.patch @@ -0,0 +1,169 @@ +From 3df7169e73fc1d71a39cffeacc969f6840cdf52b Mon Sep 17 00:00:00 2001 +From: Alan Stern +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 + +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 +Signed-off-by: Alan Stern +CC: David Brownell +Tested-by: Pali Rohár +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..c485d1f8ac3 --- /dev/null +++ b/queue-2.6.35/p54usb-add-five-more-usbids.patch @@ -0,0 +1,66 @@ +From 1a92795dac419128eb511dce30a6aad672064b88 Mon Sep 17 00:00:00 2001 +From: Christian Lamparter +Date: Fri, 1 Oct 2010 22:01:24 +0200 +Subject: p54usb: add five more USBIDs + +From: Christian Lamparter + +commit 1a92795dac419128eb511dce30a6aad672064b88 upstream. + +Source: +http://www.wikidevi.com/wiki/Intersil/p54/usb/windows + +Signed-off-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..c29acab5671 --- /dev/null +++ b/queue-2.6.35/p54usb-fix-off-by-one-on-config_pm.patch @@ -0,0 +1,37 @@ +From 11791a6f7534906b4a01ffb54ba0b02ca39398ef Mon Sep 17 00:00:00 2001 +From: Christian Lamparter +Date: Sun, 22 Aug 2010 22:41:33 +0200 +Subject: p54usb: fix off-by-one on !CONFIG_PM + +From: Christian Lamparter + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-2.6.35/series b/queue-2.6.35/series index a769d02bce5..b675139afa4 100644 --- a/queue-2.6.35/series +++ b/queue-2.6.35/series @@ -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 index 00000000000..f6fe580ef47 --- /dev/null +++ b/queue-2.6.35/usb-accept-some-invalid-ep0-maxpacket-values.patch @@ -0,0 +1,49 @@ +From 56626a72a47bf3e50875d960d6b5f17b9bee0ab2 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 14 Oct 2010 15:25:21 -0400 +Subject: USB: accept some invalid ep0-maxpacket values + +From: Alan Stern + +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 +Reported-by: James +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..55ee7d94fbc --- /dev/null +++ b/queue-2.6.35/usb-add-pid-for-ftdi-based-opendcc-hardware.patch @@ -0,0 +1,41 @@ +From 99c1e4f89d1033444ce4d0c064bd2826e81c3775 Mon Sep 17 00:00:00 2001 +From: Rainer Keller +Date: Tue, 28 Sep 2010 12:27:43 +0200 +Subject: USB: add PID for FTDI based OpenDCC hardware + +From: Rainer Keller + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7da4aac27f0 --- /dev/null +++ b/queue-2.6.35/usb-atmel_usba_udc-force-vbus_pin-at-einval-when-gpio_request-failled.patch @@ -0,0 +1,31 @@ +From 969affff54702785330de553b790372e261e93f9 Mon Sep 17 00:00:00 2001 +From: Jean-Christophe PLAGNIOL-VILLARD +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 + +commit 969affff54702785330de553b790372e261e93f9 upstream. + +to ensure gpio_is_valid return false + +Signed-off-by: Nicolas Ferre +Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..0c43aeb0234 --- /dev/null +++ b/queue-2.6.35/usb-change-acm_iad_descriptor-bfunctionprotocol-to-usb_cdc_acm_proto_at_v25ter.patch @@ -0,0 +1,35 @@ +From 5c8db070b4480c43394680d9dfd2ddb06b97d2ae Mon Sep 17 00:00:00 2001 +From: Praveena Nadahally +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 + +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 +Signed-off-by: Praveena Nadahally +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..8aefb94a537 --- /dev/null +++ b/queue-2.6.35/usb-cp210x-add-renesas-rx-stick-device-id.patch @@ -0,0 +1,47 @@ +From 2f1136d1d08a63dcdbcd462621373f30d8dfe590 Mon Sep 17 00:00:00 2001 +From: DJ Delorie +Date: Fri, 17 Sep 2010 11:09:06 -0400 +Subject: USB: cp210x: Add Renesas RX-Stick device ID + +From: DJ Delorie + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..82c375673e5 --- /dev/null +++ b/queue-2.6.35/usb-cp210x-add-wago-750-923-service-cable-device-id.patch @@ -0,0 +1,46 @@ +From 93ad03d60b5b18897030038234aa2ebae8234748 Mon Sep 17 00:00:00 2001 +From: Anders Larsen +Date: Wed, 6 Oct 2010 23:46:25 +0200 +Subject: USB: cp210x: Add WAGO 750-923 Service Cable device ID + +From: Anders Larsen + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..52667039c32 --- /dev/null +++ b/queue-2.6.35/usb-disable-endpoints-after-unbinding-interfaces-not-before.patch @@ -0,0 +1,69 @@ +From 80f0cf3947889014d3a3dc0ad60fb87cfda4b12a Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 30 Sep 2010 15:16:23 -0400 +Subject: USB: disable endpoints after unbinding interfaces, not before + +From: Alan Stern + +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 +Tested-by: Carsten Sommer +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..28ad04b69a3 --- /dev/null +++ b/queue-2.6.35/usb-ftdi_sio-add-device-ids-for-sciencescope.patch @@ -0,0 +1,43 @@ +From 0f266abd70cd83571eca019f764b5f1992da7361 Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Tue, 19 Oct 2010 09:05:43 -0700 +Subject: USB: ftdi_sio: add device ids for ScienceScope + +From: Greg Kroah-Hartman + +commit 0f266abd70cd83571eca019f764b5f1992da7361 upstream. + +This adds the requested device ids to the ftdi_sio driver. + +Reported-by: Ewan Bingham +Cc: Kuba Ober +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7e7de37e3ea --- /dev/null +++ b/queue-2.6.35/usb-ftdi_sio-add-pid-for-accesio-products.patch @@ -0,0 +1,42 @@ +From 3126d8236ca6f68eb8292c6af22c2e59afbeef24 Mon Sep 17 00:00:00 2001 +From: Rich Mattes +Date: Tue, 14 Sep 2010 00:35:40 -0400 +Subject: USB: ftdi_sio: Add PID for accesio products + +From: Rich Mattes + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..673c66fdff4 --- /dev/null +++ b/queue-2.6.35/usb-ftdi_sio-new-vid-pids-for-various-papouch-devices.patch @@ -0,0 +1,109 @@ +From 59c6ccd9f9aecfa59c99ceba6d4d34b180547a05 Mon Sep 17 00:00:00 2001 +From: Daniel Suchy +Date: Tue, 12 Oct 2010 15:44:24 +0200 +Subject: USB: ftdi_sio: new VID/PIDs for various Papouch devices + +From: Daniel Suchy + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..0329f791845 --- /dev/null +++ b/queue-2.6.35/usb-ftdi_sio-revert-usb-ftdi_sio-fix-dtr-rts-line-modes.patch @@ -0,0 +1,54 @@ +From 677aeafe19e88c282af74564048243ccabb1c590 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +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 + +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 +Reported-by: Dave Mielke +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..fb07f1da3ff --- /dev/null +++ b/queue-2.6.35/usb-gadget-composite-prevent-oops-for-non-standard-control-request.patch @@ -0,0 +1,59 @@ +From 5c836e4d583701a5eecb288b5f131da39115f5ec Mon Sep 17 00:00:00 2001 +From: Roger Quadros +Date: Wed, 8 Sep 2010 13:48:44 +0300 +Subject: usb gadget: composite: prevent OOPS for non-standard control request + +From: Roger Quadros + +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 +Cc: David Brownell +Cc: Michal Nazarewicz +Cc: Robert Lukassen +Cc: Kyungmin Park +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..b0f5770cf47 --- /dev/null +++ b/queue-2.6.35/usb-gadget-g_ffs-fixed-vendor-and-product-id.patch @@ -0,0 +1,36 @@ +From ba0534be935d7b24e5fdd6f82c443ee75abc9149 Mon Sep 17 00:00:00 2001 +From: Michal Nazarewicz +Date: Thu, 12 Aug 2010 17:43:45 +0200 +Subject: USB: gadget: g_ffs: fixed vendor and product ID + +From: Michal Nazarewicz + +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 +Signed-off-by: Kyungmin Park +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..3db0907912f --- /dev/null +++ b/queue-2.6.35/usb-gadget-g_multi-fixed-vendor-and-product-id.patch @@ -0,0 +1,35 @@ +From 1c6529e92b7682573837e9c9eb7b5ba7a8216a88 Mon Sep 17 00:00:00 2001 +From: Michal Nazarewicz +Date: Thu, 12 Aug 2010 17:43:44 +0200 +Subject: USB: gadget: g_multi: fixed vendor and product ID + +From: Michal Nazarewicz + +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 +Signed-off-by: Kyungmin Park +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..fa5157f66eb --- /dev/null +++ b/queue-2.6.35/usb-musb-blackfin-call-gpio_free-on-error-path-in-musb_platform_init.patch @@ -0,0 +1,35 @@ +From 00be545e49d83485d49a598d3b7e090088934be8 Mon Sep 17 00:00:00 2001 +From: Sergei Shtylyov +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 + +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 +Acked-by: Mike Frysinger +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..0562510846b --- /dev/null +++ b/queue-2.6.35/usb-musb-blackfin-call-usb_nop_xceiv_unregister-in-musb_platform_exit.patch @@ -0,0 +1,34 @@ +From 3daad24d6c72affdd40e8b6a75c87d3c175880b6 Mon Sep 17 00:00:00 2001 +From: Sergei Shtylyov +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 + +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 +Acked-by: Mike Frysinger +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..4b92d4d6a39 --- /dev/null +++ b/queue-2.6.35/usb-musb-fix-kernel-warning-oops-when-unloading-module-in-otg-mode.patch @@ -0,0 +1,104 @@ +From f405387435a85a440d1ce16f3ca36e042281643a Mon Sep 17 00:00:00 2001 +From: Sergei Shtylyov +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 + +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 +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..bb52990ed96 --- /dev/null +++ b/queue-2.6.35/usb-opticon-fix-long-standing-bugs-in-opticon-driver.patch @@ -0,0 +1,45 @@ +From 97cd8dc4ca9a1a5efb2cc38758e01492e3b013e2 Mon Sep 17 00:00:00 2001 +From: Alon Ziv +Date: Sun, 10 Oct 2010 08:32:18 +0200 +Subject: USB: opticon: Fix long-standing bugs in opticon driver + +From: Alon Ziv + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..f693d252a92 --- /dev/null +++ b/queue-2.6.35/usb-option-add-more-zte-modem-usb-id-s.patch @@ -0,0 +1,104 @@ +From ecfa153ef616b901e86d9a051b329fcda7a6ce7b Mon Sep 17 00:00:00 2001 +From: Mauro Carvalho Chehab +Date: Sun, 12 Sep 2010 11:41:50 -0300 +Subject: USB: option: Add more ZTE modem USB id's + +From: Mauro Carvalho Chehab + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..5e0ac9d6794 --- /dev/null +++ b/queue-2.6.35/usb-r8a66597-hcd-change-mistake-of-the-outsw-function.patch @@ -0,0 +1,32 @@ +From ac9dfe9cdda4eb42ecaa9f13b0fee518e0b6518e Mon Sep 17 00:00:00 2001 +From: Nobuhiro Iwamatsu +Date: Thu, 14 Oct 2010 14:52:54 +0900 +Subject: usb: r8a66597-hcd: Change mistake of the outsw function + +From: Nobuhiro Iwamatsu + +commit ac9dfe9cdda4eb42ecaa9f13b0fee518e0b6518e upstream. + +Some functions changed by 1c98347e613bf17ea2f18c9766ce0ab77f65a96d. +However, There was a change mistake of the function (outsw). + +Signed-off-by: Nobuhiro Iwamatsu +CC: Paul Mundt +Acked-by: Yoshihiro Shimoda +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..ef565dd96b2 --- /dev/null +++ b/queue-2.6.35/usb-visor-fix-initialisation-of-ux50-th55-devices.patch @@ -0,0 +1,52 @@ +From cfb8da8f69b81d367b766888e83ec0483a31bf01 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Tue, 12 Oct 2010 01:07:05 +0200 +Subject: USB: visor: fix initialisation of UX50/TH55 devices + +From: Johan Hovold + +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 +Tested-by: Robert Gadsdon +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + 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; + } +