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/at91_udc.c | 1 | ||||
| -rw-r--r-- | drivers/usb/gadget/net2272.c | 2 | ||||
| -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/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/renesas_usbhs/mod_gadget.c | 2 | ||||
| -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 |
15 files changed, 77 insertions, 18 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/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/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/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/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/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c index e7101dc31e41..cb2d451d511e 100644 --- a/drivers/usb/renesas_usbhs/mod_gadget.c +++ b/drivers/usb/renesas_usbhs/mod_gadget.c | |||
| @@ -77,7 +77,7 @@ struct usbhsg_recip_handle { | |||
| 77 | struct usbhsg_gpriv, mod) | 77 | struct usbhsg_gpriv, mod) |
| 78 | 78 | ||
| 79 | #define __usbhsg_for_each_uep(start, pos, g, i) \ | 79 | #define __usbhsg_for_each_uep(start, pos, g, i) \ |
| 80 | for (i = start, pos = (g)->uep; \ | 80 | for (i = start, pos = (g)->uep + i; \ |
| 81 | i < (g)->uep_size; \ | 81 | i < (g)->uep_size; \ |
| 82 | i++, pos = (g)->uep + i) | 82 | i++, pos = (g)->uep + i) |
| 83 | 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", |
