diff options
| -rw-r--r-- | drivers/usb/class/usbtmc.c | 2 | ||||
| -rw-r--r-- | drivers/usb/core/config.c | 11 | ||||
| -rw-r--r-- | drivers/usb/gadget/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/at91_udc.c | 1 | ||||
| -rw-r--r-- | drivers/usb/gadget/composite.c | 6 | ||||
| -rw-r--r-- | drivers/usb/gadget/f_hid.c | 7 | ||||
| -rw-r--r-- | drivers/usb/gadget/fusb300_udc.c | 101 | ||||
| -rw-r--r-- | drivers/usb/gadget/net2272.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/s3c2410_udc.c | 1 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-hub.c | 12 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-mxc.c | 1 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-omap.c | 16 | ||||
| -rw-r--r-- | drivers/usb/host/isp1760-hcd.c | 3 | ||||
| -rw-r--r-- | drivers/usb/host/pci-quirks.c | 4 | ||||
| -rw-r--r-- | drivers/usb/host/xhci.c | 19 | ||||
| -rw-r--r-- | drivers/usb/musb/Kconfig | 3 | ||||
| -rw-r--r-- | drivers/usb/musb/musb_gadget.c | 5 | ||||
| -rw-r--r-- | drivers/usb/musb/tusb6010_omap.c | 2 | ||||
| -rw-r--r-- | drivers/usb/renesas_usbhs/mod_gadget.c | 3 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 8 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 6 | ||||
| -rw-r--r-- | drivers/usb/serial/option.c | 12 | ||||
| -rw-r--r-- | drivers/usb/serial/qcserial.c | 2 | ||||
| -rw-r--r-- | drivers/usb/storage/unusual_devs.h | 10 |
24 files changed, 113 insertions, 126 deletions
diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 385acb895ab3..3f94ac34dce3 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c | |||
| @@ -268,7 +268,7 @@ usbtmc_abort_bulk_in_status: | |||
| 268 | dev_err(dev, "usb_bulk_msg returned %d\n", rv); | 268 | dev_err(dev, "usb_bulk_msg returned %d\n", rv); |
| 269 | goto exit; | 269 | goto exit; |
| 270 | } | 270 | } |
| 271 | } while ((actual = max_size) && | 271 | } while ((actual == max_size) && |
| 272 | (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN)); | 272 | (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN)); |
| 273 | 273 | ||
| 274 | if (actual == max_size) { | 274 | if (actual == max_size) { |
diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index c962608b4b9a..26678cadfb21 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c | |||
| @@ -123,10 +123,11 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno, | |||
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | if (usb_endpoint_xfer_isoc(&ep->desc)) | 125 | if (usb_endpoint_xfer_isoc(&ep->desc)) |
| 126 | max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst + 1) * | 126 | max_tx = (desc->bMaxBurst + 1) * (desc->bmAttributes + 1) * |
| 127 | (desc->bmAttributes + 1); | 127 | le16_to_cpu(ep->desc.wMaxPacketSize); |
| 128 | else if (usb_endpoint_xfer_int(&ep->desc)) | 128 | else if (usb_endpoint_xfer_int(&ep->desc)) |
| 129 | max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst + 1); | 129 | max_tx = le16_to_cpu(ep->desc.wMaxPacketSize) * |
| 130 | (desc->bMaxBurst + 1); | ||
| 130 | else | 131 | else |
| 131 | max_tx = 999999; | 132 | max_tx = 999999; |
| 132 | if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) { | 133 | if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) { |
| @@ -134,10 +135,10 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno, | |||
| 134 | "config %d interface %d altsetting %d ep %d: " | 135 | "config %d interface %d altsetting %d ep %d: " |
| 135 | "setting to %d\n", | 136 | "setting to %d\n", |
| 136 | usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int", | 137 | usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int", |
| 137 | desc->wBytesPerInterval, | 138 | le16_to_cpu(desc->wBytesPerInterval), |
| 138 | cfgno, inum, asnum, ep->desc.bEndpointAddress, | 139 | cfgno, inum, asnum, ep->desc.bEndpointAddress, |
| 139 | max_tx); | 140 | max_tx); |
| 140 | ep->ss_ep_comp.wBytesPerInterval = max_tx; | 141 | ep->ss_ep_comp.wBytesPerInterval = cpu_to_le16(max_tx); |
| 141 | } | 142 | } |
| 142 | } | 143 | } |
| 143 | 144 | ||
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 44b6b40aafb4..5a084b9cfa3c 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig | |||
| @@ -310,7 +310,7 @@ config USB_PXA_U2O | |||
| 310 | # musb builds in ../musb along with host support | 310 | # musb builds in ../musb along with host support |
| 311 | config USB_GADGET_MUSB_HDRC | 311 | config USB_GADGET_MUSB_HDRC |
| 312 | tristate "Inventra HDRC USB Peripheral (TI, ADI, ...)" | 312 | tristate "Inventra HDRC USB Peripheral (TI, ADI, ...)" |
| 313 | depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG) | 313 | depends on USB_MUSB_HDRC |
| 314 | select USB_GADGET_DUALSPEED | 314 | select USB_GADGET_DUALSPEED |
| 315 | help | 315 | help |
| 316 | This OTG-capable silicon IP is used in dual designs including | 316 | This OTG-capable silicon IP is used in dual designs including |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index 98cbc06c30fd..ddb118a76807 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #include <linux/list.h> | 35 | #include <linux/list.h> |
| 36 | #include <linux/interrupt.h> | 36 | #include <linux/interrupt.h> |
| 37 | #include <linux/proc_fs.h> | 37 | #include <linux/proc_fs.h> |
| 38 | #include <linux/prefetch.h> | ||
| 38 | #include <linux/clk.h> | 39 | #include <linux/clk.h> |
| 39 | #include <linux/usb/ch9.h> | 40 | #include <linux/usb/ch9.h> |
| 40 | #include <linux/usb/gadget.h> | 41 | #include <linux/usb/gadget.h> |
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 5ef87794fd32..aef47414f5d5 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c | |||
| @@ -1079,10 +1079,12 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) | |||
| 1079 | cdev->desc.bMaxPacketSize0 = | 1079 | cdev->desc.bMaxPacketSize0 = |
| 1080 | cdev->gadget->ep0->maxpacket; | 1080 | cdev->gadget->ep0->maxpacket; |
| 1081 | if (gadget_is_superspeed(gadget)) { | 1081 | if (gadget_is_superspeed(gadget)) { |
| 1082 | if (gadget->speed >= USB_SPEED_SUPER) | 1082 | if (gadget->speed >= USB_SPEED_SUPER) { |
| 1083 | cdev->desc.bcdUSB = cpu_to_le16(0x0300); | 1083 | cdev->desc.bcdUSB = cpu_to_le16(0x0300); |
| 1084 | else | 1084 | cdev->desc.bMaxPacketSize0 = 9; |
| 1085 | } else { | ||
| 1085 | cdev->desc.bcdUSB = cpu_to_le16(0x0210); | 1086 | cdev->desc.bcdUSB = cpu_to_le16(0x0210); |
| 1087 | } | ||
| 1086 | } | 1088 | } |
| 1087 | 1089 | ||
| 1088 | value = min(w_length, (u16) sizeof cdev->desc); | 1090 | value = min(w_length, (u16) sizeof cdev->desc); |
diff --git a/drivers/usb/gadget/f_hid.c b/drivers/usb/gadget/f_hid.c index 403a48bcf560..83a266bdb40e 100644 --- a/drivers/usb/gadget/f_hid.c +++ b/drivers/usb/gadget/f_hid.c | |||
| @@ -367,6 +367,13 @@ static int hidg_setup(struct usb_function *f, | |||
| 367 | case ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8 | 367 | case ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8 |
| 368 | | USB_REQ_GET_DESCRIPTOR): | 368 | | USB_REQ_GET_DESCRIPTOR): |
| 369 | switch (value >> 8) { | 369 | switch (value >> 8) { |
| 370 | case HID_DT_HID: | ||
| 371 | VDBG(cdev, "USB_REQ_GET_DESCRIPTOR: HID\n"); | ||
| 372 | length = min_t(unsigned short, length, | ||
| 373 | hidg_desc.bLength); | ||
| 374 | memcpy(req->buf, &hidg_desc, length); | ||
| 375 | goto respond; | ||
| 376 | break; | ||
| 370 | case HID_DT_REPORT: | 377 | case HID_DT_REPORT: |
| 371 | VDBG(cdev, "USB_REQ_GET_DESCRIPTOR: REPORT\n"); | 378 | VDBG(cdev, "USB_REQ_GET_DESCRIPTOR: REPORT\n"); |
| 372 | length = min_t(unsigned short, length, | 379 | length = min_t(unsigned short, length, |
diff --git a/drivers/usb/gadget/fusb300_udc.c b/drivers/usb/gadget/fusb300_udc.c index 24a924330c81..4ec888f90002 100644 --- a/drivers/usb/gadget/fusb300_udc.c +++ b/drivers/usb/gadget/fusb300_udc.c | |||
| @@ -609,107 +609,6 @@ void fusb300_rdcxf(struct fusb300 *fusb300, | |||
| 609 | } | 609 | } |
| 610 | } | 610 | } |
| 611 | 611 | ||
| 612 | #if 0 | ||
| 613 | static void fusb300_dbg_fifo(struct fusb300_ep *ep, | ||
| 614 | u8 entry, u16 length) | ||
| 615 | { | ||
| 616 | u32 reg; | ||
| 617 | u32 i = 0; | ||
| 618 | u32 j = 0; | ||
| 619 | |||
| 620 | reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_GTM); | ||
| 621 | reg &= ~(FUSB300_GTM_TST_EP_ENTRY(0xF) | | ||
| 622 | FUSB300_GTM_TST_EP_NUM(0xF) | FUSB300_GTM_TST_FIFO_DEG); | ||
| 623 | reg |= (FUSB300_GTM_TST_EP_ENTRY(entry) | | ||
| 624 | FUSB300_GTM_TST_EP_NUM(ep->epnum) | FUSB300_GTM_TST_FIFO_DEG); | ||
| 625 | iowrite32(reg, ep->fusb300->reg + FUSB300_OFFSET_GTM); | ||
| 626 | |||
| 627 | for (i = 0; i < (length >> 2); i++) { | ||
| 628 | if (i * 4 == 1024) | ||
| 629 | break; | ||
| 630 | reg = ioread32(ep->fusb300->reg + | ||
| 631 | FUSB300_OFFSET_BUFDBG_START + i * 4); | ||
| 632 | printk(KERN_DEBUG" 0x%-8x", reg); | ||
| 633 | j++; | ||
| 634 | if ((j % 4) == 0) | ||
| 635 | printk(KERN_DEBUG "\n"); | ||
| 636 | } | ||
| 637 | |||
| 638 | if (length % 4) { | ||
| 639 | reg = ioread32(ep->fusb300->reg + | ||
| 640 | FUSB300_OFFSET_BUFDBG_START + i * 4); | ||
| 641 | printk(KERN_DEBUG " 0x%x\n", reg); | ||
| 642 | } | ||
| 643 | |||
| 644 | if ((j % 4) != 0) | ||
| 645 | printk(KERN_DEBUG "\n"); | ||
| 646 | |||
| 647 | fusb300_disable_bit(ep->fusb300, FUSB300_OFFSET_GTM, | ||
| 648 | FUSB300_GTM_TST_FIFO_DEG); | ||
| 649 | } | ||
| 650 | |||
| 651 | static void fusb300_cmp_dbg_fifo(struct fusb300_ep *ep, | ||
| 652 | u8 entry, u16 length, u8 *golden) | ||
| 653 | { | ||
| 654 | u32 reg; | ||
| 655 | u32 i = 0; | ||
| 656 | u32 golden_value; | ||
| 657 | u8 *tmp; | ||
| 658 | |||
| 659 | tmp = golden; | ||
| 660 | |||
| 661 | printk(KERN_DEBUG "fusb300_cmp_dbg_fifo (entry %d) : start\n", entry); | ||
| 662 | |||
| 663 | reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_GTM); | ||
| 664 | reg &= ~(FUSB300_GTM_TST_EP_ENTRY(0xF) | | ||
| 665 | FUSB300_GTM_TST_EP_NUM(0xF) | FUSB300_GTM_TST_FIFO_DEG); | ||
| 666 | reg |= (FUSB300_GTM_TST_EP_ENTRY(entry) | | ||
| 667 | FUSB300_GTM_TST_EP_NUM(ep->epnum) | FUSB300_GTM_TST_FIFO_DEG); | ||
| 668 | iowrite32(reg, ep->fusb300->reg + FUSB300_OFFSET_GTM); | ||
| 669 | |||
| 670 | for (i = 0; i < (length >> 2); i++) { | ||
| 671 | if (i * 4 == 1024) | ||
| 672 | break; | ||
| 673 | golden_value = *tmp | *(tmp + 1) << 8 | | ||
| 674 | *(tmp + 2) << 16 | *(tmp + 3) << 24; | ||
| 675 | |||
| 676 | reg = ioread32(ep->fusb300->reg + | ||
| 677 | FUSB300_OFFSET_BUFDBG_START + i*4); | ||
| 678 | |||
| 679 | if (reg != golden_value) { | ||
| 680 | printk(KERN_DEBUG "0x%x : ", (u32)(ep->fusb300->reg + | ||
| 681 | FUSB300_OFFSET_BUFDBG_START + i*4)); | ||
| 682 | printk(KERN_DEBUG " golden = 0x%x, reg = 0x%x\n", | ||
| 683 | golden_value, reg); | ||
| 684 | } | ||
| 685 | tmp += 4; | ||
| 686 | } | ||
| 687 | |||
| 688 | switch (length % 4) { | ||
| 689 | case 1: | ||
| 690 | golden_value = *tmp; | ||
| 691 | case 2: | ||
| 692 | golden_value = *tmp | *(tmp + 1) << 8; | ||
| 693 | case 3: | ||
| 694 | golden_value = *tmp | *(tmp + 1) << 8 | *(tmp + 2) << 16; | ||
| 695 | default: | ||
| 696 | break; | ||
| 697 | |||
| 698 | reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_BUFDBG_START + i*4); | ||
| 699 | if (reg != golden_value) { | ||
| 700 | printk(KERN_DEBUG "0x%x:", (u32)(ep->fusb300->reg + | ||
| 701 | FUSB300_OFFSET_BUFDBG_START + i*4)); | ||
| 702 | printk(KERN_DEBUG " golden = 0x%x, reg = 0x%x\n", | ||
| 703 | golden_value, reg); | ||
| 704 | } | ||
| 705 | } | ||
| 706 | |||
| 707 | printk(KERN_DEBUG "fusb300_cmp_dbg_fifo : end\n"); | ||
| 708 | fusb300_disable_bit(ep->fusb300, FUSB300_OFFSET_GTM, | ||
| 709 | FUSB300_GTM_TST_FIFO_DEG); | ||
| 710 | } | ||
| 711 | #endif | ||
| 712 | |||
| 713 | static void fusb300_rdfifo(struct fusb300_ep *ep, | 612 | static void fusb300_rdfifo(struct fusb300_ep *ep, |
| 714 | struct fusb300_request *req, | 613 | struct fusb300_request *req, |
| 715 | u32 length) | 614 | u32 length) |
diff --git a/drivers/usb/gadget/net2272.c b/drivers/usb/gadget/net2272.c index 7c7b0e120d88..ab98ea926a11 100644 --- a/drivers/usb/gadget/net2272.c +++ b/drivers/usb/gadget/net2272.c | |||
| @@ -27,13 +27,13 @@ | |||
| 27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
| 28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
| 29 | #include <linux/ioport.h> | 29 | #include <linux/ioport.h> |
| 30 | #include <linux/irq.h> | ||
| 31 | #include <linux/kernel.h> | 30 | #include <linux/kernel.h> |
| 32 | #include <linux/list.h> | 31 | #include <linux/list.h> |
| 33 | #include <linux/module.h> | 32 | #include <linux/module.h> |
| 34 | #include <linux/moduleparam.h> | 33 | #include <linux/moduleparam.h> |
| 35 | #include <linux/pci.h> | 34 | #include <linux/pci.h> |
| 36 | #include <linux/platform_device.h> | 35 | #include <linux/platform_device.h> |
| 36 | #include <linux/prefetch.h> | ||
| 37 | #include <linux/sched.h> | 37 | #include <linux/sched.h> |
| 38 | #include <linux/slab.h> | 38 | #include <linux/slab.h> |
| 39 | #include <linux/timer.h> | 39 | #include <linux/timer.h> |
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c index 85c1b0d66293..8d31848aab09 100644 --- a/drivers/usb/gadget/s3c2410_udc.c +++ b/drivers/usb/gadget/s3c2410_udc.c | |||
| @@ -2060,6 +2060,7 @@ static int s3c2410_udc_resume(struct platform_device *pdev) | |||
| 2060 | static const struct platform_device_id s3c_udc_ids[] = { | 2060 | static const struct platform_device_id s3c_udc_ids[] = { |
| 2061 | { "s3c2410-usbgadget", }, | 2061 | { "s3c2410-usbgadget", }, |
| 2062 | { "s3c2440-usbgadget", }, | 2062 | { "s3c2440-usbgadget", }, |
| 2063 | { } | ||
| 2063 | }; | 2064 | }; |
| 2064 | MODULE_DEVICE_TABLE(platform, s3c_udc_ids); | 2065 | MODULE_DEVICE_TABLE(platform, s3c_udc_ids); |
| 2065 | 2066 | ||
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index bf2c8f65e1ae..e051b30c1847 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
| @@ -1046,7 +1046,19 @@ static int ehci_hub_control ( | |||
| 1046 | if (!selector || selector > 5) | 1046 | if (!selector || selector > 5) |
| 1047 | goto error; | 1047 | goto error; |
| 1048 | ehci_quiesce(ehci); | 1048 | ehci_quiesce(ehci); |
| 1049 | |||
| 1050 | /* Put all enabled ports into suspend */ | ||
| 1051 | while (ports--) { | ||
| 1052 | u32 __iomem *sreg = | ||
| 1053 | &ehci->regs->port_status[ports]; | ||
| 1054 | |||
| 1055 | temp = ehci_readl(ehci, sreg) & ~PORT_RWC_BITS; | ||
| 1056 | if (temp & PORT_PE) | ||
| 1057 | ehci_writel(ehci, temp | PORT_SUSPEND, | ||
| 1058 | sreg); | ||
| 1059 | } | ||
| 1049 | ehci_halt(ehci); | 1060 | ehci_halt(ehci); |
| 1061 | temp = ehci_readl(ehci, status_reg); | ||
| 1050 | temp |= selector << 16; | 1062 | temp |= selector << 16; |
| 1051 | ehci_writel(ehci, temp, status_reg); | 1063 | ehci_writel(ehci, temp, status_reg); |
| 1052 | break; | 1064 | break; |
diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c index 0c058be35a38..555a73c864b5 100644 --- a/drivers/usb/host/ehci-mxc.c +++ b/drivers/usb/host/ehci-mxc.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include <linux/usb/ulpi.h> | 24 | #include <linux/usb/ulpi.h> |
| 25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
| 26 | 26 | ||
| 27 | #include <mach/hardware.h> | ||
| 27 | #include <mach/mxc_ehci.h> | 28 | #include <mach/mxc_ehci.h> |
| 28 | 29 | ||
| 29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c index 55a57c23dd0f..45240321ca09 100644 --- a/drivers/usb/host/ehci-omap.c +++ b/drivers/usb/host/ehci-omap.c | |||
| @@ -98,6 +98,18 @@ static void omap_ehci_soft_phy_reset(struct platform_device *pdev, u8 port) | |||
| 98 | } | 98 | } |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | static void disable_put_regulator( | ||
| 102 | struct ehci_hcd_omap_platform_data *pdata) | ||
| 103 | { | ||
| 104 | int i; | ||
| 105 | |||
| 106 | for (i = 0 ; i < OMAP3_HS_USB_PORTS ; i++) { | ||
| 107 | if (pdata->regulator[i]) { | ||
| 108 | regulator_disable(pdata->regulator[i]); | ||
| 109 | regulator_put(pdata->regulator[i]); | ||
| 110 | } | ||
| 111 | } | ||
| 112 | } | ||
| 101 | 113 | ||
| 102 | /* configure so an HC device and id are always provided */ | 114 | /* configure so an HC device and id are always provided */ |
| 103 | /* always called with process context; sleeping is OK */ | 115 | /* always called with process context; sleeping is OK */ |
| @@ -231,9 +243,11 @@ err_add_hcd: | |||
| 231 | omap_usbhs_disable(dev); | 243 | omap_usbhs_disable(dev); |
| 232 | 244 | ||
| 233 | err_enable: | 245 | err_enable: |
| 246 | disable_put_regulator(pdata); | ||
| 234 | usb_put_hcd(hcd); | 247 | usb_put_hcd(hcd); |
| 235 | 248 | ||
| 236 | err_io: | 249 | err_io: |
| 250 | iounmap(regs); | ||
| 237 | return ret; | 251 | return ret; |
| 238 | } | 252 | } |
| 239 | 253 | ||
| @@ -253,6 +267,8 @@ static int ehci_hcd_omap_remove(struct platform_device *pdev) | |||
| 253 | 267 | ||
| 254 | usb_remove_hcd(hcd); | 268 | usb_remove_hcd(hcd); |
| 255 | omap_usbhs_disable(dev); | 269 | omap_usbhs_disable(dev); |
| 270 | disable_put_regulator(dev->platform_data); | ||
| 271 | iounmap(hcd->regs); | ||
| 256 | usb_put_hcd(hcd); | 272 | usb_put_hcd(hcd); |
| 257 | return 0; | 273 | return 0; |
| 258 | } | 274 | } |
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c index 55d3d5859ac5..840beda66dd9 100644 --- a/drivers/usb/host/isp1760-hcd.c +++ b/drivers/usb/host/isp1760-hcd.c | |||
| @@ -1583,6 +1583,9 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, | |||
| 1583 | int retval = 0; | 1583 | int retval = 0; |
| 1584 | 1584 | ||
| 1585 | spin_lock_irqsave(&priv->lock, spinflags); | 1585 | spin_lock_irqsave(&priv->lock, spinflags); |
| 1586 | retval = usb_hcd_check_unlink_urb(hcd, urb, status); | ||
| 1587 | if (retval) | ||
| 1588 | goto out; | ||
| 1586 | 1589 | ||
| 1587 | qh = urb->ep->hcpriv; | 1590 | qh = urb->ep->hcpriv; |
| 1588 | if (!qh) { | 1591 | if (!qh) { |
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index a9d315906e3d..629a96813fd6 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c | |||
| @@ -535,7 +535,7 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev) | |||
| 535 | iounmap(base); | 535 | iounmap(base); |
| 536 | } | 536 | } |
| 537 | 537 | ||
| 538 | static const struct dmi_system_id __initconst ehci_dmi_nohandoff_table[] = { | 538 | static const struct dmi_system_id __devinitconst ehci_dmi_nohandoff_table[] = { |
| 539 | { | 539 | { |
| 540 | /* Pegatron Lucid (ExoPC) */ | 540 | /* Pegatron Lucid (ExoPC) */ |
| 541 | .matches = { | 541 | .matches = { |
| @@ -817,7 +817,7 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev) | |||
| 817 | 817 | ||
| 818 | /* If the BIOS owns the HC, signal that the OS wants it, and wait */ | 818 | /* If the BIOS owns the HC, signal that the OS wants it, and wait */ |
| 819 | if (val & XHCI_HC_BIOS_OWNED) { | 819 | if (val & XHCI_HC_BIOS_OWNED) { |
| 820 | writel(val & XHCI_HC_OS_OWNED, base + ext_cap_offset); | 820 | writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset); |
| 821 | 821 | ||
| 822 | /* Wait for 5 seconds with 10 microsecond polling interval */ | 822 | /* Wait for 5 seconds with 10 microsecond polling interval */ |
| 823 | timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED, | 823 | timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED, |
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 763f484bc092..1c4432d8fc10 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c | |||
| @@ -345,7 +345,8 @@ static void xhci_event_ring_work(unsigned long arg) | |||
| 345 | spin_lock_irqsave(&xhci->lock, flags); | 345 | spin_lock_irqsave(&xhci->lock, flags); |
| 346 | temp = xhci_readl(xhci, &xhci->op_regs->status); | 346 | temp = xhci_readl(xhci, &xhci->op_regs->status); |
| 347 | xhci_dbg(xhci, "op reg status = 0x%x\n", temp); | 347 | xhci_dbg(xhci, "op reg status = 0x%x\n", temp); |
| 348 | if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING)) { | 348 | if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) || |
| 349 | (xhci->xhc_state & XHCI_STATE_HALTED)) { | ||
| 349 | xhci_dbg(xhci, "HW died, polling stopped.\n"); | 350 | xhci_dbg(xhci, "HW died, polling stopped.\n"); |
| 350 | spin_unlock_irqrestore(&xhci->lock, flags); | 351 | spin_unlock_irqrestore(&xhci->lock, flags); |
| 351 | return; | 352 | return; |
| @@ -939,8 +940,11 @@ static int xhci_check_args(struct usb_hcd *hcd, struct usb_device *udev, | |||
| 939 | return 0; | 940 | return 0; |
| 940 | } | 941 | } |
| 941 | 942 | ||
| 943 | xhci = hcd_to_xhci(hcd); | ||
| 944 | if (xhci->xhc_state & XHCI_STATE_HALTED) | ||
| 945 | return -ENODEV; | ||
| 946 | |||
| 942 | if (check_virt_dev) { | 947 | if (check_virt_dev) { |
| 943 | xhci = hcd_to_xhci(hcd); | ||
| 944 | if (!udev->slot_id || !xhci->devs | 948 | if (!udev->slot_id || !xhci->devs |
| 945 | || !xhci->devs[udev->slot_id]) { | 949 | || !xhci->devs[udev->slot_id]) { |
| 946 | printk(KERN_DEBUG "xHCI %s called with unaddressed " | 950 | printk(KERN_DEBUG "xHCI %s called with unaddressed " |
| @@ -1242,7 +1246,8 @@ int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) | |||
| 1242 | xhci_urb_free_priv(xhci, urb_priv); | 1246 | xhci_urb_free_priv(xhci, urb_priv); |
| 1243 | return ret; | 1247 | return ret; |
| 1244 | } | 1248 | } |
| 1245 | if (xhci->xhc_state & XHCI_STATE_DYING) { | 1249 | if ((xhci->xhc_state & XHCI_STATE_DYING) || |
| 1250 | (xhci->xhc_state & XHCI_STATE_HALTED)) { | ||
| 1246 | xhci_dbg(xhci, "Ep 0x%x: URB %p to be canceled on " | 1251 | xhci_dbg(xhci, "Ep 0x%x: URB %p to be canceled on " |
| 1247 | "non-responsive xHCI host.\n", | 1252 | "non-responsive xHCI host.\n", |
| 1248 | urb->ep->desc.bEndpointAddress, urb); | 1253 | urb->ep->desc.bEndpointAddress, urb); |
| @@ -2665,7 +2670,10 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev) | |||
| 2665 | int i, ret; | 2670 | int i, ret; |
| 2666 | 2671 | ||
| 2667 | ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__); | 2672 | ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__); |
| 2668 | if (ret <= 0) | 2673 | /* If the host is halted due to driver unload, we still need to free the |
| 2674 | * device. | ||
| 2675 | */ | ||
| 2676 | if (ret <= 0 && ret != -ENODEV) | ||
| 2669 | return; | 2677 | return; |
| 2670 | 2678 | ||
| 2671 | virt_dev = xhci->devs[udev->slot_id]; | 2679 | virt_dev = xhci->devs[udev->slot_id]; |
| @@ -2679,7 +2687,8 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev) | |||
| 2679 | spin_lock_irqsave(&xhci->lock, flags); | 2687 | spin_lock_irqsave(&xhci->lock, flags); |
| 2680 | /* Don't disable the slot if the host controller is dead. */ | 2688 | /* Don't disable the slot if the host controller is dead. */ |
| 2681 | state = xhci_readl(xhci, &xhci->op_regs->status); | 2689 | state = xhci_readl(xhci, &xhci->op_regs->status); |
| 2682 | if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING)) { | 2690 | if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) || |
| 2691 | (xhci->xhc_state & XHCI_STATE_HALTED)) { | ||
| 2683 | xhci_free_virt_device(xhci, udev->slot_id); | 2692 | xhci_free_virt_device(xhci, udev->slot_id); |
| 2684 | spin_unlock_irqrestore(&xhci->lock, flags); | 2693 | spin_unlock_irqrestore(&xhci->lock, flags); |
| 2685 | return; | 2694 | return; |
diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig index 6192b45959f4..fc34b8b11910 100644 --- a/drivers/usb/musb/Kconfig +++ b/drivers/usb/musb/Kconfig | |||
| @@ -3,9 +3,6 @@ | |||
| 3 | # for silicon based on Mentor Graphics INVENTRA designs | 3 | # for silicon based on Mentor Graphics INVENTRA designs |
| 4 | # | 4 | # |
| 5 | 5 | ||
| 6 | comment "Enable Host or Gadget support to see Inventra options" | ||
| 7 | depends on !USB && USB_GADGET=n | ||
| 8 | |||
| 9 | # (M)HDRC = (Multipoint) Highspeed Dual-Role Controller | 6 | # (M)HDRC = (Multipoint) Highspeed Dual-Role Controller |
| 10 | config USB_MUSB_HDRC | 7 | config USB_MUSB_HDRC |
| 11 | depends on USB && USB_GADGET | 8 | depends on USB && USB_GADGET |
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index b67a062f556b..8c41a2e6ea77 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c | |||
| @@ -1698,6 +1698,8 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on) | |||
| 1698 | 1698 | ||
| 1699 | is_on = !!is_on; | 1699 | is_on = !!is_on; |
| 1700 | 1700 | ||
| 1701 | pm_runtime_get_sync(musb->controller); | ||
| 1702 | |||
| 1701 | /* NOTE: this assumes we are sensing vbus; we'd rather | 1703 | /* NOTE: this assumes we are sensing vbus; we'd rather |
| 1702 | * not pullup unless the B-session is active. | 1704 | * not pullup unless the B-session is active. |
| 1703 | */ | 1705 | */ |
| @@ -1707,6 +1709,9 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on) | |||
| 1707 | musb_pullup(musb, is_on); | 1709 | musb_pullup(musb, is_on); |
| 1708 | } | 1710 | } |
| 1709 | spin_unlock_irqrestore(&musb->lock, flags); | 1711 | spin_unlock_irqrestore(&musb->lock, flags); |
| 1712 | |||
| 1713 | pm_runtime_put(musb->controller); | ||
| 1714 | |||
| 1710 | return 0; | 1715 | return 0; |
| 1711 | } | 1716 | } |
| 1712 | 1717 | ||
diff --git a/drivers/usb/musb/tusb6010_omap.c b/drivers/usb/musb/tusb6010_omap.c index c784e6c03aac..07c8a73dfe41 100644 --- a/drivers/usb/musb/tusb6010_omap.c +++ b/drivers/usb/musb/tusb6010_omap.c | |||
| @@ -89,7 +89,7 @@ static inline int tusb_omap_use_shared_dmareq(struct tusb_omap_dma_ch *chdat) | |||
| 89 | u32 reg = musb_readl(chdat->tbase, TUSB_DMA_EP_MAP); | 89 | u32 reg = musb_readl(chdat->tbase, TUSB_DMA_EP_MAP); |
| 90 | 90 | ||
| 91 | if (reg != 0) { | 91 | if (reg != 0) { |
| 92 | dev_dbg(musb->controller, "ep%i dmareq0 is busy for ep%i\n", | 92 | dev_dbg(chdat->musb->controller, "ep%i dmareq0 is busy for ep%i\n", |
| 93 | chdat->epnum, reg & 0xf); | 93 | chdat->epnum, reg & 0xf); |
| 94 | return -EAGAIN; | 94 | return -EAGAIN; |
| 95 | } | 95 | } |
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c index ba79dbf5adbc..cb2d451d511e 100644 --- a/drivers/usb/renesas_usbhs/mod_gadget.c +++ b/drivers/usb/renesas_usbhs/mod_gadget.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| 15 | * | 15 | * |
| 16 | */ | 16 | */ |
| 17 | #include <linux/dma-mapping.h> | ||
| 17 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 18 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 19 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
| @@ -76,7 +77,7 @@ struct usbhsg_recip_handle { | |||
| 76 | struct usbhsg_gpriv, mod) | 77 | struct usbhsg_gpriv, mod) |
| 77 | 78 | ||
| 78 | #define __usbhsg_for_each_uep(start, pos, g, i) \ | 79 | #define __usbhsg_for_each_uep(start, pos, g, i) \ |
| 79 | for (i = start, pos = (g)->uep; \ | 80 | for (i = start, pos = (g)->uep + i; \ |
| 80 | i < (g)->uep_size; \ | 81 | i < (g)->uep_size; \ |
| 81 | i++, pos = (g)->uep + i) | 82 | i++, pos = (g)->uep + i) |
| 82 | 83 | ||
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 2e06b90aa1f8..78a2cf9551cc 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
| @@ -151,6 +151,7 @@ static struct ftdi_sio_quirk ftdi_stmclite_quirk = { | |||
| 151 | * /sys/bus/usb/ftdi_sio/new_id, then send patch/report! | 151 | * /sys/bus/usb/ftdi_sio/new_id, then send patch/report! |
| 152 | */ | 152 | */ |
| 153 | static struct usb_device_id id_table_combined [] = { | 153 | static struct usb_device_id id_table_combined [] = { |
| 154 | { USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) }, | ||
| 154 | { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) }, | 155 | { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) }, |
| 155 | { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) }, | 156 | { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) }, |
| 156 | { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, | 157 | { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, |
| @@ -1171,7 +1172,7 @@ static __u32 get_ftdi_divisor(struct tty_struct *tty, | |||
| 1171 | case FT2232H: /* FT2232H chip */ | 1172 | case FT2232H: /* FT2232H chip */ |
| 1172 | case FT4232H: /* FT4232H chip */ | 1173 | case FT4232H: /* FT4232H chip */ |
| 1173 | case FT232H: /* FT232H chip */ | 1174 | case FT232H: /* FT232H chip */ |
| 1174 | if ((baud <= 12000000) & (baud >= 1200)) { | 1175 | if ((baud <= 12000000) && (baud >= 1200)) { |
| 1175 | div_value = ftdi_2232h_baud_to_divisor(baud); | 1176 | div_value = ftdi_2232h_baud_to_divisor(baud); |
| 1176 | } else if (baud < 1200) { | 1177 | } else if (baud < 1200) { |
| 1177 | div_value = ftdi_232bm_baud_to_divisor(baud); | 1178 | div_value = ftdi_232bm_baud_to_divisor(baud); |
| @@ -1205,7 +1206,10 @@ static int change_speed(struct tty_struct *tty, struct usb_serial_port *port) | |||
| 1205 | urb_index_value = get_ftdi_divisor(tty, port); | 1206 | urb_index_value = get_ftdi_divisor(tty, port); |
| 1206 | urb_value = (__u16)urb_index_value; | 1207 | urb_value = (__u16)urb_index_value; |
| 1207 | urb_index = (__u16)(urb_index_value >> 16); | 1208 | urb_index = (__u16)(urb_index_value >> 16); |
| 1208 | if (priv->interface) { /* FT2232C */ | 1209 | if ((priv->chip_type == FT2232C) || (priv->chip_type == FT2232H) || |
| 1210 | (priv->chip_type == FT4232H) || (priv->chip_type == FT232H)) { | ||
| 1211 | /* Probably the BM type needs the MSB of the encoded fractional | ||
| 1212 | * divider also moved like for the chips above. Any infos? */ | ||
| 1209 | urb_index = (__u16)((urb_index << 8) | priv->interface); | 1213 | urb_index = (__u16)((urb_index << 8) | priv->interface); |
| 1210 | } | 1214 | } |
| 1211 | 1215 | ||
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 19156d1049fe..bf5227ad3ef7 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h | |||
| @@ -1159,4 +1159,8 @@ | |||
| 1159 | /* USB-Nano-485*/ | 1159 | /* USB-Nano-485*/ |
| 1160 | #define FTDI_CTI_NANO_PID 0xF60B | 1160 | #define FTDI_CTI_NANO_PID 0xF60B |
| 1161 | 1161 | ||
| 1162 | 1162 | /* | |
| 1163 | * ZeitControl cardsystems GmbH rfid-readers http://zeitconrol.de | ||
| 1164 | */ | ||
| 1165 | /* TagTracer MIFARE*/ | ||
| 1166 | #define FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID 0xF7C0 | ||
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 60b25d8ea0e2..815656198914 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
| @@ -148,6 +148,10 @@ static void option_instat_callback(struct urb *urb); | |||
| 148 | #define HUAWEI_PRODUCT_K4505 0x1464 | 148 | #define HUAWEI_PRODUCT_K4505 0x1464 |
| 149 | #define HUAWEI_PRODUCT_K3765 0x1465 | 149 | #define HUAWEI_PRODUCT_K3765 0x1465 |
| 150 | #define HUAWEI_PRODUCT_E14AC 0x14AC | 150 | #define HUAWEI_PRODUCT_E14AC 0x14AC |
| 151 | #define HUAWEI_PRODUCT_K3770 0x14C9 | ||
| 152 | #define HUAWEI_PRODUCT_K3771 0x14CA | ||
| 153 | #define HUAWEI_PRODUCT_K4510 0x14CB | ||
| 154 | #define HUAWEI_PRODUCT_K4511 0x14CC | ||
| 151 | #define HUAWEI_PRODUCT_ETS1220 0x1803 | 155 | #define HUAWEI_PRODUCT_ETS1220 0x1803 |
| 152 | #define HUAWEI_PRODUCT_E353 0x1506 | 156 | #define HUAWEI_PRODUCT_E353 0x1506 |
| 153 | 157 | ||
| @@ -547,6 +551,14 @@ static const struct usb_device_id option_ids[] = { | |||
| 547 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, | 551 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, |
| 548 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, | 552 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, |
| 549 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, | 553 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, |
| 554 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, | ||
| 555 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, | ||
| 556 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, | ||
| 557 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) }, | ||
| 558 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) }, | ||
| 559 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) }, | ||
| 560 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) }, | ||
| 561 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) }, | ||
| 550 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, | 562 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, |
| 551 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, | 563 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, |
| 552 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, | 564 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, |
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index 54a9dab1f33b..aeccc7f0a93c 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c | |||
| @@ -45,6 +45,7 @@ static const struct usb_device_id id_table[] = { | |||
| 45 | {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */ | 45 | {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */ |
| 46 | {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */ | 46 | {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */ |
| 47 | {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */ | 47 | {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */ |
| 48 | {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */ | ||
| 48 | {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */ | 49 | {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */ |
| 49 | {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ | 50 | {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ |
| 50 | {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */ | 51 | {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */ |
| @@ -78,6 +79,7 @@ static const struct usb_device_id id_table[] = { | |||
| 78 | {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ | 79 | {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ |
| 79 | {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ | 80 | {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ |
| 80 | {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ | 81 | {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ |
| 82 | {USB_DEVICE(0x1199, 0x9011)}, /* Sierra Wireless Gobi 2000 Modem device (MC8305) */ | ||
| 81 | {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */ | 83 | {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */ |
| 82 | {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */ | 84 | {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */ |
| 83 | {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */ | 85 | {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */ |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index ccff3483eebc..3041a974faf3 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
| @@ -1988,6 +1988,16 @@ UNUSUAL_DEV( 0x4146, 0xba01, 0x0100, 0x0100, | |||
| 1988 | "Micro Mini 1GB", | 1988 | "Micro Mini 1GB", |
| 1989 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ), | 1989 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ), |
| 1990 | 1990 | ||
| 1991 | /* | ||
| 1992 | * Nick Bowler <nbowler@elliptictech.com> | ||
| 1993 | * SCSI stack spams (otherwise harmless) error messages. | ||
| 1994 | */ | ||
| 1995 | UNUSUAL_DEV( 0xc251, 0x4003, 0x0100, 0x0100, | ||
| 1996 | "Keil Software, Inc.", | ||
| 1997 | "V2M MotherBoard", | ||
| 1998 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, | ||
| 1999 | US_FL_NOT_LOCKABLE), | ||
| 2000 | |||
| 1991 | /* Reported by Andrew Simmons <andrew.simmons@gmail.com> */ | 2001 | /* Reported by Andrew Simmons <andrew.simmons@gmail.com> */ |
| 1992 | UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001, | 2002 | UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001, |
| 1993 | "DataStor", | 2003 | "DataStor", |
