diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-30 00:27:53 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-30 00:27:53 -0400 |
| commit | fbf4d7ffda0398e8b20aa8b34ca751bf946699ef (patch) | |
| tree | a01290f30aa03e164c8e887cb216da064fbf854c | |
| parent | 4bd27972e2c35b1e9e672ff05e0a781644f9c905 (diff) | |
| parent | bb7e6984ecaebe6989d0e781e303469255871432 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
Revert "USB: EHCI: fix performance regression"
USB: fsl_usb2_udc: fix recursive lock
USB: usb-serial: option: Don't match Huawei driver CD images
USB: pl2303: another product ID
USB: add another scanner quirk
USB: Add support for ROKR W5 in unusual_devs.h
USB: Fix M600i unusual_devs entry
USB: usb-storage: unusual_devs update for Cypress ATACB
USB: EHCI: fix performance regression
USB: EHCI: fix bug in Iso scheduling
USB: EHCI: fix remote-wakeup regression
USB: EHCI: suppress unwanted error messages
USB: EHCI: fix up root-hub TT mess
USB: add all configs to the "descriptors" attribute
USB: fix possible deadlock involving sysfs attributes
USB: Firmware loader driver for USB Apple iSight camera
USB: FTDI_SIO : Add support for Matrix Orbital PID Range
26 files changed, 812 insertions, 96 deletions
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c index c1cb94e9f242..7e912f21fd36 100644 --- a/drivers/usb/core/generic.c +++ b/drivers/usb/core/generic.c | |||
| @@ -155,9 +155,6 @@ static int generic_probe(struct usb_device *udev) | |||
| 155 | { | 155 | { |
| 156 | int err, c; | 156 | int err, c; |
| 157 | 157 | ||
| 158 | /* put device-specific files into sysfs */ | ||
| 159 | usb_create_sysfs_dev_files(udev); | ||
| 160 | |||
| 161 | /* Choose and set the configuration. This registers the interfaces | 158 | /* Choose and set the configuration. This registers the interfaces |
| 162 | * with the driver core and lets interface drivers bind to them. | 159 | * with the driver core and lets interface drivers bind to them. |
| 163 | */ | 160 | */ |
| @@ -189,8 +186,6 @@ static void generic_disconnect(struct usb_device *udev) | |||
| 189 | * unconfigure the device */ | 186 | * unconfigure the device */ |
| 190 | if (udev->actconfig) | 187 | if (udev->actconfig) |
| 191 | usb_set_configuration(udev, -1); | 188 | usb_set_configuration(udev, -1); |
| 192 | |||
| 193 | usb_remove_sysfs_dev_files(udev); | ||
| 194 | } | 189 | } |
| 195 | 190 | ||
| 196 | #ifdef CONFIG_PM | 191 | #ifdef CONFIG_PM |
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h index 1e4b81e9eb50..a0bf5df6cb6f 100644 --- a/drivers/usb/core/hcd.h +++ b/drivers/usb/core/hcd.h | |||
| @@ -213,6 +213,8 @@ struct hc_driver { | |||
| 213 | 213 | ||
| 214 | /* force handover of high-speed port to full-speed companion */ | 214 | /* force handover of high-speed port to full-speed companion */ |
| 215 | void (*relinquish_port)(struct usb_hcd *, int); | 215 | void (*relinquish_port)(struct usb_hcd *, int); |
| 216 | /* has a port been handed over to a companion? */ | ||
| 217 | int (*port_handed_over)(struct usb_hcd *, int); | ||
| 216 | }; | 218 | }; |
| 217 | 219 | ||
| 218 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); | 220 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index eb57fcc701d7..8eb4da332f56 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
| @@ -1326,6 +1326,12 @@ void usb_disconnect(struct usb_device **pdev) | |||
| 1326 | 1326 | ||
| 1327 | usb_unlock_device(udev); | 1327 | usb_unlock_device(udev); |
| 1328 | 1328 | ||
| 1329 | /* Remove the device-specific files from sysfs. This must be | ||
| 1330 | * done with udev unlocked, because some of the attribute | ||
| 1331 | * routines try to acquire the device lock. | ||
| 1332 | */ | ||
| 1333 | usb_remove_sysfs_dev_files(udev); | ||
| 1334 | |||
| 1329 | /* Unregister the device. The device driver is responsible | 1335 | /* Unregister the device. The device driver is responsible |
| 1330 | * for removing the device files from usbfs and sysfs and for | 1336 | * for removing the device files from usbfs and sysfs and for |
| 1331 | * de-configuring the device. | 1337 | * de-configuring the device. |
| @@ -1541,6 +1547,9 @@ int usb_new_device(struct usb_device *udev) | |||
| 1541 | goto fail; | 1547 | goto fail; |
| 1542 | } | 1548 | } |
| 1543 | 1549 | ||
| 1550 | /* put device-specific files into sysfs */ | ||
| 1551 | usb_create_sysfs_dev_files(udev); | ||
| 1552 | |||
| 1544 | /* Tell the world! */ | 1553 | /* Tell the world! */ |
| 1545 | announce_device(udev); | 1554 | announce_device(udev); |
| 1546 | return err; | 1555 | return err; |
| @@ -2744,7 +2753,11 @@ loop: | |||
| 2744 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) | 2753 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) |
| 2745 | break; | 2754 | break; |
| 2746 | } | 2755 | } |
| 2747 | dev_err(hub_dev, "unable to enumerate USB device on port %d\n", port1); | 2756 | if (hub->hdev->parent || |
| 2757 | !hcd->driver->port_handed_over || | ||
| 2758 | !(hcd->driver->port_handed_over)(hcd, port1)) | ||
| 2759 | dev_err(hub_dev, "unable to enumerate USB device on port %d\n", | ||
| 2760 | port1); | ||
| 2748 | 2761 | ||
| 2749 | done: | 2762 | done: |
| 2750 | hub_port_disable(hub, port1, 1); | 2763 | hub_port_disable(hub, port1, 1); |
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 2e2019390290..3da1ab4b389d 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c | |||
| @@ -47,6 +47,10 @@ static const struct usb_device_id usb_quirk_list[] = { | |||
| 47 | /* Edirol SD-20 */ | 47 | /* Edirol SD-20 */ |
| 48 | { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, | 48 | { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, |
| 49 | 49 | ||
| 50 | /* Avision AV600U */ | ||
| 51 | { USB_DEVICE(0x0638, 0x0a13), .driver_info = | ||
| 52 | USB_QUIRK_STRING_FETCH_255 }, | ||
| 53 | |||
| 50 | /* M-Systems Flash Disk Pioneers */ | 54 | /* M-Systems Flash Disk Pioneers */ |
| 51 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, | 55 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, |
| 52 | 56 | ||
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index c783cb111847..5e1f5d55bf04 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c | |||
| @@ -588,35 +588,33 @@ read_descriptors(struct kobject *kobj, struct bin_attribute *attr, | |||
| 588 | container_of(kobj, struct device, kobj)); | 588 | container_of(kobj, struct device, kobj)); |
| 589 | size_t nleft = count; | 589 | size_t nleft = count; |
| 590 | size_t srclen, n; | 590 | size_t srclen, n; |
| 591 | int cfgno; | ||
| 592 | void *src; | ||
| 591 | 593 | ||
| 592 | usb_lock_device(udev); | 594 | /* The binary attribute begins with the device descriptor. |
| 593 | 595 | * Following that are the raw descriptor entries for all the | |
| 594 | /* The binary attribute begins with the device descriptor */ | 596 | * configurations (config plus subsidiary descriptors). |
| 595 | srclen = sizeof(struct usb_device_descriptor); | ||
| 596 | if (off < srclen) { | ||
| 597 | n = min_t(size_t, nleft, srclen - off); | ||
| 598 | memcpy(buf, off + (char *) &udev->descriptor, n); | ||
| 599 | nleft -= n; | ||
| 600 | buf += n; | ||
| 601 | off = 0; | ||
| 602 | } else { | ||
| 603 | off -= srclen; | ||
| 604 | } | ||
| 605 | |||
| 606 | /* Then follows the raw descriptor entry for the current | ||
| 607 | * configuration (config plus subsidiary descriptors). | ||
| 608 | */ | 597 | */ |
| 609 | if (udev->actconfig) { | 598 | for (cfgno = -1; cfgno < udev->descriptor.bNumConfigurations && |
| 610 | int cfgno = udev->actconfig - udev->config; | 599 | nleft > 0; ++cfgno) { |
| 611 | 600 | if (cfgno < 0) { | |
| 612 | srclen = __le16_to_cpu(udev->actconfig->desc.wTotalLength); | 601 | src = &udev->descriptor; |
| 602 | srclen = sizeof(struct usb_device_descriptor); | ||
| 603 | } else { | ||
| 604 | src = udev->rawdescriptors[cfgno]; | ||
| 605 | srclen = __le16_to_cpu(udev->config[cfgno].desc. | ||
| 606 | wTotalLength); | ||
| 607 | } | ||
| 613 | if (off < srclen) { | 608 | if (off < srclen) { |
| 614 | n = min_t(size_t, nleft, srclen - off); | 609 | n = min(nleft, srclen - (size_t) off); |
| 615 | memcpy(buf, off + udev->rawdescriptors[cfgno], n); | 610 | memcpy(buf, src + off, n); |
| 616 | nleft -= n; | 611 | nleft -= n; |
| 612 | buf += n; | ||
| 613 | off = 0; | ||
| 614 | } else { | ||
| 615 | off -= srclen; | ||
| 617 | } | 616 | } |
| 618 | } | 617 | } |
| 619 | usb_unlock_device(udev); | ||
| 620 | return count - nleft; | 618 | return count - nleft; |
| 621 | } | 619 | } |
| 622 | 620 | ||
diff --git a/drivers/usb/gadget/fsl_usb2_udc.c b/drivers/usb/gadget/fsl_usb2_udc.c index 651b82701394..18687543d7fa 100644 --- a/drivers/usb/gadget/fsl_usb2_udc.c +++ b/drivers/usb/gadget/fsl_usb2_udc.c | |||
| @@ -1627,7 +1627,9 @@ static int reset_queues(struct fsl_udc *udc) | |||
| 1627 | udc_reset_ep_queue(udc, pipe); | 1627 | udc_reset_ep_queue(udc, pipe); |
| 1628 | 1628 | ||
| 1629 | /* report disconnect; the driver is already quiesced */ | 1629 | /* report disconnect; the driver is already quiesced */ |
| 1630 | spin_unlock(&udc->lock); | ||
| 1630 | udc->driver->disconnect(&udc->gadget); | 1631 | udc->driver->disconnect(&udc->gadget); |
| 1632 | spin_lock(&udc->lock); | ||
| 1631 | 1633 | ||
| 1632 | return 0; | 1634 | return 0; |
| 1633 | } | 1635 | } |
diff --git a/drivers/usb/host/ehci-au1xxx.c b/drivers/usb/host/ehci-au1xxx.c index 8b5f991e949c..08a4335401a9 100644 --- a/drivers/usb/host/ehci-au1xxx.c +++ b/drivers/usb/host/ehci-au1xxx.c | |||
| @@ -223,6 +223,7 @@ static const struct hc_driver ehci_au1xxx_hc_driver = { | |||
| 223 | .bus_suspend = ehci_bus_suspend, | 223 | .bus_suspend = ehci_bus_suspend, |
| 224 | .bus_resume = ehci_bus_resume, | 224 | .bus_resume = ehci_bus_resume, |
| 225 | .relinquish_port = ehci_relinquish_port, | 225 | .relinquish_port = ehci_relinquish_port, |
| 226 | .port_handed_over = ehci_port_handed_over, | ||
| 226 | }; | 227 | }; |
| 227 | 228 | ||
| 228 | /*-------------------------------------------------------------------------*/ | 229 | /*-------------------------------------------------------------------------*/ |
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 6d9bed6c1f48..7370d6187c64 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c | |||
| @@ -269,7 +269,7 @@ static int ehci_fsl_setup(struct usb_hcd *hcd) | |||
| 269 | if (retval) | 269 | if (retval) |
| 270 | return retval; | 270 | return retval; |
| 271 | 271 | ||
| 272 | ehci->is_tdi_rh_tt = 1; | 272 | hcd->has_tt = 1; |
| 273 | 273 | ||
| 274 | ehci->sbrn = 0x20; | 274 | ehci->sbrn = 0x20; |
| 275 | 275 | ||
| @@ -295,10 +295,6 @@ static const struct hc_driver ehci_fsl_hc_driver = { | |||
| 295 | */ | 295 | */ |
| 296 | .reset = ehci_fsl_setup, | 296 | .reset = ehci_fsl_setup, |
| 297 | .start = ehci_run, | 297 | .start = ehci_run, |
| 298 | #ifdef CONFIG_PM | ||
| 299 | .suspend = ehci_bus_suspend, | ||
| 300 | .resume = ehci_bus_resume, | ||
| 301 | #endif | ||
| 302 | .stop = ehci_stop, | 298 | .stop = ehci_stop, |
| 303 | .shutdown = ehci_shutdown, | 299 | .shutdown = ehci_shutdown, |
| 304 | 300 | ||
| @@ -322,6 +318,7 @@ static const struct hc_driver ehci_fsl_hc_driver = { | |||
| 322 | .bus_suspend = ehci_bus_suspend, | 318 | .bus_suspend = ehci_bus_suspend, |
| 323 | .bus_resume = ehci_bus_resume, | 319 | .bus_resume = ehci_bus_resume, |
| 324 | .relinquish_port = ehci_relinquish_port, | 320 | .relinquish_port = ehci_relinquish_port, |
| 321 | .port_handed_over = ehci_port_handed_over, | ||
| 325 | }; | 322 | }; |
| 326 | 323 | ||
| 327 | static int ehci_fsl_drv_probe(struct platform_device *pdev) | 324 | static int ehci_fsl_drv_probe(struct platform_device *pdev) |
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 382587c4457c..740835bb8575 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
| @@ -609,7 +609,7 @@ static int ehci_hub_control ( | |||
| 609 | } | 609 | } |
| 610 | break; | 610 | break; |
| 611 | case USB_PORT_FEAT_C_SUSPEND: | 611 | case USB_PORT_FEAT_C_SUSPEND: |
| 612 | /* we auto-clear this feature */ | 612 | clear_bit(wIndex, &ehci->port_c_suspend); |
| 613 | break; | 613 | break; |
| 614 | case USB_PORT_FEAT_POWER: | 614 | case USB_PORT_FEAT_POWER: |
| 615 | if (HCS_PPC (ehci->hcs_params)) | 615 | if (HCS_PPC (ehci->hcs_params)) |
| @@ -688,7 +688,7 @@ static int ehci_hub_control ( | |||
| 688 | /* resume completed? */ | 688 | /* resume completed? */ |
| 689 | else if (time_after_eq(jiffies, | 689 | else if (time_after_eq(jiffies, |
| 690 | ehci->reset_done[wIndex])) { | 690 | ehci->reset_done[wIndex])) { |
| 691 | status |= 1 << USB_PORT_FEAT_C_SUSPEND; | 691 | set_bit(wIndex, &ehci->port_c_suspend); |
| 692 | ehci->reset_done[wIndex] = 0; | 692 | ehci->reset_done[wIndex] = 0; |
| 693 | 693 | ||
| 694 | /* stop resume signaling */ | 694 | /* stop resume signaling */ |
| @@ -765,6 +765,8 @@ static int ehci_hub_control ( | |||
| 765 | status |= 1 << USB_PORT_FEAT_RESET; | 765 | status |= 1 << USB_PORT_FEAT_RESET; |
| 766 | if (temp & PORT_POWER) | 766 | if (temp & PORT_POWER) |
| 767 | status |= 1 << USB_PORT_FEAT_POWER; | 767 | status |= 1 << USB_PORT_FEAT_POWER; |
| 768 | if (test_bit(wIndex, &ehci->port_c_suspend)) | ||
| 769 | status |= 1 << USB_PORT_FEAT_C_SUSPEND; | ||
| 768 | 770 | ||
| 769 | #ifndef VERBOSE_DEBUG | 771 | #ifndef VERBOSE_DEBUG |
| 770 | if (status & ~0xffff) /* only if wPortChange is interesting */ | 772 | if (status & ~0xffff) /* only if wPortChange is interesting */ |
| @@ -875,3 +877,13 @@ static void ehci_relinquish_port(struct usb_hcd *hcd, int portnum) | |||
| 875 | set_owner(ehci, --portnum, PORT_OWNER); | 877 | set_owner(ehci, --portnum, PORT_OWNER); |
| 876 | } | 878 | } |
| 877 | 879 | ||
| 880 | static int ehci_port_handed_over(struct usb_hcd *hcd, int portnum) | ||
| 881 | { | ||
| 882 | struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
| 883 | u32 __iomem *reg; | ||
| 884 | |||
| 885 | if (ehci_is_TDI(ehci)) | ||
| 886 | return 0; | ||
| 887 | reg = &ehci->regs->port_status[portnum - 1]; | ||
| 888 | return ehci_readl(ehci, reg) & PORT_OWNER; | ||
| 889 | } | ||
diff --git a/drivers/usb/host/ehci-ixp4xx.c b/drivers/usb/host/ehci-ixp4xx.c index 601c8795a854..9d042f220097 100644 --- a/drivers/usb/host/ehci-ixp4xx.c +++ b/drivers/usb/host/ehci-ixp4xx.c | |||
| @@ -26,7 +26,7 @@ static int ixp4xx_ehci_init(struct usb_hcd *hcd) | |||
| 26 | + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); | 26 | + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); |
| 27 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); | 27 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); |
| 28 | 28 | ||
| 29 | ehci->is_tdi_rh_tt = 1; | 29 | hcd->has_tt = 1; |
| 30 | ehci_reset(ehci); | 30 | ehci_reset(ehci); |
| 31 | 31 | ||
| 32 | retval = ehci_init(hcd); | 32 | retval = ehci_init(hcd); |
| @@ -58,6 +58,8 @@ static const struct hc_driver ixp4xx_ehci_hc_driver = { | |||
| 58 | .bus_suspend = ehci_bus_suspend, | 58 | .bus_suspend = ehci_bus_suspend, |
| 59 | .bus_resume = ehci_bus_resume, | 59 | .bus_resume = ehci_bus_resume, |
| 60 | #endif | 60 | #endif |
| 61 | .relinquish_port = ehci_relinquish_port, | ||
| 62 | .port_handed_over = ehci_port_handed_over, | ||
| 61 | }; | 63 | }; |
| 62 | 64 | ||
| 63 | static int ixp4xx_ehci_probe(struct platform_device *pdev) | 65 | static int ixp4xx_ehci_probe(struct platform_device *pdev) |
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c index 3adfda813a7b..ab625f0ba1d9 100644 --- a/drivers/usb/host/ehci-orion.c +++ b/drivers/usb/host/ehci-orion.c | |||
| @@ -139,10 +139,6 @@ static const struct hc_driver ehci_orion_hc_driver = { | |||
| 139 | */ | 139 | */ |
| 140 | .reset = ehci_orion_setup, | 140 | .reset = ehci_orion_setup, |
| 141 | .start = ehci_run, | 141 | .start = ehci_run, |
| 142 | #ifdef CONFIG_PM | ||
| 143 | .suspend = ehci_bus_suspend, | ||
| 144 | .resume = ehci_bus_resume, | ||
| 145 | #endif | ||
| 146 | .stop = ehci_stop, | 142 | .stop = ehci_stop, |
| 147 | .shutdown = ehci_shutdown, | 143 | .shutdown = ehci_shutdown, |
| 148 | 144 | ||
| @@ -165,6 +161,8 @@ static const struct hc_driver ehci_orion_hc_driver = { | |||
| 165 | .hub_control = ehci_hub_control, | 161 | .hub_control = ehci_hub_control, |
| 166 | .bus_suspend = ehci_bus_suspend, | 162 | .bus_suspend = ehci_bus_suspend, |
| 167 | .bus_resume = ehci_bus_resume, | 163 | .bus_resume = ehci_bus_resume, |
| 164 | .relinquish_port = ehci_relinquish_port, | ||
| 165 | .port_handed_over = ehci_port_handed_over, | ||
| 168 | }; | 166 | }; |
| 169 | 167 | ||
| 170 | static void __init | 168 | static void __init |
| @@ -250,7 +248,7 @@ static int __init ehci_orion_drv_probe(struct platform_device *pdev) | |||
| 250 | ehci->regs = hcd->regs + 0x100 + | 248 | ehci->regs = hcd->regs + 0x100 + |
| 251 | HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); | 249 | HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); |
| 252 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); | 250 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); |
| 253 | ehci->is_tdi_rh_tt = 1; | 251 | hcd->has_tt = 1; |
| 254 | ehci->sbrn = 0x20; | 252 | ehci->sbrn = 0x20; |
| 255 | 253 | ||
| 256 | /* | 254 | /* |
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c index 5bb7f6bb13f3..c46a58f9181d 100644 --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c | |||
| @@ -129,7 +129,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd) | |||
| 129 | switch (pdev->vendor) { | 129 | switch (pdev->vendor) { |
| 130 | case PCI_VENDOR_ID_TDI: | 130 | case PCI_VENDOR_ID_TDI: |
| 131 | if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { | 131 | if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { |
| 132 | ehci->is_tdi_rh_tt = 1; | ||
| 133 | hcd->has_tt = 1; | 132 | hcd->has_tt = 1; |
| 134 | tdi_reset(ehci); | 133 | tdi_reset(ehci); |
| 135 | } | 134 | } |
| @@ -379,7 +378,8 @@ static const struct hc_driver ehci_pci_hc_driver = { | |||
| 379 | .hub_control = ehci_hub_control, | 378 | .hub_control = ehci_hub_control, |
| 380 | .bus_suspend = ehci_bus_suspend, | 379 | .bus_suspend = ehci_bus_suspend, |
| 381 | .bus_resume = ehci_bus_resume, | 380 | .bus_resume = ehci_bus_resume, |
| 382 | .relinquish_port = ehci_relinquish_port, | 381 | .relinquish_port = ehci_relinquish_port, |
| 382 | .port_handed_over = ehci_port_handed_over, | ||
| 383 | }; | 383 | }; |
| 384 | 384 | ||
| 385 | /*-------------------------------------------------------------------------*/ | 385 | /*-------------------------------------------------------------------------*/ |
diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c index ee305b1f99ff..b018deed2e8f 100644 --- a/drivers/usb/host/ehci-ppc-of.c +++ b/drivers/usb/host/ehci-ppc-of.c | |||
| @@ -76,6 +76,8 @@ static const struct hc_driver ehci_ppc_of_hc_driver = { | |||
| 76 | .bus_suspend = ehci_bus_suspend, | 76 | .bus_suspend = ehci_bus_suspend, |
| 77 | .bus_resume = ehci_bus_resume, | 77 | .bus_resume = ehci_bus_resume, |
| 78 | #endif | 78 | #endif |
| 79 | .relinquish_port = ehci_relinquish_port, | ||
| 80 | .port_handed_over = ehci_port_handed_over, | ||
| 79 | }; | 81 | }; |
| 80 | 82 | ||
| 81 | 83 | ||
diff --git a/drivers/usb/host/ehci-ppc-soc.c b/drivers/usb/host/ehci-ppc-soc.c index 6c76036783a1..529590eb4037 100644 --- a/drivers/usb/host/ehci-ppc-soc.c +++ b/drivers/usb/host/ehci-ppc-soc.c | |||
| @@ -163,6 +163,7 @@ static const struct hc_driver ehci_ppc_soc_hc_driver = { | |||
| 163 | .bus_suspend = ehci_bus_suspend, | 163 | .bus_suspend = ehci_bus_suspend, |
| 164 | .bus_resume = ehci_bus_resume, | 164 | .bus_resume = ehci_bus_resume, |
| 165 | .relinquish_port = ehci_relinquish_port, | 165 | .relinquish_port = ehci_relinquish_port, |
| 166 | .port_handed_over = ehci_port_handed_over, | ||
| 166 | }; | 167 | }; |
| 167 | 168 | ||
| 168 | static int ehci_hcd_ppc_soc_drv_probe(struct platform_device *pdev) | 169 | static int ehci_hcd_ppc_soc_drv_probe(struct platform_device *pdev) |
diff --git a/drivers/usb/host/ehci-ps3.c b/drivers/usb/host/ehci-ps3.c index 69782221bcf3..37e6abeb794c 100644 --- a/drivers/usb/host/ehci-ps3.c +++ b/drivers/usb/host/ehci-ps3.c | |||
| @@ -73,6 +73,7 @@ static const struct hc_driver ps3_ehci_hc_driver = { | |||
| 73 | .bus_resume = ehci_bus_resume, | 73 | .bus_resume = ehci_bus_resume, |
| 74 | #endif | 74 | #endif |
| 75 | .relinquish_port = ehci_relinquish_port, | 75 | .relinquish_port = ehci_relinquish_port, |
| 76 | .port_handed_over = ehci_port_handed_over, | ||
| 76 | }; | 77 | }; |
| 77 | 78 | ||
| 78 | static int ps3_ehci_probe(struct ps3_system_bus_device *dev) | 79 | static int ps3_ehci_probe(struct ps3_system_bus_device *dev) |
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index be575e46eac3..b7853c8bac0f 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c | |||
| @@ -1349,18 +1349,27 @@ iso_stream_schedule ( | |||
| 1349 | /* when's the last uframe this urb could start? */ | 1349 | /* when's the last uframe this urb could start? */ |
| 1350 | max = now + mod; | 1350 | max = now + mod; |
| 1351 | 1351 | ||
| 1352 | /* typical case: reuse current schedule. stream is still active, | 1352 | /* Typical case: reuse current schedule, stream is still active. |
| 1353 | * and no gaps from host falling behind (irq delays etc) | 1353 | * Hopefully there are no gaps from the host falling behind |
| 1354 | * (irq delays etc), but if there are we'll take the next | ||
| 1355 | * slot in the schedule, implicitly assuming URB_ISO_ASAP. | ||
| 1354 | */ | 1356 | */ |
| 1355 | if (likely (!list_empty (&stream->td_list))) { | 1357 | if (likely (!list_empty (&stream->td_list))) { |
| 1356 | start = stream->next_uframe; | 1358 | start = stream->next_uframe; |
| 1357 | if (start < now) | 1359 | if (start < now) |
| 1358 | start += mod; | 1360 | start += mod; |
| 1359 | if (likely ((start + sched->span) < max)) | 1361 | |
| 1360 | goto ready; | 1362 | /* Fell behind (by up to twice the slop amount)? */ |
| 1361 | /* else fell behind; someday, try to reschedule */ | 1363 | if (start >= max - 2 * 8 * SCHEDULE_SLOP) |
| 1362 | status = -EL2NSYNC; | 1364 | start += stream->interval * DIV_ROUND_UP( |
| 1363 | goto fail; | 1365 | max - start, stream->interval) - mod; |
| 1366 | |||
| 1367 | /* Tried to schedule too far into the future? */ | ||
| 1368 | if (unlikely((start + sched->span) >= max)) { | ||
| 1369 | status = -EFBIG; | ||
| 1370 | goto fail; | ||
| 1371 | } | ||
| 1372 | goto ready; | ||
| 1364 | } | 1373 | } |
| 1365 | 1374 | ||
| 1366 | /* need to schedule; when's the next (u)frame we could start? | 1375 | /* need to schedule; when's the next (u)frame we could start? |
| @@ -1613,6 +1622,9 @@ itd_complete ( | |||
| 1613 | } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) { | 1622 | } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) { |
| 1614 | desc->status = 0; | 1623 | desc->status = 0; |
| 1615 | desc->actual_length = EHCI_ITD_LENGTH (t); | 1624 | desc->actual_length = EHCI_ITD_LENGTH (t); |
| 1625 | } else { | ||
| 1626 | /* URB was too late */ | ||
| 1627 | desc->status = -EXDEV; | ||
| 1616 | } | 1628 | } |
| 1617 | } | 1629 | } |
| 1618 | 1630 | ||
| @@ -2095,7 +2107,7 @@ done: | |||
| 2095 | static void | 2107 | static void |
| 2096 | scan_periodic (struct ehci_hcd *ehci) | 2108 | scan_periodic (struct ehci_hcd *ehci) |
| 2097 | { | 2109 | { |
| 2098 | unsigned frame, clock, now_uframe, mod; | 2110 | unsigned now_uframe, frame, clock, clock_frame, mod; |
| 2099 | unsigned modified; | 2111 | unsigned modified; |
| 2100 | 2112 | ||
| 2101 | mod = ehci->periodic_size << 3; | 2113 | mod = ehci->periodic_size << 3; |
| @@ -2111,6 +2123,7 @@ scan_periodic (struct ehci_hcd *ehci) | |||
| 2111 | else | 2123 | else |
| 2112 | clock = now_uframe + mod - 1; | 2124 | clock = now_uframe + mod - 1; |
| 2113 | clock %= mod; | 2125 | clock %= mod; |
| 2126 | clock_frame = clock >> 3; | ||
| 2114 | 2127 | ||
| 2115 | for (;;) { | 2128 | for (;;) { |
| 2116 | union ehci_shadow q, *q_p; | 2129 | union ehci_shadow q, *q_p; |
| @@ -2157,22 +2170,26 @@ restart: | |||
| 2157 | case Q_TYPE_ITD: | 2170 | case Q_TYPE_ITD: |
| 2158 | /* If this ITD is still active, leave it for | 2171 | /* If this ITD is still active, leave it for |
| 2159 | * later processing ... check the next entry. | 2172 | * later processing ... check the next entry. |
| 2173 | * No need to check for activity unless the | ||
| 2174 | * frame is current. | ||
| 2160 | */ | 2175 | */ |
| 2161 | rmb (); | 2176 | if (frame == clock_frame && live) { |
| 2162 | for (uf = 0; uf < 8 && live; uf++) { | 2177 | rmb(); |
| 2163 | if (0 == (q.itd->hw_transaction [uf] | 2178 | for (uf = 0; uf < 8; uf++) { |
| 2164 | & ITD_ACTIVE(ehci))) | 2179 | if (q.itd->hw_transaction[uf] & |
| 2165 | continue; | 2180 | ITD_ACTIVE(ehci)) |
| 2166 | incomplete = true; | 2181 | break; |
| 2167 | q_p = &q.itd->itd_next; | 2182 | } |
| 2168 | hw_p = &q.itd->hw_next; | 2183 | if (uf < 8) { |
| 2169 | type = Q_NEXT_TYPE(ehci, | 2184 | incomplete = true; |
| 2185 | q_p = &q.itd->itd_next; | ||
| 2186 | hw_p = &q.itd->hw_next; | ||
| 2187 | type = Q_NEXT_TYPE(ehci, | ||
| 2170 | q.itd->hw_next); | 2188 | q.itd->hw_next); |
| 2171 | q = *q_p; | 2189 | q = *q_p; |
| 2172 | break; | 2190 | break; |
| 2191 | } | ||
| 2173 | } | 2192 | } |
| 2174 | if (uf < 8 && live) | ||
| 2175 | break; | ||
| 2176 | 2193 | ||
| 2177 | /* Take finished ITDs out of the schedule | 2194 | /* Take finished ITDs out of the schedule |
| 2178 | * and process them: recycle, maybe report | 2195 | * and process them: recycle, maybe report |
| @@ -2189,9 +2206,12 @@ restart: | |||
| 2189 | case Q_TYPE_SITD: | 2206 | case Q_TYPE_SITD: |
| 2190 | /* If this SITD is still active, leave it for | 2207 | /* If this SITD is still active, leave it for |
| 2191 | * later processing ... check the next entry. | 2208 | * later processing ... check the next entry. |
| 2209 | * No need to check for activity unless the | ||
| 2210 | * frame is current. | ||
| 2192 | */ | 2211 | */ |
| 2193 | if ((q.sitd->hw_results & SITD_ACTIVE(ehci)) | 2212 | if (frame == clock_frame && live && |
| 2194 | && live) { | 2213 | (q.sitd->hw_results & |
| 2214 | SITD_ACTIVE(ehci))) { | ||
| 2195 | incomplete = true; | 2215 | incomplete = true; |
| 2196 | q_p = &q.sitd->sitd_next; | 2216 | q_p = &q.sitd->sitd_next; |
| 2197 | hw_p = &q.sitd->hw_next; | 2217 | hw_p = &q.sitd->hw_next; |
| @@ -2260,6 +2280,7 @@ restart: | |||
| 2260 | 2280 | ||
| 2261 | /* rescan the rest of this frame, then ... */ | 2281 | /* rescan the rest of this frame, then ... */ |
| 2262 | clock = now; | 2282 | clock = now; |
| 2283 | clock_frame = clock >> 3; | ||
| 2263 | } else { | 2284 | } else { |
| 2264 | now_uframe++; | 2285 | now_uframe++; |
| 2265 | now_uframe %= mod; | 2286 | now_uframe %= mod; |
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index bf92d209a1a9..35a03095757e 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h | |||
| @@ -97,6 +97,8 @@ struct ehci_hcd { /* one per controller */ | |||
| 97 | dedicated to the companion controller */ | 97 | dedicated to the companion controller */ |
| 98 | unsigned long owned_ports; /* which ports are | 98 | unsigned long owned_ports; /* which ports are |
| 99 | owned by the companion during a bus suspend */ | 99 | owned by the companion during a bus suspend */ |
| 100 | unsigned long port_c_suspend; /* which ports have | ||
| 101 | the change-suspend feature turned on */ | ||
| 100 | 102 | ||
| 101 | /* per-HC memory pools (could be per-bus, but ...) */ | 103 | /* per-HC memory pools (could be per-bus, but ...) */ |
| 102 | struct dma_pool *qh_pool; /* qh per active urb */ | 104 | struct dma_pool *qh_pool; /* qh per active urb */ |
| @@ -112,7 +114,6 @@ struct ehci_hcd { /* one per controller */ | |||
| 112 | u32 command; | 114 | u32 command; |
| 113 | 115 | ||
| 114 | /* SILICON QUIRKS */ | 116 | /* SILICON QUIRKS */ |
| 115 | unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */ | ||
| 116 | unsigned no_selective_suspend:1; | 117 | unsigned no_selective_suspend:1; |
| 117 | unsigned has_fsl_port_bug:1; /* FreeScale */ | 118 | unsigned has_fsl_port_bug:1; /* FreeScale */ |
| 118 | unsigned big_endian_mmio:1; | 119 | unsigned big_endian_mmio:1; |
| @@ -678,7 +679,7 @@ struct ehci_fstn { | |||
| 678 | * needed (mostly in root hub code). | 679 | * needed (mostly in root hub code). |
| 679 | */ | 680 | */ |
| 680 | 681 | ||
| 681 | #define ehci_is_TDI(e) ((e)->is_tdi_rh_tt) | 682 | #define ehci_is_TDI(e) (ehci_to_hcd(e)->has_tt) |
| 682 | 683 | ||
| 683 | /* Returns the speed of a device attached to a port on the root hub. */ | 684 | /* Returns the speed of a device attached to a port on the root hub. */ |
| 684 | static inline unsigned int | 685 | static inline unsigned int |
diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig index a53db1d4e07a..eb6c06979f3b 100644 --- a/drivers/usb/misc/Kconfig +++ b/drivers/usb/misc/Kconfig | |||
| @@ -269,3 +269,14 @@ config USB_TEST | |||
| 269 | See <http://www.linux-usb.org/usbtest/> for more information, | 269 | See <http://www.linux-usb.org/usbtest/> for more information, |
| 270 | including sample test device firmware and "how to use it". | 270 | including sample test device firmware and "how to use it". |
| 271 | 271 | ||
| 272 | config USB_ISIGHTFW | ||
| 273 | tristate "iSight firmware loading support" | ||
| 274 | depends on USB | ||
| 275 | help | ||
| 276 | This driver loads firmware for USB Apple iSight cameras, allowing | ||
| 277 | them to be driven by the USB video class driver available at | ||
| 278 | http://linux-uvc.berlios.de | ||
| 279 | |||
| 280 | The firmware for this driver must be extracted from the MacOS | ||
| 281 | driver beforehand. Tools for doing so are available at | ||
| 282 | http://bersace03.free.fr | ||
diff --git a/drivers/usb/misc/Makefile b/drivers/usb/misc/Makefile index b68e6b774f1a..aba091cb5ec0 100644 --- a/drivers/usb/misc/Makefile +++ b/drivers/usb/misc/Makefile | |||
| @@ -14,6 +14,7 @@ obj-$(CONFIG_USB_EMI62) += emi62.o | |||
| 14 | obj-$(CONFIG_USB_FTDI_ELAN) += ftdi-elan.o | 14 | obj-$(CONFIG_USB_FTDI_ELAN) += ftdi-elan.o |
| 15 | obj-$(CONFIG_USB_IDMOUSE) += idmouse.o | 15 | obj-$(CONFIG_USB_IDMOUSE) += idmouse.o |
| 16 | obj-$(CONFIG_USB_IOWARRIOR) += iowarrior.o | 16 | obj-$(CONFIG_USB_IOWARRIOR) += iowarrior.o |
| 17 | obj-$(CONFIG_USB_ISIGHTFW) += isight_firmware.o | ||
| 17 | obj-$(CONFIG_USB_LCD) += usblcd.o | 18 | obj-$(CONFIG_USB_LCD) += usblcd.o |
| 18 | obj-$(CONFIG_USB_LD) += ldusb.o | 19 | obj-$(CONFIG_USB_LD) += ldusb.o |
| 19 | obj-$(CONFIG_USB_LED) += usbled.o | 20 | obj-$(CONFIG_USB_LED) += usbled.o |
diff --git a/drivers/usb/misc/isight_firmware.c b/drivers/usb/misc/isight_firmware.c new file mode 100644 index 000000000000..390e04885536 --- /dev/null +++ b/drivers/usb/misc/isight_firmware.c | |||
| @@ -0,0 +1,131 @@ | |||
| 1 | /* | ||
| 2 | * Driver for loading USB isight firmware | ||
| 3 | * | ||
| 4 | * Copyright (C) 2008 Matthew Garrett <mjg@redhat.com> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the Free | ||
| 8 | * Software Foundation, version 2. | ||
| 9 | * | ||
| 10 | * The USB isight cameras in recent Apples are roughly compatible with the USB | ||
| 11 | * video class specification, and can be driven by uvcvideo. However, they | ||
| 12 | * need firmware to be loaded beforehand. After firmware loading, the device | ||
| 13 | * detaches from the USB bus and reattaches with a new device ID. It can then | ||
| 14 | * be claimed by the uvc driver. | ||
| 15 | * | ||
| 16 | * The firmware is non-free and must be extracted by the user. Tools to do this | ||
| 17 | * are available at http://bersace03.free.fr/ift/ | ||
| 18 | * | ||
| 19 | * The isight firmware loading was reverse engineered by Johannes Berg | ||
| 20 | * <johannes@sipsolutions.de>, and this driver is based on code by Ronald | ||
| 21 | * Bultje <rbultje@ronald.bitfreak.net> | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/usb.h> | ||
| 25 | #include <linux/firmware.h> | ||
| 26 | #include <linux/errno.h> | ||
| 27 | #include <linux/module.h> | ||
| 28 | |||
| 29 | static struct usb_device_id id_table[] = { | ||
| 30 | {USB_DEVICE(0x05ac, 0x8300)}, | ||
| 31 | {}, | ||
| 32 | }; | ||
| 33 | |||
| 34 | MODULE_DEVICE_TABLE(usb, id_table); | ||
| 35 | |||
| 36 | static int isight_firmware_load(struct usb_interface *intf, | ||
| 37 | const struct usb_device_id *id) | ||
| 38 | { | ||
| 39 | struct usb_device *dev = interface_to_usbdev(intf); | ||
| 40 | int llen, len, req, ret = 0; | ||
| 41 | const struct firmware *firmware; | ||
| 42 | unsigned char *buf; | ||
| 43 | unsigned char data[4]; | ||
| 44 | char *ptr; | ||
| 45 | |||
| 46 | if (request_firmware(&firmware, "isight.fw", &dev->dev) != 0) { | ||
| 47 | printk(KERN_ERR "Unable to load isight firmware\n"); | ||
| 48 | return -ENODEV; | ||
| 49 | } | ||
| 50 | |||
| 51 | ptr = firmware->data; | ||
| 52 | |||
| 53 | if (usb_control_msg | ||
| 54 | (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\1", 1, | ||
| 55 | 300) != 1) { | ||
| 56 | printk(KERN_ERR | ||
| 57 | "Failed to initialise isight firmware loader\n"); | ||
| 58 | ret = -ENODEV; | ||
| 59 | goto out; | ||
| 60 | } | ||
| 61 | |||
| 62 | while (1) { | ||
| 63 | memcpy(data, ptr, 4); | ||
| 64 | len = (data[0] << 8 | data[1]); | ||
| 65 | req = (data[2] << 8 | data[3]); | ||
| 66 | ptr += 4; | ||
| 67 | |||
| 68 | if (len == 0x8001) | ||
| 69 | break; /* success */ | ||
| 70 | else if (len == 0) | ||
| 71 | continue; | ||
| 72 | |||
| 73 | for (; len > 0; req += 50) { | ||
| 74 | llen = len > 50 ? 50 : len; | ||
| 75 | len -= llen; | ||
| 76 | |||
| 77 | buf = kmalloc(llen, GFP_KERNEL); | ||
| 78 | memcpy(buf, ptr, llen); | ||
| 79 | |||
| 80 | ptr += llen; | ||
| 81 | |||
| 82 | if (usb_control_msg | ||
| 83 | (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, req, 0, | ||
| 84 | buf, llen, 300) != llen) { | ||
| 85 | printk(KERN_ERR | ||
| 86 | "Failed to load isight firmware\n"); | ||
| 87 | kfree(buf); | ||
| 88 | ret = -ENODEV; | ||
| 89 | goto out; | ||
| 90 | } | ||
| 91 | |||
| 92 | kfree(buf); | ||
| 93 | } | ||
| 94 | } | ||
| 95 | if (usb_control_msg | ||
| 96 | (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\0", 1, | ||
| 97 | 300) != 1) { | ||
| 98 | printk(KERN_ERR "isight firmware loading completion failed\n"); | ||
| 99 | ret = -ENODEV; | ||
| 100 | } | ||
| 101 | out: | ||
| 102 | release_firmware(firmware); | ||
| 103 | return ret; | ||
| 104 | } | ||
| 105 | |||
| 106 | static void isight_firmware_disconnect(struct usb_interface *intf) | ||
| 107 | { | ||
| 108 | } | ||
| 109 | |||
| 110 | static struct usb_driver isight_firmware_driver = { | ||
| 111 | .name = "isight_firmware", | ||
| 112 | .probe = isight_firmware_load, | ||
| 113 | .disconnect = isight_firmware_disconnect, | ||
| 114 | .id_table = id_table, | ||
| 115 | }; | ||
| 116 | |||
| 117 | static int __init isight_firmware_init(void) | ||
| 118 | { | ||
| 119 | return usb_register(&isight_firmware_driver); | ||
| 120 | } | ||
| 121 | |||
| 122 | static void __exit isight_firmware_exit(void) | ||
| 123 | { | ||
| 124 | usb_deregister(&isight_firmware_driver); | ||
| 125 | } | ||
| 126 | |||
| 127 | module_init(isight_firmware_init); | ||
| 128 | module_exit(isight_firmware_exit); | ||
| 129 | |||
| 130 | MODULE_LICENSE("GPL"); | ||
| 131 | MODULE_AUTHOR("Matthew Garrett <mjg@redhat.com>"); | ||
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 3cee6feac174..5234e7a3bd2c 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
| @@ -174,8 +174,270 @@ static struct usb_device_id id_table_combined [] = { | |||
| 174 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_4_PID) }, | 174 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_4_PID) }, |
| 175 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_5_PID) }, | 175 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_5_PID) }, |
| 176 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_6_PID) }, | 176 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_6_PID) }, |
| 177 | { USB_DEVICE(MTXORB_VK_VID, MTXORB_VK_PID), | 177 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0100_PID) }, |
| 178 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0101_PID) }, | ||
| 179 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0102_PID) }, | ||
| 180 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0103_PID) }, | ||
| 181 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0104_PID) }, | ||
| 182 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0105_PID) }, | ||
| 183 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0106_PID) }, | ||
| 184 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0107_PID) }, | ||
| 185 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0108_PID) }, | ||
| 186 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0109_PID) }, | ||
| 187 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010A_PID) }, | ||
| 188 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010B_PID) }, | ||
| 189 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010C_PID) }, | ||
| 190 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010D_PID) }, | ||
| 191 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010E_PID) }, | ||
| 192 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010F_PID) }, | ||
| 193 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0110_PID) }, | ||
| 194 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0111_PID) }, | ||
| 195 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0112_PID) }, | ||
| 196 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0113_PID) }, | ||
| 197 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0114_PID) }, | ||
| 198 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0115_PID) }, | ||
| 199 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0116_PID) }, | ||
| 200 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0117_PID) }, | ||
| 201 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0118_PID) }, | ||
| 202 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0119_PID) }, | ||
| 203 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011A_PID) }, | ||
| 204 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011B_PID) }, | ||
| 205 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011C_PID) }, | ||
| 206 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011D_PID) }, | ||
| 207 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011E_PID) }, | ||
| 208 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011F_PID) }, | ||
| 209 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0120_PID) }, | ||
| 210 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0121_PID) }, | ||
| 211 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0122_PID) }, | ||
| 212 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0123_PID) }, | ||
| 213 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0124_PID) }, | ||
| 214 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0125_PID) }, | ||
| 215 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0126_PID) }, | ||
| 216 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0127_PID), | ||
| 178 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | 217 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, |
| 218 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0128_PID) }, | ||
| 219 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0129_PID) }, | ||
| 220 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012A_PID) }, | ||
| 221 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012B_PID) }, | ||
| 222 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012C_PID), | ||
| 223 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 224 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012D_PID) }, | ||
| 225 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012E_PID) }, | ||
| 226 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012F_PID) }, | ||
| 227 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0130_PID) }, | ||
| 228 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0131_PID) }, | ||
| 229 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0132_PID) }, | ||
| 230 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0133_PID) }, | ||
| 231 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0134_PID) }, | ||
| 232 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0135_PID) }, | ||
| 233 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0136_PID) }, | ||
| 234 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0137_PID) }, | ||
| 235 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0138_PID) }, | ||
| 236 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0139_PID) }, | ||
| 237 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013A_PID) }, | ||
| 238 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013B_PID) }, | ||
| 239 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013C_PID) }, | ||
| 240 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013D_PID) }, | ||
| 241 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013E_PID) }, | ||
| 242 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013F_PID) }, | ||
| 243 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0140_PID) }, | ||
| 244 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0141_PID) }, | ||
| 245 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0142_PID) }, | ||
| 246 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0143_PID) }, | ||
| 247 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0144_PID) }, | ||
| 248 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0145_PID) }, | ||
| 249 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0146_PID) }, | ||
| 250 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0147_PID) }, | ||
| 251 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0148_PID) }, | ||
| 252 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0149_PID) }, | ||
| 253 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014A_PID) }, | ||
| 254 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014B_PID) }, | ||
| 255 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014C_PID) }, | ||
| 256 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014D_PID) }, | ||
| 257 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014E_PID) }, | ||
| 258 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014F_PID) }, | ||
| 259 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0150_PID) }, | ||
| 260 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0151_PID) }, | ||
| 261 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0152_PID) }, | ||
| 262 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0153_PID), | ||
| 263 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 264 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0154_PID), | ||
| 265 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 266 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0155_PID), | ||
| 267 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 268 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0156_PID), | ||
| 269 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 270 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0157_PID), | ||
| 271 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 272 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0158_PID), | ||
| 273 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
| 274 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0159_PID) }, | ||
| 275 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015A_PID) }, | ||
| 276 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015B_PID) }, | ||
| 277 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015C_PID) }, | ||
| 278 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015D_PID) }, | ||
| 279 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015E_PID) }, | ||
| 280 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015F_PID) }, | ||
| 281 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0160_PID) }, | ||
| 282 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0161_PID) }, | ||
| 283 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0162_PID) }, | ||
| 284 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0163_PID) }, | ||
| 285 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0164_PID) }, | ||
| 286 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0165_PID) }, | ||
| 287 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0166_PID) }, | ||
| 288 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0167_PID) }, | ||
| 289 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0168_PID) }, | ||
| 290 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0169_PID) }, | ||
| 291 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016A_PID) }, | ||
| 292 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016B_PID) }, | ||
| 293 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016C_PID) }, | ||
| 294 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016D_PID) }, | ||
| 295 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016E_PID) }, | ||
| 296 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016F_PID) }, | ||
| 297 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0170_PID) }, | ||
| 298 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0171_PID) }, | ||
| 299 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0172_PID) }, | ||
| 300 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0173_PID) }, | ||
| 301 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0174_PID) }, | ||
| 302 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0175_PID) }, | ||
| 303 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0176_PID) }, | ||
| 304 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0177_PID) }, | ||
| 305 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0178_PID) }, | ||
| 306 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0179_PID) }, | ||
| 307 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017A_PID) }, | ||
| 308 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017B_PID) }, | ||
| 309 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017C_PID) }, | ||
| 310 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017D_PID) }, | ||
| 311 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017E_PID) }, | ||
| 312 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017F_PID) }, | ||
| 313 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0180_PID) }, | ||
| 314 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0181_PID) }, | ||
| 315 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0182_PID) }, | ||
| 316 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0183_PID) }, | ||
| 317 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0184_PID) }, | ||
| 318 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0185_PID) }, | ||
| 319 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0186_PID) }, | ||
| 320 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0187_PID) }, | ||
| 321 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0188_PID) }, | ||
| 322 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0189_PID) }, | ||
| 323 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018A_PID) }, | ||
| 324 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018B_PID) }, | ||
| 325 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018C_PID) }, | ||
| 326 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018D_PID) }, | ||
| 327 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018E_PID) }, | ||
| 328 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018F_PID) }, | ||
| 329 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0190_PID) }, | ||
| 330 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0191_PID) }, | ||
| 331 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0192_PID) }, | ||
| 332 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0193_PID) }, | ||
| 333 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0194_PID) }, | ||
| 334 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0195_PID) }, | ||
| 335 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0196_PID) }, | ||
| 336 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0197_PID) }, | ||
| 337 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0198_PID) }, | ||
| 338 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0199_PID) }, | ||
| 339 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019A_PID) }, | ||
| 340 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019B_PID) }, | ||
| 341 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019C_PID) }, | ||
| 342 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019D_PID) }, | ||
| 343 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019E_PID) }, | ||
| 344 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019F_PID) }, | ||
| 345 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A0_PID) }, | ||
| 346 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A1_PID) }, | ||
| 347 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A2_PID) }, | ||
| 348 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A3_PID) }, | ||
| 349 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A4_PID) }, | ||
| 350 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A5_PID) }, | ||
| 351 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A6_PID) }, | ||
| 352 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A7_PID) }, | ||
| 353 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A8_PID) }, | ||
| 354 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A9_PID) }, | ||
| 355 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AA_PID) }, | ||
| 356 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AB_PID) }, | ||
| 357 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AC_PID) }, | ||
| 358 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AD_PID) }, | ||
| 359 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AE_PID) }, | ||
| 360 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AF_PID) }, | ||
| 361 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B0_PID) }, | ||
| 362 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B1_PID) }, | ||
| 363 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B2_PID) }, | ||
| 364 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B3_PID) }, | ||
| 365 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B4_PID) }, | ||
| 366 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B5_PID) }, | ||
| 367 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B6_PID) }, | ||
| 368 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B7_PID) }, | ||
| 369 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B8_PID) }, | ||
| 370 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B9_PID) }, | ||
| 371 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BA_PID) }, | ||
| 372 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BB_PID) }, | ||
| 373 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BC_PID) }, | ||
| 374 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BD_PID) }, | ||
| 375 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BE_PID) }, | ||
| 376 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BF_PID) }, | ||
| 377 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C0_PID) }, | ||
| 378 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C1_PID) }, | ||
| 379 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C2_PID) }, | ||
| 380 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C3_PID) }, | ||
| 381 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C4_PID) }, | ||
| 382 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C5_PID) }, | ||
| 383 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C6_PID) }, | ||
| 384 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C7_PID) }, | ||
| 385 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C8_PID) }, | ||
| 386 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C9_PID) }, | ||
| 387 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CA_PID) }, | ||
| 388 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CB_PID) }, | ||
| 389 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CC_PID) }, | ||
| 390 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CD_PID) }, | ||
| 391 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CE_PID) }, | ||
| 392 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CF_PID) }, | ||
| 393 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D0_PID) }, | ||
| 394 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D1_PID) }, | ||
| 395 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D2_PID) }, | ||
| 396 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D3_PID) }, | ||
| 397 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D4_PID) }, | ||
| 398 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D5_PID) }, | ||
| 399 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D6_PID) }, | ||
| 400 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D7_PID) }, | ||
| 401 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D8_PID) }, | ||
| 402 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D9_PID) }, | ||
| 403 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DA_PID) }, | ||
| 404 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DB_PID) }, | ||
| 405 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DC_PID) }, | ||
| 406 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DD_PID) }, | ||
| 407 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DE_PID) }, | ||
| 408 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DF_PID) }, | ||
| 409 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E0_PID) }, | ||
| 410 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E1_PID) }, | ||
| 411 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E2_PID) }, | ||
| 412 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E3_PID) }, | ||
| 413 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E4_PID) }, | ||
| 414 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E5_PID) }, | ||
| 415 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E6_PID) }, | ||
| 416 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E7_PID) }, | ||
| 417 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E8_PID) }, | ||
| 418 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E9_PID) }, | ||
| 419 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EA_PID) }, | ||
| 420 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EB_PID) }, | ||
| 421 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EC_PID) }, | ||
| 422 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01ED_PID) }, | ||
| 423 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EE_PID) }, | ||
| 424 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EF_PID) }, | ||
| 425 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F0_PID) }, | ||
| 426 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F1_PID) }, | ||
| 427 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F2_PID) }, | ||
| 428 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F3_PID) }, | ||
| 429 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F4_PID) }, | ||
| 430 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F5_PID) }, | ||
| 431 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F6_PID) }, | ||
| 432 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F7_PID) }, | ||
| 433 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F8_PID) }, | ||
| 434 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F9_PID) }, | ||
| 435 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FA_PID) }, | ||
| 436 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FB_PID) }, | ||
| 437 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FC_PID) }, | ||
| 438 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FD_PID) }, | ||
| 439 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FE_PID) }, | ||
| 440 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FF_PID) }, | ||
| 179 | { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, | 441 | { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, |
| 180 | { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, | 442 | { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, |
| 181 | { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, | 443 | { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, |
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index a72f2c81d664..06e0ecabb3eb 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h | |||
| @@ -114,11 +114,268 @@ | |||
| 114 | #define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */ | 114 | #define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */ |
| 115 | 115 | ||
| 116 | /* | 116 | /* |
| 117 | * The following are the values for the Matrix Orbital VK204-25-USB | 117 | * The following are the values for the Matrix Orbital FTDI Range |
| 118 | * display, which use the FT232RL. | 118 | * Anything in this range will use an FT232RL. |
| 119 | */ | 119 | */ |
| 120 | #define MTXORB_VK_VID 0x1b3d | 120 | #define MTXORB_VID 0x1B3D |
| 121 | #define MTXORB_VK_PID 0x0158 | 121 | #define MTXORB_FTDI_RANGE_0100_PID 0x0100 |
| 122 | #define MTXORB_FTDI_RANGE_0101_PID 0x0101 | ||
| 123 | #define MTXORB_FTDI_RANGE_0102_PID 0x0102 | ||
| 124 | #define MTXORB_FTDI_RANGE_0103_PID 0x0103 | ||
| 125 | #define MTXORB_FTDI_RANGE_0104_PID 0x0104 | ||
| 126 | #define MTXORB_FTDI_RANGE_0105_PID 0x0105 | ||
| 127 | #define MTXORB_FTDI_RANGE_0106_PID 0x0106 | ||
| 128 | #define MTXORB_FTDI_RANGE_0107_PID 0x0107 | ||
| 129 | #define MTXORB_FTDI_RANGE_0108_PID 0x0108 | ||
| 130 | #define MTXORB_FTDI_RANGE_0109_PID 0x0109 | ||
| 131 | #define MTXORB_FTDI_RANGE_010A_PID 0x010A | ||
| 132 | #define MTXORB_FTDI_RANGE_010B_PID 0x010B | ||
| 133 | #define MTXORB_FTDI_RANGE_010C_PID 0x010C | ||
| 134 | #define MTXORB_FTDI_RANGE_010D_PID 0x010D | ||
| 135 | #define MTXORB_FTDI_RANGE_010E_PID 0x010E | ||
| 136 | #define MTXORB_FTDI_RANGE_010F_PID 0x010F | ||
| 137 | #define MTXORB_FTDI_RANGE_0110_PID 0x0110 | ||
| 138 | #define MTXORB_FTDI_RANGE_0111_PID 0x0111 | ||
| 139 | #define MTXORB_FTDI_RANGE_0112_PID 0x0112 | ||
| 140 | #define MTXORB_FTDI_RANGE_0113_PID 0x0113 | ||
| 141 | #define MTXORB_FTDI_RANGE_0114_PID 0x0114 | ||
| 142 | #define MTXORB_FTDI_RANGE_0115_PID 0x0115 | ||
| 143 | #define MTXORB_FTDI_RANGE_0116_PID 0x0116 | ||
| 144 | #define MTXORB_FTDI_RANGE_0117_PID 0x0117 | ||
| 145 | #define MTXORB_FTDI_RANGE_0118_PID 0x0118 | ||
| 146 | #define MTXORB_FTDI_RANGE_0119_PID 0x0119 | ||
| 147 | #define MTXORB_FTDI_RANGE_011A_PID 0x011A | ||
| 148 | #define MTXORB_FTDI_RANGE_011B_PID 0x011B | ||
| 149 | #define MTXORB_FTDI_RANGE_011C_PID 0x011C | ||
| 150 | #define MTXORB_FTDI_RANGE_011D_PID 0x011D | ||
| 151 | #define MTXORB_FTDI_RANGE_011E_PID 0x011E | ||
| 152 | #define MTXORB_FTDI_RANGE_011F_PID 0x011F | ||
| 153 | #define MTXORB_FTDI_RANGE_0120_PID 0x0120 | ||
| 154 | #define MTXORB_FTDI_RANGE_0121_PID 0x0121 | ||
| 155 | #define MTXORB_FTDI_RANGE_0122_PID 0x0122 | ||
| 156 | #define MTXORB_FTDI_RANGE_0123_PID 0x0123 | ||
| 157 | #define MTXORB_FTDI_RANGE_0124_PID 0x0124 | ||
| 158 | #define MTXORB_FTDI_RANGE_0125_PID 0x0125 | ||
| 159 | #define MTXORB_FTDI_RANGE_0126_PID 0x0126 | ||
| 160 | #define MTXORB_FTDI_RANGE_0127_PID 0x0127 | ||
| 161 | #define MTXORB_FTDI_RANGE_0128_PID 0x0128 | ||
| 162 | #define MTXORB_FTDI_RANGE_0129_PID 0x0129 | ||
| 163 | #define MTXORB_FTDI_RANGE_012A_PID 0x012A | ||
| 164 | #define MTXORB_FTDI_RANGE_012B_PID 0x012B | ||
| 165 | #define MTXORB_FTDI_RANGE_012C_PID 0x012C | ||
| 166 | #define MTXORB_FTDI_RANGE_012D_PID 0x012D | ||
| 167 | #define MTXORB_FTDI_RANGE_012E_PID 0x012E | ||
| 168 | #define MTXORB_FTDI_RANGE_012F_PID 0x012F | ||
| 169 | #define MTXORB_FTDI_RANGE_0130_PID 0x0130 | ||
| 170 | #define MTXORB_FTDI_RANGE_0131_PID 0x0131 | ||
| 171 | #define MTXORB_FTDI_RANGE_0132_PID 0x0132 | ||
| 172 | #define MTXORB_FTDI_RANGE_0133_PID 0x0133 | ||
| 173 | #define MTXORB_FTDI_RANGE_0134_PID 0x0134 | ||
| 174 | #define MTXORB_FTDI_RANGE_0135_PID 0x0135 | ||
| 175 | #define MTXORB_FTDI_RANGE_0136_PID 0x0136 | ||
| 176 | #define MTXORB_FTDI_RANGE_0137_PID 0x0137 | ||
| 177 | #define MTXORB_FTDI_RANGE_0138_PID 0x0138 | ||
| 178 | #define MTXORB_FTDI_RANGE_0139_PID 0x0139 | ||
| 179 | #define MTXORB_FTDI_RANGE_013A_PID 0x013A | ||
| 180 | #define MTXORB_FTDI_RANGE_013B_PID 0x013B | ||
| 181 | #define MTXORB_FTDI_RANGE_013C_PID 0x013C | ||
| 182 | #define MTXORB_FTDI_RANGE_013D_PID 0x013D | ||
| 183 | #define MTXORB_FTDI_RANGE_013E_PID 0x013E | ||
| 184 | #define MTXORB_FTDI_RANGE_013F_PID 0x013F | ||
| 185 | #define MTXORB_FTDI_RANGE_0140_PID 0x0140 | ||
| 186 | #define MTXORB_FTDI_RANGE_0141_PID 0x0141 | ||
| 187 | #define MTXORB_FTDI_RANGE_0142_PID 0x0142 | ||
| 188 | #define MTXORB_FTDI_RANGE_0143_PID 0x0143 | ||
| 189 | #define MTXORB_FTDI_RANGE_0144_PID 0x0144 | ||
| 190 | #define MTXORB_FTDI_RANGE_0145_PID 0x0145 | ||
| 191 | #define MTXORB_FTDI_RANGE_0146_PID 0x0146 | ||
| 192 | #define MTXORB_FTDI_RANGE_0147_PID 0x0147 | ||
| 193 | #define MTXORB_FTDI_RANGE_0148_PID 0x0148 | ||
| 194 | #define MTXORB_FTDI_RANGE_0149_PID 0x0149 | ||
| 195 | #define MTXORB_FTDI_RANGE_014A_PID 0x014A | ||
| 196 | #define MTXORB_FTDI_RANGE_014B_PID 0x014B | ||
| 197 | #define MTXORB_FTDI_RANGE_014C_PID 0x014C | ||
| 198 | #define MTXORB_FTDI_RANGE_014D_PID 0x014D | ||
| 199 | #define MTXORB_FTDI_RANGE_014E_PID 0x014E | ||
| 200 | #define MTXORB_FTDI_RANGE_014F_PID 0x014F | ||
| 201 | #define MTXORB_FTDI_RANGE_0150_PID 0x0150 | ||
| 202 | #define MTXORB_FTDI_RANGE_0151_PID 0x0151 | ||
| 203 | #define MTXORB_FTDI_RANGE_0152_PID 0x0152 | ||
| 204 | #define MTXORB_FTDI_RANGE_0153_PID 0x0153 | ||
| 205 | #define MTXORB_FTDI_RANGE_0154_PID 0x0154 | ||
| 206 | #define MTXORB_FTDI_RANGE_0155_PID 0x0155 | ||
| 207 | #define MTXORB_FTDI_RANGE_0156_PID 0x0156 | ||
| 208 | #define MTXORB_FTDI_RANGE_0157_PID 0x0157 | ||
| 209 | #define MTXORB_FTDI_RANGE_0158_PID 0x0158 | ||
| 210 | #define MTXORB_FTDI_RANGE_0159_PID 0x0159 | ||
| 211 | #define MTXORB_FTDI_RANGE_015A_PID 0x015A | ||
| 212 | #define MTXORB_FTDI_RANGE_015B_PID 0x015B | ||
| 213 | #define MTXORB_FTDI_RANGE_015C_PID 0x015C | ||
| 214 | #define MTXORB_FTDI_RANGE_015D_PID 0x015D | ||
| 215 | #define MTXORB_FTDI_RANGE_015E_PID 0x015E | ||
| 216 | #define MTXORB_FTDI_RANGE_015F_PID 0x015F | ||
| 217 | #define MTXORB_FTDI_RANGE_0160_PID 0x0160 | ||
| 218 | #define MTXORB_FTDI_RANGE_0161_PID 0x0161 | ||
| 219 | #define MTXORB_FTDI_RANGE_0162_PID 0x0162 | ||
| 220 | #define MTXORB_FTDI_RANGE_0163_PID 0x0163 | ||
| 221 | #define MTXORB_FTDI_RANGE_0164_PID 0x0164 | ||
| 222 | #define MTXORB_FTDI_RANGE_0165_PID 0x0165 | ||
| 223 | #define MTXORB_FTDI_RANGE_0166_PID 0x0166 | ||
| 224 | #define MTXORB_FTDI_RANGE_0167_PID 0x0167 | ||
| 225 | #define MTXORB_FTDI_RANGE_0168_PID 0x0168 | ||
| 226 | #define MTXORB_FTDI_RANGE_0169_PID 0x0169 | ||
| 227 | #define MTXORB_FTDI_RANGE_016A_PID 0x016A | ||
| 228 | #define MTXORB_FTDI_RANGE_016B_PID 0x016B | ||
| 229 | #define MTXORB_FTDI_RANGE_016C_PID 0x016C | ||
| 230 | #define MTXORB_FTDI_RANGE_016D_PID 0x016D | ||
| 231 | #define MTXORB_FTDI_RANGE_016E_PID 0x016E | ||
| 232 | #define MTXORB_FTDI_RANGE_016F_PID 0x016F | ||
| 233 | #define MTXORB_FTDI_RANGE_0170_PID 0x0170 | ||
| 234 | #define MTXORB_FTDI_RANGE_0171_PID 0x0171 | ||
| 235 | #define MTXORB_FTDI_RANGE_0172_PID 0x0172 | ||
| 236 | #define MTXORB_FTDI_RANGE_0173_PID 0x0173 | ||
| 237 | #define MTXORB_FTDI_RANGE_0174_PID 0x0174 | ||
| 238 | #define MTXORB_FTDI_RANGE_0175_PID 0x0175 | ||
| 239 | #define MTXORB_FTDI_RANGE_0176_PID 0x0176 | ||
| 240 | #define MTXORB_FTDI_RANGE_0177_PID 0x0177 | ||
| 241 | #define MTXORB_FTDI_RANGE_0178_PID 0x0178 | ||
| 242 | #define MTXORB_FTDI_RANGE_0179_PID 0x0179 | ||
| 243 | #define MTXORB_FTDI_RANGE_017A_PID 0x017A | ||
| 244 | #define MTXORB_FTDI_RANGE_017B_PID 0x017B | ||
| 245 | #define MTXORB_FTDI_RANGE_017C_PID 0x017C | ||
| 246 | #define MTXORB_FTDI_RANGE_017D_PID 0x017D | ||
| 247 | #define MTXORB_FTDI_RANGE_017E_PID 0x017E | ||
| 248 | #define MTXORB_FTDI_RANGE_017F_PID 0x017F | ||
| 249 | #define MTXORB_FTDI_RANGE_0180_PID 0x0180 | ||
| 250 | #define MTXORB_FTDI_RANGE_0181_PID 0x0181 | ||
| 251 | #define MTXORB_FTDI_RANGE_0182_PID 0x0182 | ||
| 252 | #define MTXORB_FTDI_RANGE_0183_PID 0x0183 | ||
| 253 | #define MTXORB_FTDI_RANGE_0184_PID 0x0184 | ||
| 254 | #define MTXORB_FTDI_RANGE_0185_PID 0x0185 | ||
| 255 | #define MTXORB_FTDI_RANGE_0186_PID 0x0186 | ||
| 256 | #define MTXORB_FTDI_RANGE_0187_PID 0x0187 | ||
| 257 | #define MTXORB_FTDI_RANGE_0188_PID 0x0188 | ||
| 258 | #define MTXORB_FTDI_RANGE_0189_PID 0x0189 | ||
| 259 | #define MTXORB_FTDI_RANGE_018A_PID 0x018A | ||
| 260 | #define MTXORB_FTDI_RANGE_018B_PID 0x018B | ||
| 261 | #define MTXORB_FTDI_RANGE_018C_PID 0x018C | ||
| 262 | #define MTXORB_FTDI_RANGE_018D_PID 0x018D | ||
| 263 | #define MTXORB_FTDI_RANGE_018E_PID 0x018E | ||
| 264 | #define MTXORB_FTDI_RANGE_018F_PID 0x018F | ||
| 265 | #define MTXORB_FTDI_RANGE_0190_PID 0x0190 | ||
| 266 | #define MTXORB_FTDI_RANGE_0191_PID 0x0191 | ||
| 267 | #define MTXORB_FTDI_RANGE_0192_PID 0x0192 | ||
| 268 | #define MTXORB_FTDI_RANGE_0193_PID 0x0193 | ||
| 269 | #define MTXORB_FTDI_RANGE_0194_PID 0x0194 | ||
| 270 | #define MTXORB_FTDI_RANGE_0195_PID 0x0195 | ||
| 271 | #define MTXORB_FTDI_RANGE_0196_PID 0x0196 | ||
| 272 | #define MTXORB_FTDI_RANGE_0197_PID 0x0197 | ||
| 273 | #define MTXORB_FTDI_RANGE_0198_PID 0x0198 | ||
| 274 | #define MTXORB_FTDI_RANGE_0199_PID 0x0199 | ||
| 275 | #define MTXORB_FTDI_RANGE_019A_PID 0x019A | ||
| 276 | #define MTXORB_FTDI_RANGE_019B_PID 0x019B | ||
| 277 | #define MTXORB_FTDI_RANGE_019C_PID 0x019C | ||
| 278 | #define MTXORB_FTDI_RANGE_019D_PID 0x019D | ||
| 279 | #define MTXORB_FTDI_RANGE_019E_PID 0x019E | ||
| 280 | #define MTXORB_FTDI_RANGE_019F_PID 0x019F | ||
| 281 | #define MTXORB_FTDI_RANGE_01A0_PID 0x01A0 | ||
| 282 | #define MTXORB_FTDI_RANGE_01A1_PID 0x01A1 | ||
| 283 | #define MTXORB_FTDI_RANGE_01A2_PID 0x01A2 | ||
| 284 | #define MTXORB_FTDI_RANGE_01A3_PID 0x01A3 | ||
| 285 | #define MTXORB_FTDI_RANGE_01A4_PID 0x01A4 | ||
| 286 | #define MTXORB_FTDI_RANGE_01A5_PID 0x01A5 | ||
| 287 | #define MTXORB_FTDI_RANGE_01A6_PID 0x01A6 | ||
| 288 | #define MTXORB_FTDI_RANGE_01A7_PID 0x01A7 | ||
| 289 | #define MTXORB_FTDI_RANGE_01A8_PID 0x01A8 | ||
| 290 | #define MTXORB_FTDI_RANGE_01A9_PID 0x01A9 | ||
| 291 | #define MTXORB_FTDI_RANGE_01AA_PID 0x01AA | ||
| 292 | #define MTXORB_FTDI_RANGE_01AB_PID 0x01AB | ||
| 293 | #define MTXORB_FTDI_RANGE_01AC_PID 0x01AC | ||
| 294 | #define MTXORB_FTDI_RANGE_01AD_PID 0x01AD | ||
| 295 | #define MTXORB_FTDI_RANGE_01AE_PID 0x01AE | ||
| 296 | #define MTXORB_FTDI_RANGE_01AF_PID 0x01AF | ||
| 297 | #define MTXORB_FTDI_RANGE_01B0_PID 0x01B0 | ||
| 298 | #define MTXORB_FTDI_RANGE_01B1_PID 0x01B1 | ||
| 299 | #define MTXORB_FTDI_RANGE_01B2_PID 0x01B2 | ||
| 300 | #define MTXORB_FTDI_RANGE_01B3_PID 0x01B3 | ||
| 301 | #define MTXORB_FTDI_RANGE_01B4_PID 0x01B4 | ||
| 302 | #define MTXORB_FTDI_RANGE_01B5_PID 0x01B5 | ||
| 303 | #define MTXORB_FTDI_RANGE_01B6_PID 0x01B6 | ||
| 304 | #define MTXORB_FTDI_RANGE_01B7_PID 0x01B7 | ||
| 305 | #define MTXORB_FTDI_RANGE_01B8_PID 0x01B8 | ||
| 306 | #define MTXORB_FTDI_RANGE_01B9_PID 0x01B9 | ||
| 307 | #define MTXORB_FTDI_RANGE_01BA_PID 0x01BA | ||
| 308 | #define MTXORB_FTDI_RANGE_01BB_PID 0x01BB | ||
| 309 | #define MTXORB_FTDI_RANGE_01BC_PID 0x01BC | ||
| 310 | #define MTXORB_FTDI_RANGE_01BD_PID 0x01BD | ||
| 311 | #define MTXORB_FTDI_RANGE_01BE_PID 0x01BE | ||
| 312 | #define MTXORB_FTDI_RANGE_01BF_PID 0x01BF | ||
| 313 | #define MTXORB_FTDI_RANGE_01C0_PID 0x01C0 | ||
| 314 | #define MTXORB_FTDI_RANGE_01C1_PID 0x01C1 | ||
| 315 | #define MTXORB_FTDI_RANGE_01C2_PID 0x01C2 | ||
| 316 | #define MTXORB_FTDI_RANGE_01C3_PID 0x01C3 | ||
| 317 | #define MTXORB_FTDI_RANGE_01C4_PID 0x01C4 | ||
| 318 | #define MTXORB_FTDI_RANGE_01C5_PID 0x01C5 | ||
| 319 | #define MTXORB_FTDI_RANGE_01C6_PID 0x01C6 | ||
| 320 | #define MTXORB_FTDI_RANGE_01C7_PID 0x01C7 | ||
| 321 | #define MTXORB_FTDI_RANGE_01C8_PID 0x01C8 | ||
| 322 | #define MTXORB_FTDI_RANGE_01C9_PID 0x01C9 | ||
| 323 | #define MTXORB_FTDI_RANGE_01CA_PID 0x01CA | ||
| 324 | #define MTXORB_FTDI_RANGE_01CB_PID 0x01CB | ||
| 325 | #define MTXORB_FTDI_RANGE_01CC_PID 0x01CC | ||
| 326 | #define MTXORB_FTDI_RANGE_01CD_PID 0x01CD | ||
| 327 | #define MTXORB_FTDI_RANGE_01CE_PID 0x01CE | ||
| 328 | #define MTXORB_FTDI_RANGE_01CF_PID 0x01CF | ||
| 329 | #define MTXORB_FTDI_RANGE_01D0_PID 0x01D0 | ||
| 330 | #define MTXORB_FTDI_RANGE_01D1_PID 0x01D1 | ||
| 331 | #define MTXORB_FTDI_RANGE_01D2_PID 0x01D2 | ||
| 332 | #define MTXORB_FTDI_RANGE_01D3_PID 0x01D3 | ||
| 333 | #define MTXORB_FTDI_RANGE_01D4_PID 0x01D4 | ||
| 334 | #define MTXORB_FTDI_RANGE_01D5_PID 0x01D5 | ||
| 335 | #define MTXORB_FTDI_RANGE_01D6_PID 0x01D6 | ||
| 336 | #define MTXORB_FTDI_RANGE_01D7_PID 0x01D7 | ||
| 337 | #define MTXORB_FTDI_RANGE_01D8_PID 0x01D8 | ||
| 338 | #define MTXORB_FTDI_RANGE_01D9_PID 0x01D9 | ||
| 339 | #define MTXORB_FTDI_RANGE_01DA_PID 0x01DA | ||
| 340 | #define MTXORB_FTDI_RANGE_01DB_PID 0x01DB | ||
| 341 | #define MTXORB_FTDI_RANGE_01DC_PID 0x01DC | ||
| 342 | #define MTXORB_FTDI_RANGE_01DD_PID 0x01DD | ||
| 343 | #define MTXORB_FTDI_RANGE_01DE_PID 0x01DE | ||
| 344 | #define MTXORB_FTDI_RANGE_01DF_PID 0x01DF | ||
| 345 | #define MTXORB_FTDI_RANGE_01E0_PID 0x01E0 | ||
| 346 | #define MTXORB_FTDI_RANGE_01E1_PID 0x01E1 | ||
| 347 | #define MTXORB_FTDI_RANGE_01E2_PID 0x01E2 | ||
| 348 | #define MTXORB_FTDI_RANGE_01E3_PID 0x01E3 | ||
| 349 | #define MTXORB_FTDI_RANGE_01E4_PID 0x01E4 | ||
| 350 | #define MTXORB_FTDI_RANGE_01E5_PID 0x01E5 | ||
| 351 | #define MTXORB_FTDI_RANGE_01E6_PID 0x01E6 | ||
| 352 | #define MTXORB_FTDI_RANGE_01E7_PID 0x01E7 | ||
| 353 | #define MTXORB_FTDI_RANGE_01E8_PID 0x01E8 | ||
| 354 | #define MTXORB_FTDI_RANGE_01E9_PID 0x01E9 | ||
| 355 | #define MTXORB_FTDI_RANGE_01EA_PID 0x01EA | ||
| 356 | #define MTXORB_FTDI_RANGE_01EB_PID 0x01EB | ||
| 357 | #define MTXORB_FTDI_RANGE_01EC_PID 0x01EC | ||
| 358 | #define MTXORB_FTDI_RANGE_01ED_PID 0x01ED | ||
| 359 | #define MTXORB_FTDI_RANGE_01EE_PID 0x01EE | ||
| 360 | #define MTXORB_FTDI_RANGE_01EF_PID 0x01EF | ||
| 361 | #define MTXORB_FTDI_RANGE_01F0_PID 0x01F0 | ||
| 362 | #define MTXORB_FTDI_RANGE_01F1_PID 0x01F1 | ||
| 363 | #define MTXORB_FTDI_RANGE_01F2_PID 0x01F2 | ||
| 364 | #define MTXORB_FTDI_RANGE_01F3_PID 0x01F3 | ||
| 365 | #define MTXORB_FTDI_RANGE_01F4_PID 0x01F4 | ||
| 366 | #define MTXORB_FTDI_RANGE_01F5_PID 0x01F5 | ||
| 367 | #define MTXORB_FTDI_RANGE_01F6_PID 0x01F6 | ||
| 368 | #define MTXORB_FTDI_RANGE_01F7_PID 0x01F7 | ||
| 369 | #define MTXORB_FTDI_RANGE_01F8_PID 0x01F8 | ||
| 370 | #define MTXORB_FTDI_RANGE_01F9_PID 0x01F9 | ||
| 371 | #define MTXORB_FTDI_RANGE_01FA_PID 0x01FA | ||
| 372 | #define MTXORB_FTDI_RANGE_01FB_PID 0x01FB | ||
| 373 | #define MTXORB_FTDI_RANGE_01FC_PID 0x01FC | ||
| 374 | #define MTXORB_FTDI_RANGE_01FD_PID 0x01FD | ||
| 375 | #define MTXORB_FTDI_RANGE_01FE_PID 0x01FE | ||
| 376 | #define MTXORB_FTDI_RANGE_01FF_PID 0x01FF | ||
| 377 | |||
| 378 | |||
| 122 | 379 | ||
| 123 | /* Interbiometrics USB I/O Board */ | 380 | /* Interbiometrics USB I/O Board */ |
| 124 | /* Developed for Interbiometrics by Rudolf Gugler */ | 381 | /* Developed for Interbiometrics by Rudolf Gugler */ |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 6cecd2c12b1d..43cfde83a93b 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
| @@ -236,25 +236,25 @@ static struct usb_device_id option_ids[] = { | |||
| 236 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_EX) }, | 236 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_EX) }, |
| 237 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, | 237 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, |
| 238 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_NETWORK) }, | 238 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_NETWORK) }, |
| 239 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, | 239 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) }, |
| 240 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, | 240 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, |
| 241 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, | 241 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, |
| 242 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401) }, | 242 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401, 0xff, 0xff, 0xff) }, |
| 243 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403) }, | 243 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403, 0xff, 0xff, 0xff) }, |
| 244 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405) }, | 244 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405, 0xff, 0xff, 0xff) }, |
| 245 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406) }, | 245 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406, 0xff, 0xff, 0xff) }, |
| 246 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408) }, | 246 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408, 0xff, 0xff, 0xff) }, |
| 247 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409) }, | 247 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409, 0xff, 0xff, 0xff) }, |
| 248 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410) }, | 248 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410, 0xff, 0xff, 0xff) }, |
| 249 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411) }, | 249 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411, 0xff, 0xff, 0xff) }, |
| 250 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412) }, | 250 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412, 0xff, 0xff, 0xff) }, |
| 251 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413) }, | 251 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413, 0xff, 0xff, 0xff) }, |
| 252 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414) }, | 252 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414, 0xff, 0xff, 0xff) }, |
| 253 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415) }, | 253 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415, 0xff, 0xff, 0xff) }, |
| 254 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416) }, | 254 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416, 0xff, 0xff, 0xff) }, |
| 255 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417) }, | 255 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417, 0xff, 0xff, 0xff) }, |
| 256 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418) }, | 256 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418, 0xff, 0xff, 0xff) }, |
| 257 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419) }, | 257 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419, 0xff, 0xff, 0xff) }, |
| 258 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, | 258 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, |
| 259 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ | 259 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ |
| 260 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ | 260 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ |
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 234c5eea95a2..103195abd417 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
| @@ -56,6 +56,7 @@ static struct usb_device_id id_table [] = { | |||
| 56 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ3) }, | 56 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ3) }, |
| 57 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) }, | 57 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) }, |
| 58 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) }, | 58 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) }, |
| 59 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MMX) }, | ||
| 59 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, | 60 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, |
| 60 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, | 61 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, |
| 61 | { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, | 62 | { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, |
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index 3bdefe020501..cff160abb130 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #define PL2303_PRODUCT_ID_PHAROS 0xaaa0 | 14 | #define PL2303_PRODUCT_ID_PHAROS 0xaaa0 |
| 15 | #define PL2303_PRODUCT_ID_RSAQ3 0xaaa2 | 15 | #define PL2303_PRODUCT_ID_RSAQ3 0xaaa2 |
| 16 | #define PL2303_PRODUCT_ID_ALDIGA 0x0611 | 16 | #define PL2303_PRODUCT_ID_ALDIGA 0x0611 |
| 17 | #define PL2303_PRODUCT_ID_MMX 0x0612 | ||
| 17 | 18 | ||
| 18 | #define ATEN_VENDOR_ID 0x0557 | 19 | #define ATEN_VENDOR_ID 0x0557 |
| 19 | #define ATEN_VENDOR_ID2 0x0547 | 20 | #define ATEN_VENDOR_ID2 0x0547 |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 1b09578cbb10..45fe3663fa7f 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
| @@ -405,7 +405,7 @@ UNUSUAL_DEV( 0x04a5, 0x3010, 0x0100, 0x0100, | |||
| 405 | UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999, | 405 | UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999, |
| 406 | "Cypress", | 406 | "Cypress", |
| 407 | "Cypress AT2LP", | 407 | "Cypress AT2LP", |
| 408 | US_SC_CYP_ATACB, US_PR_BULK, NULL, | 408 | US_SC_CYP_ATACB, US_PR_DEVICE, NULL, |
| 409 | 0), | 409 | 0), |
| 410 | #endif | 410 | #endif |
| 411 | 411 | ||
| @@ -1522,7 +1522,7 @@ UNUSUAL_DEV( 0x0fce, 0xe031, 0x0000, 0x0000, | |||
| 1522 | "Sony Ericsson", | 1522 | "Sony Ericsson", |
| 1523 | "M600i", | 1523 | "M600i", |
| 1524 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1524 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| 1525 | US_FL_FIX_CAPACITY ), | 1525 | US_FL_IGNORE_RESIDUE | US_FL_FIX_CAPACITY ), |
| 1526 | 1526 | ||
| 1527 | /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu> | 1527 | /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu> |
| 1528 | * Tested on hardware version 1.10. | 1528 | * Tested on hardware version 1.10. |
| @@ -1716,10 +1716,12 @@ UNUSUAL_DEV( 0x22b8, 0x3010, 0x0001, 0x0001, | |||
| 1716 | /* | 1716 | /* |
| 1717 | * Patch by Pete Zaitcev <zaitcev@redhat.com> | 1717 | * Patch by Pete Zaitcev <zaitcev@redhat.com> |
| 1718 | * Report by Mark Patton. Red Hat bz#208928. | 1718 | * Report by Mark Patton. Red Hat bz#208928. |
| 1719 | * Added support for rev 0x0002 (Motorola ROKR W5) | ||
| 1720 | * by Javier Smaldone <javier@smaldone.com.ar> | ||
| 1719 | */ | 1721 | */ |
| 1720 | UNUSUAL_DEV( 0x22b8, 0x4810, 0x0001, 0x0001, | 1722 | UNUSUAL_DEV( 0x22b8, 0x4810, 0x0001, 0x0002, |
| 1721 | "Motorola", | 1723 | "Motorola", |
| 1722 | "RAZR V3i", | 1724 | "RAZR V3i/ROKR W5", |
| 1723 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1725 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| 1724 | US_FL_FIX_CAPACITY), | 1726 | US_FL_FIX_CAPACITY), |
| 1725 | 1727 | ||
