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

+811 -95
-5
drivers/usb/core/generic.c
··· 155 155 { 156 156 int err, c; 157 157 158 - /* put device-specific files into sysfs */ 159 - usb_create_sysfs_dev_files(udev); 160 - 161 158 /* Choose and set the configuration. This registers the interfaces 162 159 * with the driver core and lets interface drivers bind to them. 163 160 */ ··· 186 189 * unconfigure the device */ 187 190 if (udev->actconfig) 188 191 usb_set_configuration(udev, -1); 189 - 190 - usb_remove_sysfs_dev_files(udev); 191 192 } 192 193 193 194 #ifdef CONFIG_PM
+2
drivers/usb/core/hcd.h
··· 213 213 214 214 /* force handover of high-speed port to full-speed companion */ 215 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 220 extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb);
+14 -1
drivers/usb/core/hub.c
··· 1326 1326 1327 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 1335 /* Unregister the device. The device driver is responsible 1330 1336 * for removing the device files from usbfs and sysfs and for 1331 1337 * de-configuring the device. ··· 1546 1540 dev_err(&udev->dev, "can't device_add, error %d\n", err); 1547 1541 goto fail; 1548 1542 } 1543 + 1544 + /* put device-specific files into sysfs */ 1545 + usb_create_sysfs_dev_files(udev); 1549 1546 1550 1547 /* Tell the world! */ 1551 1548 announce_device(udev); ··· 2753 2744 if ((status == -ENOTCONN) || (status == -ENOTSUPP)) 2754 2745 break; 2755 2746 } 2756 - dev_err(hub_dev, "unable to enumerate USB device on port %d\n", port1); 2747 + if (hub->hdev->parent || 2748 + !hcd->driver->port_handed_over || 2749 + !(hcd->driver->port_handed_over)(hcd, port1)) 2750 + dev_err(hub_dev, "unable to enumerate USB device on port %d\n", 2751 + port1); 2757 2752 2758 2753 done: 2759 2754 hub_port_disable(hub, port1, 1);
+4
drivers/usb/core/quirks.c
··· 47 47 /* Edirol SD-20 */ 48 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 54 /* M-Systems Flash Disk Pioneers */ 51 55 { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, 52 56
+21 -23
drivers/usb/core/sysfs.c
··· 588 588 container_of(kobj, struct device, kobj)); 589 589 size_t nleft = count; 590 590 size_t srclen, n; 591 + int cfgno; 592 + void *src; 591 593 592 - usb_lock_device(udev); 593 - 594 - /* The binary attribute begins with the device descriptor */ 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). 594 + /* The binary attribute begins with the device descriptor. 595 + * Following that are the raw descriptor entries for all the 596 + * configurations (config plus subsidiary descriptors). 608 597 */ 609 - if (udev->actconfig) { 610 - int cfgno = udev->actconfig - udev->config; 611 - 612 - srclen = __le16_to_cpu(udev->actconfig->desc.wTotalLength); 598 + for (cfgno = -1; cfgno < udev->descriptor.bNumConfigurations && 599 + nleft > 0; ++cfgno) { 600 + if (cfgno < 0) { 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 608 if (off < srclen) { 614 - n = min_t(size_t, nleft, srclen - off); 615 - memcpy(buf, off + udev->rawdescriptors[cfgno], n); 609 + n = min(nleft, srclen - (size_t) off); 610 + memcpy(buf, src + off, n); 616 611 nleft -= n; 612 + buf += n; 613 + off = 0; 614 + } else { 615 + off -= srclen; 617 616 } 618 617 } 619 - usb_unlock_device(udev); 620 618 return count - nleft; 621 619 } 622 620
+2
drivers/usb/gadget/fsl_usb2_udc.c
··· 1627 1627 udc_reset_ep_queue(udc, pipe); 1628 1628 1629 1629 /* report disconnect; the driver is already quiesced */ 1630 + spin_unlock(&udc->lock); 1630 1631 udc->driver->disconnect(&udc->gadget); 1632 + spin_lock(&udc->lock); 1631 1633 1632 1634 return 0; 1633 1635 }
+1
drivers/usb/host/ehci-au1xxx.c
··· 223 223 .bus_suspend = ehci_bus_suspend, 224 224 .bus_resume = ehci_bus_resume, 225 225 .relinquish_port = ehci_relinquish_port, 226 + .port_handed_over = ehci_port_handed_over, 226 227 }; 227 228 228 229 /*-------------------------------------------------------------------------*/
+2 -5
drivers/usb/host/ehci-fsl.c
··· 269 269 if (retval) 270 270 return retval; 271 271 272 - ehci->is_tdi_rh_tt = 1; 272 + hcd->has_tt = 1; 273 273 274 274 ehci->sbrn = 0x20; 275 275 ··· 295 295 */ 296 296 .reset = ehci_fsl_setup, 297 297 .start = ehci_run, 298 - #ifdef CONFIG_PM 299 - .suspend = ehci_bus_suspend, 300 - .resume = ehci_bus_resume, 301 - #endif 302 298 .stop = ehci_stop, 303 299 .shutdown = ehci_shutdown, 304 300 ··· 318 322 .bus_suspend = ehci_bus_suspend, 319 323 .bus_resume = ehci_bus_resume, 320 324 .relinquish_port = ehci_relinquish_port, 325 + .port_handed_over = ehci_port_handed_over, 321 326 }; 322 327 323 328 static int ehci_fsl_drv_probe(struct platform_device *pdev)
+14 -2
drivers/usb/host/ehci-hub.c
··· 609 609 } 610 610 break; 611 611 case USB_PORT_FEAT_C_SUSPEND: 612 - /* we auto-clear this feature */ 612 + clear_bit(wIndex, &ehci->port_c_suspend); 613 613 break; 614 614 case USB_PORT_FEAT_POWER: 615 615 if (HCS_PPC (ehci->hcs_params)) ··· 688 688 /* resume completed? */ 689 689 else if (time_after_eq(jiffies, 690 690 ehci->reset_done[wIndex])) { 691 - status |= 1 << USB_PORT_FEAT_C_SUSPEND; 691 + set_bit(wIndex, &ehci->port_c_suspend); 692 692 ehci->reset_done[wIndex] = 0; 693 693 694 694 /* stop resume signaling */ ··· 765 765 status |= 1 << USB_PORT_FEAT_RESET; 766 766 if (temp & PORT_POWER) 767 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 771 #ifndef VERBOSE_DEBUG 770 772 if (status & ~0xffff) /* only if wPortChange is interesting */ ··· 877 875 set_owner(ehci, --portnum, PORT_OWNER); 878 876 } 879 877 878 + static int ehci_port_handed_over(struct usb_hcd *hcd, int portnum) 879 + { 880 + struct ehci_hcd *ehci = hcd_to_ehci(hcd); 881 + u32 __iomem *reg; 882 + 883 + if (ehci_is_TDI(ehci)) 884 + return 0; 885 + reg = &ehci->regs->port_status[portnum - 1]; 886 + return ehci_readl(ehci, reg) & PORT_OWNER; 887 + }
+3 -1
drivers/usb/host/ehci-ixp4xx.c
··· 26 26 + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); 27 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 30 ehci_reset(ehci); 31 31 32 32 retval = ehci_init(hcd); ··· 58 58 .bus_suspend = ehci_bus_suspend, 59 59 .bus_resume = ehci_bus_resume, 60 60 #endif 61 + .relinquish_port = ehci_relinquish_port, 62 + .port_handed_over = ehci_port_handed_over, 61 63 }; 62 64 63 65 static int ixp4xx_ehci_probe(struct platform_device *pdev)
+3 -5
drivers/usb/host/ehci-orion.c
··· 139 139 */ 140 140 .reset = ehci_orion_setup, 141 141 .start = ehci_run, 142 - #ifdef CONFIG_PM 143 - .suspend = ehci_bus_suspend, 144 - .resume = ehci_bus_resume, 145 - #endif 146 142 .stop = ehci_stop, 147 143 .shutdown = ehci_shutdown, 148 144 ··· 161 165 .hub_control = ehci_hub_control, 162 166 .bus_suspend = ehci_bus_suspend, 163 167 .bus_resume = ehci_bus_resume, 168 + .relinquish_port = ehci_relinquish_port, 169 + .port_handed_over = ehci_port_handed_over, 164 170 }; 165 171 166 172 static void __init ··· 248 250 ehci->regs = hcd->regs + 0x100 + 249 251 HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); 250 252 ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); 251 - ehci->is_tdi_rh_tt = 1; 253 + hcd->has_tt = 1; 252 254 ehci->sbrn = 0x20; 253 255 254 256 /*
+2 -2
drivers/usb/host/ehci-pci.c
··· 129 129 switch (pdev->vendor) { 130 130 case PCI_VENDOR_ID_TDI: 131 131 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { 132 - ehci->is_tdi_rh_tt = 1; 133 132 hcd->has_tt = 1; 134 133 tdi_reset(ehci); 135 134 } ··· 378 379 .hub_control = ehci_hub_control, 379 380 .bus_suspend = ehci_bus_suspend, 380 381 .bus_resume = ehci_bus_resume, 381 - .relinquish_port = ehci_relinquish_port, 382 + .relinquish_port = ehci_relinquish_port, 383 + .port_handed_over = ehci_port_handed_over, 382 384 }; 383 385 384 386 /*-------------------------------------------------------------------------*/
+2
drivers/usb/host/ehci-ppc-of.c
··· 76 76 .bus_suspend = ehci_bus_suspend, 77 77 .bus_resume = ehci_bus_resume, 78 78 #endif 79 + .relinquish_port = ehci_relinquish_port, 80 + .port_handed_over = ehci_port_handed_over, 79 81 }; 80 82 81 83
+1
drivers/usb/host/ehci-ppc-soc.c
··· 163 163 .bus_suspend = ehci_bus_suspend, 164 164 .bus_resume = ehci_bus_resume, 165 165 .relinquish_port = ehci_relinquish_port, 166 + .port_handed_over = ehci_port_handed_over, 166 167 }; 167 168 168 169 static int ehci_hcd_ppc_soc_drv_probe(struct platform_device *pdev)
+1
drivers/usb/host/ehci-ps3.c
··· 73 73 .bus_resume = ehci_bus_resume, 74 74 #endif 75 75 .relinquish_port = ehci_relinquish_port, 76 + .port_handed_over = ehci_port_handed_over, 76 77 }; 77 78 78 79 static int ps3_ehci_probe(struct ps3_system_bus_device *dev)
+44 -23
drivers/usb/host/ehci-sched.c
··· 1349 1349 /* when's the last uframe this urb could start? */ 1350 1350 max = now + mod; 1351 1351 1352 - /* typical case: reuse current schedule. stream is still active, 1353 - * and no gaps from host falling behind (irq delays etc) 1352 + /* Typical case: reuse current schedule, stream is still active. 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 1357 if (likely (!list_empty (&stream->td_list))) { 1356 1358 start = stream->next_uframe; 1357 1359 if (start < now) 1358 1360 start += mod; 1359 - if (likely ((start + sched->span) < max)) 1360 - goto ready; 1361 - /* else fell behind; someday, try to reschedule */ 1362 - status = -EL2NSYNC; 1363 - goto fail; 1361 + 1362 + /* Fell behind (by up to twice the slop amount)? */ 1363 + if (start >= max - 2 * 8 * SCHEDULE_SLOP) 1364 + start += stream->interval * DIV_ROUND_UP( 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 1375 /* need to schedule; when's the next (u)frame we could start? ··· 1622 1613 } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) { 1623 1614 desc->status = 0; 1624 1615 desc->actual_length = EHCI_ITD_LENGTH (t); 1616 + } else { 1617 + /* URB was too late */ 1618 + desc->status = -EXDEV; 1625 1619 } 1626 1620 } 1627 1621 ··· 2107 2095 static void 2108 2096 scan_periodic (struct ehci_hcd *ehci) 2109 2097 { 2110 - unsigned frame, clock, now_uframe, mod; 2098 + unsigned now_uframe, frame, clock, clock_frame, mod; 2111 2099 unsigned modified; 2112 2100 2113 2101 mod = ehci->periodic_size << 3; ··· 2123 2111 else 2124 2112 clock = now_uframe + mod - 1; 2125 2113 clock %= mod; 2114 + clock_frame = clock >> 3; 2126 2115 2127 2116 for (;;) { 2128 2117 union ehci_shadow q, *q_p; ··· 2170 2157 case Q_TYPE_ITD: 2171 2158 /* If this ITD is still active, leave it for 2172 2159 * later processing ... check the next entry. 2160 + * No need to check for activity unless the 2161 + * frame is current. 2173 2162 */ 2174 - rmb (); 2175 - for (uf = 0; uf < 8 && live; uf++) { 2176 - if (0 == (q.itd->hw_transaction [uf] 2177 - & ITD_ACTIVE(ehci))) 2178 - continue; 2179 - incomplete = true; 2180 - q_p = &q.itd->itd_next; 2181 - hw_p = &q.itd->hw_next; 2182 - type = Q_NEXT_TYPE(ehci, 2163 + if (frame == clock_frame && live) { 2164 + rmb(); 2165 + for (uf = 0; uf < 8; uf++) { 2166 + if (q.itd->hw_transaction[uf] & 2167 + ITD_ACTIVE(ehci)) 2168 + break; 2169 + } 2170 + if (uf < 8) { 2171 + incomplete = true; 2172 + q_p = &q.itd->itd_next; 2173 + hw_p = &q.itd->hw_next; 2174 + type = Q_NEXT_TYPE(ehci, 2183 2175 q.itd->hw_next); 2184 - q = *q_p; 2185 - break; 2176 + q = *q_p; 2177 + break; 2178 + } 2186 2179 } 2187 - if (uf < 8 && live) 2188 - break; 2189 2180 2190 2181 /* Take finished ITDs out of the schedule 2191 2182 * and process them: recycle, maybe report ··· 2206 2189 case Q_TYPE_SITD: 2207 2190 /* If this SITD is still active, leave it for 2208 2191 * later processing ... check the next entry. 2192 + * No need to check for activity unless the 2193 + * frame is current. 2209 2194 */ 2210 - if ((q.sitd->hw_results & SITD_ACTIVE(ehci)) 2211 - && live) { 2195 + if (frame == clock_frame && live && 2196 + (q.sitd->hw_results & 2197 + SITD_ACTIVE(ehci))) { 2212 2198 incomplete = true; 2213 2199 q_p = &q.sitd->sitd_next; 2214 2200 hw_p = &q.sitd->hw_next; ··· 2280 2260 2281 2261 /* rescan the rest of this frame, then ... */ 2282 2262 clock = now; 2263 + clock_frame = clock >> 3; 2283 2264 } else { 2284 2265 now_uframe++; 2285 2266 now_uframe %= mod;
+3 -2
drivers/usb/host/ehci.h
··· 97 97 dedicated to the companion controller */ 98 98 unsigned long owned_ports; /* which ports are 99 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 103 /* per-HC memory pools (could be per-bus, but ...) */ 102 104 struct dma_pool *qh_pool; /* qh per active urb */ ··· 114 112 u32 command; 115 113 116 114 /* SILICON QUIRKS */ 117 - unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */ 118 115 unsigned no_selective_suspend:1; 119 116 unsigned has_fsl_port_bug:1; /* FreeScale */ 120 117 unsigned big_endian_mmio:1; ··· 679 678 * needed (mostly in root hub code). 680 679 */ 681 680 682 - #define ehci_is_TDI(e) ((e)->is_tdi_rh_tt) 681 + #define ehci_is_TDI(e) (ehci_to_hcd(e)->has_tt) 683 682 684 683 /* Returns the speed of a device attached to a port on the root hub. */ 685 684 static inline unsigned int
+11
drivers/usb/misc/Kconfig
··· 269 269 See <http://www.linux-usb.org/usbtest/> for more information, 270 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
+1
drivers/usb/misc/Makefile
··· 14 14 obj-$(CONFIG_USB_FTDI_ELAN) += ftdi-elan.o 15 15 obj-$(CONFIG_USB_IDMOUSE) += idmouse.o 16 16 obj-$(CONFIG_USB_IOWARRIOR) += iowarrior.o 17 + obj-$(CONFIG_USB_ISIGHTFW) += isight_firmware.o 17 18 obj-$(CONFIG_USB_LCD) += usblcd.o 18 19 obj-$(CONFIG_USB_LD) += ldusb.o 19 20 obj-$(CONFIG_USB_LED) += usbled.o
+131
drivers/usb/misc/isight_firmware.c
··· 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>");
+263 -1
drivers/usb/serial/ftdi_sio.c
··· 174 174 { USB_DEVICE(FTDI_VID, FTDI_MTXORB_4_PID) }, 175 175 { USB_DEVICE(FTDI_VID, FTDI_MTXORB_5_PID) }, 176 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 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 441 { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, 180 442 { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, 181 443 { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) },
+261 -4
drivers/usb/serial/ftdi_sio.h
··· 114 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 118 - * display, which use the FT232RL. 117 + * The following are the values for the Matrix Orbital FTDI Range 118 + * Anything in this range will use an FT232RL. 119 119 */ 120 - #define MTXORB_VK_VID 0x1b3d 121 - #define MTXORB_VK_PID 0x0158 120 + #define MTXORB_VID 0x1B3D 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 380 /* Interbiometrics USB I/O Board */ 124 381 /* Developed for Interbiometrics by Rudolf Gugler */
+17 -17
drivers/usb/serial/option.c
··· 236 236 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_EX) }, 237 237 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, 238 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 240 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, 241 241 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, 242 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401) }, 243 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403) }, 244 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405) }, 245 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406) }, 246 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408) }, 247 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409) }, 248 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410) }, 249 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411) }, 250 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412) }, 251 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413) }, 252 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414) }, 253 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415) }, 254 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416) }, 255 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417) }, 256 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418) }, 257 - { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419) }, 242 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401, 0xff, 0xff, 0xff) }, 243 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403, 0xff, 0xff, 0xff) }, 244 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405, 0xff, 0xff, 0xff) }, 245 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406, 0xff, 0xff, 0xff) }, 246 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408, 0xff, 0xff, 0xff) }, 247 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409, 0xff, 0xff, 0xff) }, 248 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410, 0xff, 0xff, 0xff) }, 249 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411, 0xff, 0xff, 0xff) }, 250 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412, 0xff, 0xff, 0xff) }, 251 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413, 0xff, 0xff, 0xff) }, 252 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414, 0xff, 0xff, 0xff) }, 253 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415, 0xff, 0xff, 0xff) }, 254 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416, 0xff, 0xff, 0xff) }, 255 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417, 0xff, 0xff, 0xff) }, 256 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418, 0xff, 0xff, 0xff) }, 257 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419, 0xff, 0xff, 0xff) }, 258 258 { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, 259 259 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ 260 260 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */
+1
drivers/usb/serial/pl2303.c
··· 56 56 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ3) }, 57 57 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) }, 58 58 { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) }, 59 + { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MMX) }, 59 60 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, 60 61 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, 61 62 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) },
+1
drivers/usb/serial/pl2303.h
··· 14 14 #define PL2303_PRODUCT_ID_PHAROS 0xaaa0 15 15 #define PL2303_PRODUCT_ID_RSAQ3 0xaaa2 16 16 #define PL2303_PRODUCT_ID_ALDIGA 0x0611 17 + #define PL2303_PRODUCT_ID_MMX 0x0612 17 18 18 19 #define ATEN_VENDOR_ID 0x0557 19 20 #define ATEN_VENDOR_ID2 0x0547
+6 -4
drivers/usb/storage/unusual_devs.h
··· 405 405 UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999, 406 406 "Cypress", 407 407 "Cypress AT2LP", 408 - US_SC_CYP_ATACB, US_PR_BULK, NULL, 408 + US_SC_CYP_ATACB, US_PR_DEVICE, NULL, 409 409 0), 410 410 #endif 411 411 ··· 1522 1522 "Sony Ericsson", 1523 1523 "M600i", 1524 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 1527 /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu> 1528 1528 * Tested on hardware version 1.10. ··· 1716 1716 /* 1717 1717 * Patch by Pete Zaitcev <zaitcev@redhat.com> 1718 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 1723 "Motorola", 1722 - "RAZR V3i", 1724 + "RAZR V3i/ROKR W5", 1723 1725 US_SC_DEVICE, US_PR_DEVICE, NULL, 1724 1726 US_FL_FIX_CAPACITY), 1725 1727