aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2009-12-22 14:43:35 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2009-12-22 14:43:35 -0800
commit66b961e9446097d3edeba4da06fa2f770a721cdf (patch)
treef733c73bd0a9d9dfb47f03d785786794049b6e77
parent52a248c714fb17267c89520a4a854b0f65de998c (diff)
downloadpatches-66b961e9446097d3edeba4da06fa2f770a721cdf.tar.gz
musb crap
-rw-r--r--driver-core.current/devtmpfs-unlock-mutex-in-case-of-string-allocation-error.patch41
-rw-r--r--series26
-rw-r--r--usb.current/usb-audio-gadget-fix-wtotallength-calculation.patch43
-rw-r--r--usb.current/usb-audio-gadget-free-alsa-devices-when-unloading.patch88
-rw-r--r--usb.current/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch1988
-rw-r--r--usb.current/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch1720
-rw-r--r--usb.current/usb-musb-correct-dma-address-for-tx.patch34
-rw-r--r--usb.current/usb-musb-do-not-work-if-no-gadget-driver-is-loaded.patch39
-rw-r--r--usb.current/usb-musb-fix-array-index-out-of-bounds-issue.patch40
-rw-r--r--usb.current/usb-musb-fix-compiling-warning-with-min-macro.patch38
-rw-r--r--usb.current/usb-musb-fix-for-crash-in-dm646x-usb-when-cppi-dma-is-enabled.patch53
-rw-r--r--usb.current/usb-musb-fix-null-pointer-dereference-issue.patch48
-rw-r--r--usb.current/usb-musb-gadget-set-otg-tranceiver-to-idle-when-registering-gadget.patch37
-rw-r--r--usb.current/usb-musb-gadget_ep0-avoid-setupend-interrupt.patch61
-rw-r--r--usb.current/usb-musb-maintainers-fix-my-tree-s-address.patch29
-rw-r--r--usb.current/usb-musb-move-musb_remove-to-__exit.patch38
-rw-r--r--usb.current/usb-musb-populate-the-vbus-gpio-with-the-correct-gpio-number.patch35
-rw-r--r--usb.current/usb-musb-workaround-blackfin-fifo-anomalies.patch213
-rw-r--r--usb.current/usb-musb_gadget-fix-kernel-oops-in-txstate.patch41
-rw-r--r--usb.current/usb-otg-isp1301_omap-fix-compile-error.patch (renamed from usb/usb-otg-isp1301_omap-fix-compile-error.patch)0
-rw-r--r--usb/usb-ftdi_sio-fix-error-message-on-close.patch2
-rw-r--r--usb/usb-ftdi_sio-fix-initialisation-of-latency-timeout.patch6
-rw-r--r--usb/usb-ftdi_sio-remove-obsolete-comment.patch2
-rw-r--r--usb/usb-ftdi_sio-remove-support-for-5-and-6-data-bits.patch2
-rw-r--r--usb/usb-musb-get-rid-of-musb-set_clock.patch133
-rw-r--r--usb/usb-musb-move-to-sysfs_groups.patch82
-rw-r--r--usb/usb-musb-move-two-printk-to-dev_err.patch38
-rw-r--r--usb/usb-musb-remove-some-of-the-never-defined-defines.patch100
-rw-r--r--usb/usb-musb-use-resource_size.patch29
29 files changed, 4999 insertions, 7 deletions
diff --git a/driver-core.current/devtmpfs-unlock-mutex-in-case-of-string-allocation-error.patch b/driver-core.current/devtmpfs-unlock-mutex-in-case-of-string-allocation-error.patch
new file mode 100644
index 00000000000000..f2943a31a59398
--- /dev/null
+++ b/driver-core.current/devtmpfs-unlock-mutex-in-case-of-string-allocation-error.patch
@@ -0,0 +1,41 @@
+From kay.sievers@vrfy.org Tue Dec 22 14:05:56 2009
+From: Kay Sievers <kay.sievers@vrfy.org>
+Date: Tue, 22 Dec 2009 22:25:16 +0100
+Subject: devtmpfs: unlock mutex in case of string allocation error
+To: "Kirill A. Shutemov" <kirill@shutemov.name>
+Cc: Greg Kroah-Hartman <gregkh@suse.de>, linux-kernel@vger.kernel.org
+Message-ID: <1261517116.2101.2.camel@yio.site>
+
+From: Kay Sievers <kay.sievers@vrfy.org>
+
+Reported-by: Kirill A. Shutemov <kirill@shutemov.name>
+Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/devtmpfs.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/base/devtmpfs.c
++++ b/drivers/base/devtmpfs.c
+@@ -101,8 +101,10 @@ static int create_path(const char *nodep
+
+ /* parent directories do not exist, create them */
+ path = kstrdup(nodepath, GFP_KERNEL);
+- if (!path)
+- return -ENOMEM;
++ if (!path) {
++ err = -ENOMEM;
++ goto out;
++ }
+ s = path;
+ for (;;) {
+ s = strchr(s, '/');
+@@ -117,6 +119,7 @@ static int create_path(const char *nodep
+ }
+ kfree(path);
+ }
++out:
+ mutex_unlock(&dirlock);
+ return err;
+ }
diff --git a/series b/series
index 859af8d4679bfc..aa66c619916353 100644
--- a/series
+++ b/series
@@ -18,6 +18,7 @@ driver-core.current/driver-core-driver_attribute-parameters-can-often-be-const.p
driver-core.current/drivers-base-fix-error-path.patch
driver-core.current/driver-core-prevent-reference-to-freed-memory-on-error-path.patch
driver-core.current/driver-core-export-platform_device_register_data-as-a-gpl-symbol.patch
+driver-core.current/devtmpfs-unlock-mutex-in-case-of-string-allocation-error.patch
#################################
# TTY patches for 2.6.33
@@ -37,6 +38,24 @@ usb.current/usb-emi62-fix-crash-when-trying-to-load-emi-6-2-firmware.patch
usb.current/usb-fix-section-mismatch-in-early-ehci-dbgp.patch
usb.current/usb-add-device-id-for-apple-cinema-display-23in-2007.patch
usb.current/usb-core-fix-recent-kernel-doc-warnings.patch
+usb.current/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch
+usb.current/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch
+usb.current/usb-musb_gadget-fix-kernel-oops-in-txstate.patch
+usb.current/usb-musb-move-musb_remove-to-__exit.patch
+usb.current/usb-musb-fix-compiling-warning-with-min-macro.patch
+usb.current/usb-musb-maintainers-fix-my-tree-s-address.patch
+usb.current/usb-musb-populate-the-vbus-gpio-with-the-correct-gpio-number.patch
+usb.current/usb-musb-gadget-set-otg-tranceiver-to-idle-when-registering-gadget.patch
+usb.current/usb-musb-do-not-work-if-no-gadget-driver-is-loaded.patch
+usb.current/usb-musb-fix-for-crash-in-dm646x-usb-when-cppi-dma-is-enabled.patch
+usb.current/usb-musb-gadget_ep0-avoid-setupend-interrupt.patch
+usb.current/usb-musb-correct-dma-address-for-tx.patch
+usb.current/usb-musb-fix-null-pointer-dereference-issue.patch
+usb.current/usb-musb-fix-array-index-out-of-bounds-issue.patch
+usb.current/usb-musb-workaround-blackfin-fifo-anomalies.patch
+usb.current/usb-otg-isp1301_omap-fix-compile-error.patch
+usb.current/usb-audio-gadget-fix-wtotallength-calculation.patch
+usb.current/usb-audio-gadget-free-alsa-devices-when-unloading.patch
#################################
# Staging patches for 2.6.33
@@ -141,7 +160,6 @@ usb/usb-at91_udc.c-use-resource_size.patch
usb/usb-ehci-orion.c-use-resource_size.patch
usb/usb-ehci-atmel.c-use-resource_size.patch
usb/usb-ehci-au1xxx.c-use-platform_get_resource-and-resource_size.patch
-usb/usb-otg-isp1301_omap-fix-compile-error.patch
usb/usb-cdc-acm-update-to-new-autopm-api.patch
usb/usb-xhci-no-gfp_kernel-in-block-error-handling.patch
usb/usb-wusb-check-chid-is-all-zeros-before-stopping-the-host.patch
@@ -157,6 +175,11 @@ usb/usb-host-sl811-fix-unaligned-accesses.patch
usb/usb-host-sl811-allow-the-hcd-on-blackfin-systems.patch
usb/usb-gadget-use-ep5-for-bulk-in-and-ep6-for-bulk-out-for-blackfin-musb.patch
usb/usb-gadget-add-int-support-for-blackfin-musb.patch
+usb/usb-musb-use-resource_size.patch
+usb/usb-musb-move-two-printk-to-dev_err.patch
+usb/usb-musb-move-to-sysfs_groups.patch
+usb/usb-musb-remove-some-of-the-never-defined-defines.patch
+usb/usb-musb-get-rid-of-musb-set_clock.patch
@@ -236,3 +259,4 @@ staging/staging-prism2-usb-build-should-select-wireless_ext.patch
staging/staging-wlan-ng-initialise-mibitem.patch
+
diff --git a/usb.current/usb-audio-gadget-fix-wtotallength-calculation.patch b/usb.current/usb-audio-gadget-fix-wtotallength-calculation.patch
new file mode 100644
index 00000000000000..458537092251a1
--- /dev/null
+++ b/usb.current/usb-audio-gadget-fix-wtotallength-calculation.patch
@@ -0,0 +1,43 @@
+From vapier@gentoo.org Tue Dec 22 14:41:14 2009
+From: Cliff Cai <cliff.cai@analog.com>
+Date: Wed, 9 Dec 2009 22:21:12 -0500
+Subject: USB: audio gadget: fix wTotalLength calculation
+To: linux-usb@vger.kernel.org, Greg Kroah-Hartman <gregkh@suse.de>
+Cc: uclinux-dist-devel@blackfin.uclinux.org, Cliff Cai <cliff.cai@analog.com>
+Message-ID: <1260415272-25211-1-git-send-email-vapier@gentoo.org>
+
+
+From: Cliff Cai <cliff.cai@analog.com>
+
+The wTotalLength should contain the sum of the interface and unit
+descriptor sizes per the Audio Device Class specification 1.0.
+
+Reported-by: Sergey Lapin <slapin@ossfans.org>
+Signed-off-by: Cliff Cai <cliff.cai@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/f_audio.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/gadget/f_audio.c
++++ b/drivers/usb/gadget/f_audio.c
+@@ -56,13 +56,16 @@ static struct usb_interface_descriptor a
+ DECLARE_UAC_AC_HEADER_DESCRIPTOR(2);
+
+ #define UAC_DT_AC_HEADER_LENGTH UAC_DT_AC_HEADER_SIZE(F_AUDIO_NUM_INTERFACES)
++/* 1 input terminal, 1 output terminal and 1 feature unit */
++#define UAC_DT_TOTAL_LENGTH (UAC_DT_AC_HEADER_LENGTH + UAC_DT_INPUT_TERMINAL_SIZE \
++ + UAC_DT_OUTPUT_TERMINAL_SIZE + UAC_DT_FEATURE_UNIT_SIZE(0))
+ /* B.3.2 Class-Specific AC Interface Descriptor */
+ static struct uac_ac_header_descriptor_2 ac_header_desc = {
+ .bLength = UAC_DT_AC_HEADER_LENGTH,
+ .bDescriptorType = USB_DT_CS_INTERFACE,
+ .bDescriptorSubtype = UAC_HEADER,
+ .bcdADC = __constant_cpu_to_le16(0x0100),
+- .wTotalLength = __constant_cpu_to_le16(UAC_DT_AC_HEADER_LENGTH),
++ .wTotalLength = __constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH),
+ .bInCollection = F_AUDIO_NUM_INTERFACES,
+ .baInterfaceNr = {
+ [0] = F_AUDIO_AC_INTERFACE,
diff --git a/usb.current/usb-audio-gadget-free-alsa-devices-when-unloading.patch b/usb.current/usb-audio-gadget-free-alsa-devices-when-unloading.patch
new file mode 100644
index 00000000000000..1cac9f688caa14
--- /dev/null
+++ b/usb.current/usb-audio-gadget-free-alsa-devices-when-unloading.patch
@@ -0,0 +1,88 @@
+From vapier@gentoo.org Tue Dec 22 14:41:30 2009
+From: Cliff Cai <cliff.cai@analog.com>
+Date: Wed, 9 Dec 2009 22:28:39 -0500
+Subject: USB: audio gadget: free alsa devices when unloading
+To: linux-usb@vger.kernel.org, Greg Kroah-Hartman <gregkh@suse.de>
+Cc: uclinux-dist-devel@blackfin.uclinux.org, Cliff Cai <cliff.cai@analog.com>
+Message-ID: <1260415719-25552-1-git-send-email-vapier@gentoo.org>
+
+
+From: Cliff Cai <cliff.cai@analog.com>
+
+Signed-off-by: Cliff Cai <cliff.cai@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/audio.c | 1 +
+ drivers/usb/gadget/f_audio.c | 2 +-
+ drivers/usb/gadget/u_audio.c | 12 +++++++++---
+ drivers/usb/gadget/u_audio.h | 2 +-
+ 4 files changed, 12 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/gadget/audio.c
++++ b/drivers/usb/gadget/audio.c
+@@ -158,6 +158,7 @@ fail:
+
+ static int __exit audio_unbind(struct usb_composite_dev *cdev)
+ {
++ gaudio_cleanup();
+ return 0;
+ }
+
+--- a/drivers/usb/gadget/f_audio.c
++++ b/drivers/usb/gadget/f_audio.c
+@@ -792,7 +792,7 @@ int __init audio_bind_config(struct usb_
+ return status;
+
+ add_fail:
+- gaudio_cleanup(&audio->card);
++ gaudio_cleanup();
+ setup_fail:
+ kfree(audio);
+ return status;
+--- a/drivers/usb/gadget/u_audio.c
++++ b/drivers/usb/gadget/u_audio.c
+@@ -288,6 +288,7 @@ static int gaudio_close_snd_dev(struct g
+ return 0;
+ }
+
++static struct gaudio *the_card;
+ /**
+ * gaudio_setup - setup ALSA interface and preparing for USB transfer
+ *
+@@ -303,6 +304,9 @@ int __init gaudio_setup(struct gaudio *c
+ if (ret)
+ ERROR(card, "we need at least one control device\n");
+
++ if (!the_card)
++ the_card = card;
++
+ return ret;
+
+ }
+@@ -312,9 +316,11 @@ int __init gaudio_setup(struct gaudio *c
+ *
+ * This is called to free all resources allocated by @gaudio_setup().
+ */
+-void gaudio_cleanup(struct gaudio *card)
++void gaudio_cleanup(void)
+ {
+- if (card)
+- gaudio_close_snd_dev(card);
++ if (the_card) {
++ gaudio_close_snd_dev(the_card);
++ the_card = NULL;
++ }
+ }
+
+--- a/drivers/usb/gadget/u_audio.h
++++ b/drivers/usb/gadget/u_audio.h
+@@ -51,6 +51,6 @@ struct gaudio {
+ };
+
+ int gaudio_setup(struct gaudio *card);
+-void gaudio_cleanup(struct gaudio *card);
++void gaudio_cleanup(void);
+
+ #endif /* __U_AUDIO_H */
diff --git a/usb.current/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch b/usb.current/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch
new file mode 100644
index 00000000000000..f0344f92724b7e
--- /dev/null
+++ b/usb.current/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch
@@ -0,0 +1,1988 @@
+From andi@lisas.de Tue Dec 22 14:22:55 2009
+From: Andreas Mohr <andi@lisas.de>
+Date: Wed, 16 Dec 2009 21:45:10 +0100
+Subject: USB: ftdi_sio: isolate all device IDs to new ftdi_sio_ids.h header
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: kuba@mareimbrium.org, linux-usb@vger.kernel.org
+Message-ID: <20091216204509.GA24516@rhlx01.hs-esslingen.de>
+Content-Disposition: inline
+
+
+This is a strictly move-only patch to relocate all FTDI device
+product ID definitions to their own ftdi_sio_ids.h header
+(following the usual *_ids.h kernel tree convention, too),
+thus correcting the slightly too messy appearance
+(crucial driver defines were stuck somewhere in the decaying middle swamp
+of the huge existing header).
+
+Compile-tested, based on latest mainline git.
+
+Signed-off-by: Andreas Mohr <andi@lisas.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/usb/serial/ftdi_sio.c | 1
+ drivers/usb/serial/ftdi_sio.h | 959 --------------------------------------
+ drivers/usb/serial/ftdi_sio_ids.h | 959 ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 964 insertions(+), 955 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -44,6 +44,7 @@
+ #include <linux/serial.h>
+ #include <linux/usb/serial.h>
+ #include "ftdi_sio.h"
++#include "ftdi_sio_ids.h"
+
+ /*
+ * Version Information
+--- a/drivers/usb/serial/ftdi_sio.h
++++ b/drivers/usb/serial/ftdi_sio.h
+@@ -1,7 +1,10 @@
+ /*
+- * Definitions for the FTDI USB Single Port Serial Converter -
++ * Driver definitions for the FTDI USB Single Port Serial Converter -
+ * known as FTDI_SIO (Serial Input/Output application of the chipset)
+ *
++ * For USB vendor/product IDs (VID/PID), please see ftdi_sio_ids.h
++ *
++ *
+ * The example I have is known as the USC-1000 which is available from
+ * http://www.dse.co.nz - cat no XH4214 It looks similar to this:
+ * http://www.dansdata.com/usbser.htm but I can't be sure There are other
+@@ -17,880 +20,7 @@
+ * Bill Ryder - bryder@sgi.com formerly of Silicon Graphics, Inc.- wrote the
+ * FTDI_SIO implementation.
+ *
+- * Philipp Gühring - pg@futureware.at - added the Device ID of the USB relais
+- * from Rudolf Gugler
+- *
+- */
+-
+-#define FTDI_VID 0x0403 /* Vendor Id */
+-#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
+-#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */
+-#define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */
+-#define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
+-#define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
+-#define FTDI_4232H_PID 0x6011 /* Quad channel hi-speed device */
+-#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */
+-#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */
+-#define FTDI_NF_RIC_PID 0x0001 /* Product Id */
+-#define FTDI_USBX_707_PID 0xF857 /* ADSTech IR Blaster USBX-707 */
+-
+-/* Larsen and Brusgaard AltiTrack/USBtrack */
+-#define LARSENBRUSGAARD_VID 0x0FD8
+-#define LB_ALTITRACK_PID 0x0001
+-
+-/* www.canusb.com Lawicel CANUSB device */
+-#define FTDI_CANUSB_PID 0xFFA8 /* Product Id */
+-
+-/* AlphaMicro Components AMC-232USB01 device */
+-#define FTDI_AMC232_PID 0xFF00 /* Product Id */
+-
+-/* www.candapter.com Ewert Energy Systems CANdapter device */
+-#define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
+-
+-/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
+-/* the VID is the standard ftdi vid (FTDI_VID) */
+-#define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
+-#define FTDI_SCS_DEVICE_1_PID 0xD011 /* SCS Tracker / DSP TNC */
+-#define FTDI_SCS_DEVICE_2_PID 0xD012
+-#define FTDI_SCS_DEVICE_3_PID 0xD013
+-#define FTDI_SCS_DEVICE_4_PID 0xD014
+-#define FTDI_SCS_DEVICE_5_PID 0xD015
+-#define FTDI_SCS_DEVICE_6_PID 0xD016
+-#define FTDI_SCS_DEVICE_7_PID 0xD017
+-
+-/* ACT Solutions HomePro ZWave interface (http://www.act-solutions.com/HomePro.htm) */
+-#define FTDI_ACTZWAVE_PID 0xF2D0
+-
+-
+-/* www.starting-point-systems.com µChameleon device */
+-#define FTDI_MICRO_CHAMELEON_PID 0xCAA0 /* Product Id */
+-
+-/* www.irtrans.de device */
+-#define FTDI_IRTRANS_PID 0xFC60 /* Product Id */
+-
+-
+-/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
+-#define FTDI_TTUSB_PID 0xFF20 /* Product Id */
+-
+-/* iPlus device */
+-#define FTDI_IPLUS_PID 0xD070 /* Product Id */
+-#define FTDI_IPLUS2_PID 0xD071 /* Product Id */
+-
+-/* DMX4ALL DMX Interfaces */
+-#define FTDI_DMX4ALL 0xC850
+-
+-/* OpenDCC (www.opendcc.de) product id */
+-#define FTDI_OPENDCC_PID 0xBFD8
+-#define FTDI_OPENDCC_SNIFFER_PID 0xBFD9
+-#define FTDI_OPENDCC_THROTTLE_PID 0xBFDA
+-#define FTDI_OPENDCC_GATEWAY_PID 0xBFDB
+-
+-/* Sprog II (Andrew Crosland's SprogII DCC interface) */
+-#define FTDI_SPROG_II 0xF0C8
+-
+-/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
+-/* they use the ftdi chipset for the USB interface and the vendor id is the same */
+-#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
+-#define FTDI_XF_634_PID 0xFC09 /* 634: 20x4 Character Display */
+-#define FTDI_XF_547_PID 0xFC0A /* 547: Two line Display */
+-#define FTDI_XF_633_PID 0xFC0B /* 633: 16x2 Character Display with Keys */
+-#define FTDI_XF_631_PID 0xFC0C /* 631: 20x2 Character Display */
+-#define FTDI_XF_635_PID 0xFC0D /* 635: 20x4 Character Display */
+-#define FTDI_XF_640_PID 0xFC0E /* 640: Two line Display */
+-#define FTDI_XF_642_PID 0xFC0F /* 642: Two line Display */
+-
+-/* Video Networks Limited / Homechoice in the UK use an ftdi-based device for their 1Mb */
+-/* broadband internet service. The following PID is exhibited by the usb device supplied */
+-/* (the VID is the standard ftdi vid (FTDI_VID) */
+-#define FTDI_VNHCPCUSB_D_PID 0xfe38 /* Product Id */
+-
+-/*
+- * PCDJ use ftdi based dj-controllers. The following PID is for their DAC-2 device
+- * http://www.pcdjhardware.com/DAC2.asp (PID sent by Wouter Paesen)
+- * (the VID is the standard ftdi vid (FTDI_VID) */
+-#define FTDI_PCDJ_DAC2_PID 0xFA88
+-
+-/*
+- * The following are the values for the Matrix Orbital LCD displays,
+- * which are the FT232BM ( similar to the 8U232AM )
+- */
+-#define FTDI_MTXORB_0_PID 0xFA00 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_1_PID 0xFA01 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_2_PID 0xFA02 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_3_PID 0xFA03 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_4_PID 0xFA04 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_5_PID 0xFA05 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_6_PID 0xFA06 /* Matrix Orbital Product Id */
+-
+-/* OOCDlink by Joern Kaipf <joernk@web.de>
+- * (http://www.joernonline.de/dw/doku.php?id=start&idx=projects:oocdlink) */
+-#define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */
+-
+-/*
+- * The following are the values for the Matrix Orbital FTDI Range
+- * Anything in this range will use an FT232RL.
+- */
+-#define MTXORB_VID 0x1B3D
+-#define MTXORB_FTDI_RANGE_0100_PID 0x0100
+-#define MTXORB_FTDI_RANGE_0101_PID 0x0101
+-#define MTXORB_FTDI_RANGE_0102_PID 0x0102
+-#define MTXORB_FTDI_RANGE_0103_PID 0x0103
+-#define MTXORB_FTDI_RANGE_0104_PID 0x0104
+-#define MTXORB_FTDI_RANGE_0105_PID 0x0105
+-#define MTXORB_FTDI_RANGE_0106_PID 0x0106
+-#define MTXORB_FTDI_RANGE_0107_PID 0x0107
+-#define MTXORB_FTDI_RANGE_0108_PID 0x0108
+-#define MTXORB_FTDI_RANGE_0109_PID 0x0109
+-#define MTXORB_FTDI_RANGE_010A_PID 0x010A
+-#define MTXORB_FTDI_RANGE_010B_PID 0x010B
+-#define MTXORB_FTDI_RANGE_010C_PID 0x010C
+-#define MTXORB_FTDI_RANGE_010D_PID 0x010D
+-#define MTXORB_FTDI_RANGE_010E_PID 0x010E
+-#define MTXORB_FTDI_RANGE_010F_PID 0x010F
+-#define MTXORB_FTDI_RANGE_0110_PID 0x0110
+-#define MTXORB_FTDI_RANGE_0111_PID 0x0111
+-#define MTXORB_FTDI_RANGE_0112_PID 0x0112
+-#define MTXORB_FTDI_RANGE_0113_PID 0x0113
+-#define MTXORB_FTDI_RANGE_0114_PID 0x0114
+-#define MTXORB_FTDI_RANGE_0115_PID 0x0115
+-#define MTXORB_FTDI_RANGE_0116_PID 0x0116
+-#define MTXORB_FTDI_RANGE_0117_PID 0x0117
+-#define MTXORB_FTDI_RANGE_0118_PID 0x0118
+-#define MTXORB_FTDI_RANGE_0119_PID 0x0119
+-#define MTXORB_FTDI_RANGE_011A_PID 0x011A
+-#define MTXORB_FTDI_RANGE_011B_PID 0x011B
+-#define MTXORB_FTDI_RANGE_011C_PID 0x011C
+-#define MTXORB_FTDI_RANGE_011D_PID 0x011D
+-#define MTXORB_FTDI_RANGE_011E_PID 0x011E
+-#define MTXORB_FTDI_RANGE_011F_PID 0x011F
+-#define MTXORB_FTDI_RANGE_0120_PID 0x0120
+-#define MTXORB_FTDI_RANGE_0121_PID 0x0121
+-#define MTXORB_FTDI_RANGE_0122_PID 0x0122
+-#define MTXORB_FTDI_RANGE_0123_PID 0x0123
+-#define MTXORB_FTDI_RANGE_0124_PID 0x0124
+-#define MTXORB_FTDI_RANGE_0125_PID 0x0125
+-#define MTXORB_FTDI_RANGE_0126_PID 0x0126
+-#define MTXORB_FTDI_RANGE_0127_PID 0x0127
+-#define MTXORB_FTDI_RANGE_0128_PID 0x0128
+-#define MTXORB_FTDI_RANGE_0129_PID 0x0129
+-#define MTXORB_FTDI_RANGE_012A_PID 0x012A
+-#define MTXORB_FTDI_RANGE_012B_PID 0x012B
+-#define MTXORB_FTDI_RANGE_012C_PID 0x012C
+-#define MTXORB_FTDI_RANGE_012D_PID 0x012D
+-#define MTXORB_FTDI_RANGE_012E_PID 0x012E
+-#define MTXORB_FTDI_RANGE_012F_PID 0x012F
+-#define MTXORB_FTDI_RANGE_0130_PID 0x0130
+-#define MTXORB_FTDI_RANGE_0131_PID 0x0131
+-#define MTXORB_FTDI_RANGE_0132_PID 0x0132
+-#define MTXORB_FTDI_RANGE_0133_PID 0x0133
+-#define MTXORB_FTDI_RANGE_0134_PID 0x0134
+-#define MTXORB_FTDI_RANGE_0135_PID 0x0135
+-#define MTXORB_FTDI_RANGE_0136_PID 0x0136
+-#define MTXORB_FTDI_RANGE_0137_PID 0x0137
+-#define MTXORB_FTDI_RANGE_0138_PID 0x0138
+-#define MTXORB_FTDI_RANGE_0139_PID 0x0139
+-#define MTXORB_FTDI_RANGE_013A_PID 0x013A
+-#define MTXORB_FTDI_RANGE_013B_PID 0x013B
+-#define MTXORB_FTDI_RANGE_013C_PID 0x013C
+-#define MTXORB_FTDI_RANGE_013D_PID 0x013D
+-#define MTXORB_FTDI_RANGE_013E_PID 0x013E
+-#define MTXORB_FTDI_RANGE_013F_PID 0x013F
+-#define MTXORB_FTDI_RANGE_0140_PID 0x0140
+-#define MTXORB_FTDI_RANGE_0141_PID 0x0141
+-#define MTXORB_FTDI_RANGE_0142_PID 0x0142
+-#define MTXORB_FTDI_RANGE_0143_PID 0x0143
+-#define MTXORB_FTDI_RANGE_0144_PID 0x0144
+-#define MTXORB_FTDI_RANGE_0145_PID 0x0145
+-#define MTXORB_FTDI_RANGE_0146_PID 0x0146
+-#define MTXORB_FTDI_RANGE_0147_PID 0x0147
+-#define MTXORB_FTDI_RANGE_0148_PID 0x0148
+-#define MTXORB_FTDI_RANGE_0149_PID 0x0149
+-#define MTXORB_FTDI_RANGE_014A_PID 0x014A
+-#define MTXORB_FTDI_RANGE_014B_PID 0x014B
+-#define MTXORB_FTDI_RANGE_014C_PID 0x014C
+-#define MTXORB_FTDI_RANGE_014D_PID 0x014D
+-#define MTXORB_FTDI_RANGE_014E_PID 0x014E
+-#define MTXORB_FTDI_RANGE_014F_PID 0x014F
+-#define MTXORB_FTDI_RANGE_0150_PID 0x0150
+-#define MTXORB_FTDI_RANGE_0151_PID 0x0151
+-#define MTXORB_FTDI_RANGE_0152_PID 0x0152
+-#define MTXORB_FTDI_RANGE_0153_PID 0x0153
+-#define MTXORB_FTDI_RANGE_0154_PID 0x0154
+-#define MTXORB_FTDI_RANGE_0155_PID 0x0155
+-#define MTXORB_FTDI_RANGE_0156_PID 0x0156
+-#define MTXORB_FTDI_RANGE_0157_PID 0x0157
+-#define MTXORB_FTDI_RANGE_0158_PID 0x0158
+-#define MTXORB_FTDI_RANGE_0159_PID 0x0159
+-#define MTXORB_FTDI_RANGE_015A_PID 0x015A
+-#define MTXORB_FTDI_RANGE_015B_PID 0x015B
+-#define MTXORB_FTDI_RANGE_015C_PID 0x015C
+-#define MTXORB_FTDI_RANGE_015D_PID 0x015D
+-#define MTXORB_FTDI_RANGE_015E_PID 0x015E
+-#define MTXORB_FTDI_RANGE_015F_PID 0x015F
+-#define MTXORB_FTDI_RANGE_0160_PID 0x0160
+-#define MTXORB_FTDI_RANGE_0161_PID 0x0161
+-#define MTXORB_FTDI_RANGE_0162_PID 0x0162
+-#define MTXORB_FTDI_RANGE_0163_PID 0x0163
+-#define MTXORB_FTDI_RANGE_0164_PID 0x0164
+-#define MTXORB_FTDI_RANGE_0165_PID 0x0165
+-#define MTXORB_FTDI_RANGE_0166_PID 0x0166
+-#define MTXORB_FTDI_RANGE_0167_PID 0x0167
+-#define MTXORB_FTDI_RANGE_0168_PID 0x0168
+-#define MTXORB_FTDI_RANGE_0169_PID 0x0169
+-#define MTXORB_FTDI_RANGE_016A_PID 0x016A
+-#define MTXORB_FTDI_RANGE_016B_PID 0x016B
+-#define MTXORB_FTDI_RANGE_016C_PID 0x016C
+-#define MTXORB_FTDI_RANGE_016D_PID 0x016D
+-#define MTXORB_FTDI_RANGE_016E_PID 0x016E
+-#define MTXORB_FTDI_RANGE_016F_PID 0x016F
+-#define MTXORB_FTDI_RANGE_0170_PID 0x0170
+-#define MTXORB_FTDI_RANGE_0171_PID 0x0171
+-#define MTXORB_FTDI_RANGE_0172_PID 0x0172
+-#define MTXORB_FTDI_RANGE_0173_PID 0x0173
+-#define MTXORB_FTDI_RANGE_0174_PID 0x0174
+-#define MTXORB_FTDI_RANGE_0175_PID 0x0175
+-#define MTXORB_FTDI_RANGE_0176_PID 0x0176
+-#define MTXORB_FTDI_RANGE_0177_PID 0x0177
+-#define MTXORB_FTDI_RANGE_0178_PID 0x0178
+-#define MTXORB_FTDI_RANGE_0179_PID 0x0179
+-#define MTXORB_FTDI_RANGE_017A_PID 0x017A
+-#define MTXORB_FTDI_RANGE_017B_PID 0x017B
+-#define MTXORB_FTDI_RANGE_017C_PID 0x017C
+-#define MTXORB_FTDI_RANGE_017D_PID 0x017D
+-#define MTXORB_FTDI_RANGE_017E_PID 0x017E
+-#define MTXORB_FTDI_RANGE_017F_PID 0x017F
+-#define MTXORB_FTDI_RANGE_0180_PID 0x0180
+-#define MTXORB_FTDI_RANGE_0181_PID 0x0181
+-#define MTXORB_FTDI_RANGE_0182_PID 0x0182
+-#define MTXORB_FTDI_RANGE_0183_PID 0x0183
+-#define MTXORB_FTDI_RANGE_0184_PID 0x0184
+-#define MTXORB_FTDI_RANGE_0185_PID 0x0185
+-#define MTXORB_FTDI_RANGE_0186_PID 0x0186
+-#define MTXORB_FTDI_RANGE_0187_PID 0x0187
+-#define MTXORB_FTDI_RANGE_0188_PID 0x0188
+-#define MTXORB_FTDI_RANGE_0189_PID 0x0189
+-#define MTXORB_FTDI_RANGE_018A_PID 0x018A
+-#define MTXORB_FTDI_RANGE_018B_PID 0x018B
+-#define MTXORB_FTDI_RANGE_018C_PID 0x018C
+-#define MTXORB_FTDI_RANGE_018D_PID 0x018D
+-#define MTXORB_FTDI_RANGE_018E_PID 0x018E
+-#define MTXORB_FTDI_RANGE_018F_PID 0x018F
+-#define MTXORB_FTDI_RANGE_0190_PID 0x0190
+-#define MTXORB_FTDI_RANGE_0191_PID 0x0191
+-#define MTXORB_FTDI_RANGE_0192_PID 0x0192
+-#define MTXORB_FTDI_RANGE_0193_PID 0x0193
+-#define MTXORB_FTDI_RANGE_0194_PID 0x0194
+-#define MTXORB_FTDI_RANGE_0195_PID 0x0195
+-#define MTXORB_FTDI_RANGE_0196_PID 0x0196
+-#define MTXORB_FTDI_RANGE_0197_PID 0x0197
+-#define MTXORB_FTDI_RANGE_0198_PID 0x0198
+-#define MTXORB_FTDI_RANGE_0199_PID 0x0199
+-#define MTXORB_FTDI_RANGE_019A_PID 0x019A
+-#define MTXORB_FTDI_RANGE_019B_PID 0x019B
+-#define MTXORB_FTDI_RANGE_019C_PID 0x019C
+-#define MTXORB_FTDI_RANGE_019D_PID 0x019D
+-#define MTXORB_FTDI_RANGE_019E_PID 0x019E
+-#define MTXORB_FTDI_RANGE_019F_PID 0x019F
+-#define MTXORB_FTDI_RANGE_01A0_PID 0x01A0
+-#define MTXORB_FTDI_RANGE_01A1_PID 0x01A1
+-#define MTXORB_FTDI_RANGE_01A2_PID 0x01A2
+-#define MTXORB_FTDI_RANGE_01A3_PID 0x01A3
+-#define MTXORB_FTDI_RANGE_01A4_PID 0x01A4
+-#define MTXORB_FTDI_RANGE_01A5_PID 0x01A5
+-#define MTXORB_FTDI_RANGE_01A6_PID 0x01A6
+-#define MTXORB_FTDI_RANGE_01A7_PID 0x01A7
+-#define MTXORB_FTDI_RANGE_01A8_PID 0x01A8
+-#define MTXORB_FTDI_RANGE_01A9_PID 0x01A9
+-#define MTXORB_FTDI_RANGE_01AA_PID 0x01AA
+-#define MTXORB_FTDI_RANGE_01AB_PID 0x01AB
+-#define MTXORB_FTDI_RANGE_01AC_PID 0x01AC
+-#define MTXORB_FTDI_RANGE_01AD_PID 0x01AD
+-#define MTXORB_FTDI_RANGE_01AE_PID 0x01AE
+-#define MTXORB_FTDI_RANGE_01AF_PID 0x01AF
+-#define MTXORB_FTDI_RANGE_01B0_PID 0x01B0
+-#define MTXORB_FTDI_RANGE_01B1_PID 0x01B1
+-#define MTXORB_FTDI_RANGE_01B2_PID 0x01B2
+-#define MTXORB_FTDI_RANGE_01B3_PID 0x01B3
+-#define MTXORB_FTDI_RANGE_01B4_PID 0x01B4
+-#define MTXORB_FTDI_RANGE_01B5_PID 0x01B5
+-#define MTXORB_FTDI_RANGE_01B6_PID 0x01B6
+-#define MTXORB_FTDI_RANGE_01B7_PID 0x01B7
+-#define MTXORB_FTDI_RANGE_01B8_PID 0x01B8
+-#define MTXORB_FTDI_RANGE_01B9_PID 0x01B9
+-#define MTXORB_FTDI_RANGE_01BA_PID 0x01BA
+-#define MTXORB_FTDI_RANGE_01BB_PID 0x01BB
+-#define MTXORB_FTDI_RANGE_01BC_PID 0x01BC
+-#define MTXORB_FTDI_RANGE_01BD_PID 0x01BD
+-#define MTXORB_FTDI_RANGE_01BE_PID 0x01BE
+-#define MTXORB_FTDI_RANGE_01BF_PID 0x01BF
+-#define MTXORB_FTDI_RANGE_01C0_PID 0x01C0
+-#define MTXORB_FTDI_RANGE_01C1_PID 0x01C1
+-#define MTXORB_FTDI_RANGE_01C2_PID 0x01C2
+-#define MTXORB_FTDI_RANGE_01C3_PID 0x01C3
+-#define MTXORB_FTDI_RANGE_01C4_PID 0x01C4
+-#define MTXORB_FTDI_RANGE_01C5_PID 0x01C5
+-#define MTXORB_FTDI_RANGE_01C6_PID 0x01C6
+-#define MTXORB_FTDI_RANGE_01C7_PID 0x01C7
+-#define MTXORB_FTDI_RANGE_01C8_PID 0x01C8
+-#define MTXORB_FTDI_RANGE_01C9_PID 0x01C9
+-#define MTXORB_FTDI_RANGE_01CA_PID 0x01CA
+-#define MTXORB_FTDI_RANGE_01CB_PID 0x01CB
+-#define MTXORB_FTDI_RANGE_01CC_PID 0x01CC
+-#define MTXORB_FTDI_RANGE_01CD_PID 0x01CD
+-#define MTXORB_FTDI_RANGE_01CE_PID 0x01CE
+-#define MTXORB_FTDI_RANGE_01CF_PID 0x01CF
+-#define MTXORB_FTDI_RANGE_01D0_PID 0x01D0
+-#define MTXORB_FTDI_RANGE_01D1_PID 0x01D1
+-#define MTXORB_FTDI_RANGE_01D2_PID 0x01D2
+-#define MTXORB_FTDI_RANGE_01D3_PID 0x01D3
+-#define MTXORB_FTDI_RANGE_01D4_PID 0x01D4
+-#define MTXORB_FTDI_RANGE_01D5_PID 0x01D5
+-#define MTXORB_FTDI_RANGE_01D6_PID 0x01D6
+-#define MTXORB_FTDI_RANGE_01D7_PID 0x01D7
+-#define MTXORB_FTDI_RANGE_01D8_PID 0x01D8
+-#define MTXORB_FTDI_RANGE_01D9_PID 0x01D9
+-#define MTXORB_FTDI_RANGE_01DA_PID 0x01DA
+-#define MTXORB_FTDI_RANGE_01DB_PID 0x01DB
+-#define MTXORB_FTDI_RANGE_01DC_PID 0x01DC
+-#define MTXORB_FTDI_RANGE_01DD_PID 0x01DD
+-#define MTXORB_FTDI_RANGE_01DE_PID 0x01DE
+-#define MTXORB_FTDI_RANGE_01DF_PID 0x01DF
+-#define MTXORB_FTDI_RANGE_01E0_PID 0x01E0
+-#define MTXORB_FTDI_RANGE_01E1_PID 0x01E1
+-#define MTXORB_FTDI_RANGE_01E2_PID 0x01E2
+-#define MTXORB_FTDI_RANGE_01E3_PID 0x01E3
+-#define MTXORB_FTDI_RANGE_01E4_PID 0x01E4
+-#define MTXORB_FTDI_RANGE_01E5_PID 0x01E5
+-#define MTXORB_FTDI_RANGE_01E6_PID 0x01E6
+-#define MTXORB_FTDI_RANGE_01E7_PID 0x01E7
+-#define MTXORB_FTDI_RANGE_01E8_PID 0x01E8
+-#define MTXORB_FTDI_RANGE_01E9_PID 0x01E9
+-#define MTXORB_FTDI_RANGE_01EA_PID 0x01EA
+-#define MTXORB_FTDI_RANGE_01EB_PID 0x01EB
+-#define MTXORB_FTDI_RANGE_01EC_PID 0x01EC
+-#define MTXORB_FTDI_RANGE_01ED_PID 0x01ED
+-#define MTXORB_FTDI_RANGE_01EE_PID 0x01EE
+-#define MTXORB_FTDI_RANGE_01EF_PID 0x01EF
+-#define MTXORB_FTDI_RANGE_01F0_PID 0x01F0
+-#define MTXORB_FTDI_RANGE_01F1_PID 0x01F1
+-#define MTXORB_FTDI_RANGE_01F2_PID 0x01F2
+-#define MTXORB_FTDI_RANGE_01F3_PID 0x01F3
+-#define MTXORB_FTDI_RANGE_01F4_PID 0x01F4
+-#define MTXORB_FTDI_RANGE_01F5_PID 0x01F5
+-#define MTXORB_FTDI_RANGE_01F6_PID 0x01F6
+-#define MTXORB_FTDI_RANGE_01F7_PID 0x01F7
+-#define MTXORB_FTDI_RANGE_01F8_PID 0x01F8
+-#define MTXORB_FTDI_RANGE_01F9_PID 0x01F9
+-#define MTXORB_FTDI_RANGE_01FA_PID 0x01FA
+-#define MTXORB_FTDI_RANGE_01FB_PID 0x01FB
+-#define MTXORB_FTDI_RANGE_01FC_PID 0x01FC
+-#define MTXORB_FTDI_RANGE_01FD_PID 0x01FD
+-#define MTXORB_FTDI_RANGE_01FE_PID 0x01FE
+-#define MTXORB_FTDI_RANGE_01FF_PID 0x01FF
+-
+-
+-
+-/* Interbiometrics USB I/O Board */
+-/* Developed for Interbiometrics by Rudolf Gugler */
+-#define INTERBIOMETRICS_VID 0x1209
+-#define INTERBIOMETRICS_IOBOARD_PID 0x1002
+-#define INTERBIOMETRICS_MINI_IOBOARD_PID 0x1006
+-
+-/*
+- * The following are the values for the Perle Systems
+- * UltraPort USB serial converters
+- */
+-#define FTDI_PERLE_ULTRAPORT_PID 0xF0C0 /* Perle UltraPort Product Id */
+-
+-/*
+- * The following are the values for the Sealevel SeaLINK+ adapters.
+- * (Original list sent by Tuan Hoang. Ian Abbott renamed the macros and
+- * removed some PIDs that don't seem to match any existing products.)
+- */
+-#define SEALEVEL_VID 0x0c52 /* Sealevel Vendor ID */
+-#define SEALEVEL_2101_PID 0x2101 /* SeaLINK+232 (2101/2105) */
+-#define SEALEVEL_2102_PID 0x2102 /* SeaLINK+485 (2102) */
+-#define SEALEVEL_2103_PID 0x2103 /* SeaLINK+232I (2103) */
+-#define SEALEVEL_2104_PID 0x2104 /* SeaLINK+485I (2104) */
+-#define SEALEVEL_2106_PID 0x9020 /* SeaLINK+422 (2106) */
+-#define SEALEVEL_2201_1_PID 0x2211 /* SeaPORT+2/232 (2201) Port 1 */
+-#define SEALEVEL_2201_2_PID 0x2221 /* SeaPORT+2/232 (2201) Port 2 */
+-#define SEALEVEL_2202_1_PID 0x2212 /* SeaPORT+2/485 (2202) Port 1 */
+-#define SEALEVEL_2202_2_PID 0x2222 /* SeaPORT+2/485 (2202) Port 2 */
+-#define SEALEVEL_2203_1_PID 0x2213 /* SeaPORT+2 (2203) Port 1 */
+-#define SEALEVEL_2203_2_PID 0x2223 /* SeaPORT+2 (2203) Port 2 */
+-#define SEALEVEL_2401_1_PID 0x2411 /* SeaPORT+4/232 (2401) Port 1 */
+-#define SEALEVEL_2401_2_PID 0x2421 /* SeaPORT+4/232 (2401) Port 2 */
+-#define SEALEVEL_2401_3_PID 0x2431 /* SeaPORT+4/232 (2401) Port 3 */
+-#define SEALEVEL_2401_4_PID 0x2441 /* SeaPORT+4/232 (2401) Port 4 */
+-#define SEALEVEL_2402_1_PID 0x2412 /* SeaPORT+4/485 (2402) Port 1 */
+-#define SEALEVEL_2402_2_PID 0x2422 /* SeaPORT+4/485 (2402) Port 2 */
+-#define SEALEVEL_2402_3_PID 0x2432 /* SeaPORT+4/485 (2402) Port 3 */
+-#define SEALEVEL_2402_4_PID 0x2442 /* SeaPORT+4/485 (2402) Port 4 */
+-#define SEALEVEL_2403_1_PID 0x2413 /* SeaPORT+4 (2403) Port 1 */
+-#define SEALEVEL_2403_2_PID 0x2423 /* SeaPORT+4 (2403) Port 2 */
+-#define SEALEVEL_2403_3_PID 0x2433 /* SeaPORT+4 (2403) Port 3 */
+-#define SEALEVEL_2403_4_PID 0x2443 /* SeaPORT+4 (2403) Port 4 */
+-#define SEALEVEL_2801_1_PID 0X2811 /* SeaLINK+8/232 (2801) Port 1 */
+-#define SEALEVEL_2801_2_PID 0X2821 /* SeaLINK+8/232 (2801) Port 2 */
+-#define SEALEVEL_2801_3_PID 0X2831 /* SeaLINK+8/232 (2801) Port 3 */
+-#define SEALEVEL_2801_4_PID 0X2841 /* SeaLINK+8/232 (2801) Port 4 */
+-#define SEALEVEL_2801_5_PID 0X2851 /* SeaLINK+8/232 (2801) Port 5 */
+-#define SEALEVEL_2801_6_PID 0X2861 /* SeaLINK+8/232 (2801) Port 6 */
+-#define SEALEVEL_2801_7_PID 0X2871 /* SeaLINK+8/232 (2801) Port 7 */
+-#define SEALEVEL_2801_8_PID 0X2881 /* SeaLINK+8/232 (2801) Port 8 */
+-#define SEALEVEL_2802_1_PID 0X2812 /* SeaLINK+8/485 (2802) Port 1 */
+-#define SEALEVEL_2802_2_PID 0X2822 /* SeaLINK+8/485 (2802) Port 2 */
+-#define SEALEVEL_2802_3_PID 0X2832 /* SeaLINK+8/485 (2802) Port 3 */
+-#define SEALEVEL_2802_4_PID 0X2842 /* SeaLINK+8/485 (2802) Port 4 */
+-#define SEALEVEL_2802_5_PID 0X2852 /* SeaLINK+8/485 (2802) Port 5 */
+-#define SEALEVEL_2802_6_PID 0X2862 /* SeaLINK+8/485 (2802) Port 6 */
+-#define SEALEVEL_2802_7_PID 0X2872 /* SeaLINK+8/485 (2802) Port 7 */
+-#define SEALEVEL_2802_8_PID 0X2882 /* SeaLINK+8/485 (2802) Port 8 */
+-#define SEALEVEL_2803_1_PID 0X2813 /* SeaLINK+8 (2803) Port 1 */
+-#define SEALEVEL_2803_2_PID 0X2823 /* SeaLINK+8 (2803) Port 2 */
+-#define SEALEVEL_2803_3_PID 0X2833 /* SeaLINK+8 (2803) Port 3 */
+-#define SEALEVEL_2803_4_PID 0X2843 /* SeaLINK+8 (2803) Port 4 */
+-#define SEALEVEL_2803_5_PID 0X2853 /* SeaLINK+8 (2803) Port 5 */
+-#define SEALEVEL_2803_6_PID 0X2863 /* SeaLINK+8 (2803) Port 6 */
+-#define SEALEVEL_2803_7_PID 0X2873 /* SeaLINK+8 (2803) Port 7 */
+-#define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */
+-
+-/*
+- * The following are the values for two KOBIL chipcard terminals.
+- */
+-#define KOBIL_VID 0x0d46 /* KOBIL Vendor ID */
+-#define KOBIL_CONV_B1_PID 0x2020 /* KOBIL Konverter for B1 */
+-#define KOBIL_CONV_KAAN_PID 0x2021 /* KOBIL_Konverter for KAAN */
+-
+-/*
+- * Icom ID-1 digital transceiver
+- */
+-
+-#define ICOM_ID1_VID 0x0C26
+-#define ICOM_ID1_PID 0x0004
+-
+-/*
+- * ASK.fr devices
+- */
+-#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
+-
+-/*
+- * FTDI USB UART chips used in construction projects from the
+- * Elektor Electronics magazine (http://elektor-electronics.co.uk)
+- */
+-#define ELEKTOR_VID 0x0C7D
+-#define ELEKTOR_FT323R_PID 0x0005 /* RFID-Reader, issue 09-2006 */
+-
+-/*
+- * DSS-20 Sync Station for Sony Ericsson P800
+- */
+-#define FTDI_DSS20_PID 0xFC82
+-
+-/*
+- * Home Electronics (www.home-electro.com) USB gadgets
+- */
+-#define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR transceiver */
+-
+-/* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */
+-/* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */
+-#define FTDI_USB_UIRT_PID 0xF850 /* Product Id */
+-
+-/* TNC-X USB-to-packet-radio adapter, versions prior to 3.0 (DLP module) */
+-
+-#define FTDI_TNC_X_PID 0xEBE0
+-
+-/*
+- * ELV USB devices submitted by Christian Abt of ELV (www.elv.de).
+- * All of these devices use FTDI's vendor ID (0x0403).
+- *
+- * The previously included PID for the UO 100 module was incorrect.
+- * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58).
+- *
+- * Armin Laeuger originally sent the PID for the UM 100 module.
+- */
+-#define FTDI_R2000KU_TRUE_RNG 0xFB80 /* R2000KU TRUE RNG */
+-#define FTDI_ELV_UR100_PID 0xFB58 /* USB-RS232-Umsetzer (UR 100) */
+-#define FTDI_ELV_UM100_PID 0xFB5A /* USB-Modul UM 100 */
+-#define FTDI_ELV_UO100_PID 0xFB5B /* USB-Modul UO 100 */
+-#define FTDI_ELV_ALC8500_PID 0xF06E /* ALC 8500 Expert */
+-/* Additional ELV PIDs that default to using the FTDI D2XX drivers on
+- * MS Windows, rather than the FTDI Virtual Com Port drivers.
+- * Maybe these will be easier to use with the libftdi/libusb user-space
+- * drivers, or possibly the Comedi drivers in some cases. */
+-#define FTDI_ELV_CLI7000_PID 0xFB59 /* Computer-Light-Interface (CLI 7000) */
+-#define FTDI_ELV_PPS7330_PID 0xFB5C /* Processor-Power-Supply (PPS 7330) */
+-#define FTDI_ELV_TFM100_PID 0xFB5D /* Temperartur-Feuchte Messgeraet (TFM 100) */
+-#define FTDI_ELV_UDF77_PID 0xFB5E /* USB DCF Funkurh (UDF 77) */
+-#define FTDI_ELV_UIO88_PID 0xFB5F /* USB-I/O Interface (UIO 88) */
+-#define FTDI_ELV_UAD8_PID 0xF068 /* USB-AD-Wandler (UAD 8) */
+-#define FTDI_ELV_UDA7_PID 0xF069 /* USB-DA-Wandler (UDA 7) */
+-#define FTDI_ELV_USI2_PID 0xF06A /* USB-Schrittmotoren-Interface (USI 2) */
+-#define FTDI_ELV_T1100_PID 0xF06B /* Thermometer (T 1100) */
+-#define FTDI_ELV_PCD200_PID 0xF06C /* PC-Datenlogger (PCD 200) */
+-#define FTDI_ELV_ULA200_PID 0xF06D /* USB-LCD-Ansteuerung (ULA 200) */
+-#define FTDI_ELV_FHZ1000PC_PID 0xF06F /* FHZ 1000 PC */
+-#define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */
+-#define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */
+-#define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */
+-#define FTDI_ELV_RFP500_PID 0xE0F3 /* HF-Leistungsmesser (RFP 500) */
+-#define FTDI_ELV_FS20SIG_PID 0xE0F4 /* Signalgeber (FS 20 SIG) */
+-#define FTDI_ELV_WS300PC_PID 0xE0F6 /* PC-Wetterstation (WS 300 PC) */
+-#define FTDI_ELV_FHZ1300PC_PID 0xE0E8 /* FHZ 1300 PC */
+-#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */
+-#define FTDI_ELV_HS485_PID 0xE0EA /* USB to RS-485 adapter */
+-#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */
+-#define FTDI_PHI_FISCO_PID 0xE40B /* PHI Fisco USB to Serial cable */
+-
+-/*
+- * Definitions for ID TECH (www.idt-net.com) devices
+- */
+-#define IDTECH_VID 0x0ACD /* ID TECH Vendor ID */
+-#define IDTECH_IDT1221U_PID 0x0300 /* IDT1221U USB to RS-232 adapter */
+-
+-/*
+- * Definitions for Omnidirectional Control Technology, Inc. devices
+- */
+-#define OCT_VID 0x0B39 /* OCT vendor ID */
+-/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */
+-/* Also rebadged as Dick Smith Electronics (Aus) XH6451 */
+-/* Also rebadged as SIIG Inc. model US2308 hardware version 1 */
+-#define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */
+-
+-/* an infrared receiver for user access control with IR tags */
+-#define FTDI_PIEGROUP_PID 0xF208 /* Product Id */
+-
+-/*
+- * Definitions for Artemis astronomical USB based cameras
+- * Check it at http://www.artemisccd.co.uk/
+- */
+-#define FTDI_ARTEMIS_PID 0xDF28 /* All Artemis Cameras */
+-
+-/*
+- * Definitions for ATIK Instruments astronomical USB based cameras
+- * Check it at http://www.atik-instruments.com/
+- */
+-#define FTDI_ATIK_ATK16_PID 0xDF30 /* ATIK ATK-16 Grayscale Camera */
+-#define FTDI_ATIK_ATK16C_PID 0xDF32 /* ATIK ATK-16C Colour Camera */
+-#define FTDI_ATIK_ATK16HR_PID 0xDF31 /* ATIK ATK-16HR Grayscale Camera */
+-#define FTDI_ATIK_ATK16HRC_PID 0xDF33 /* ATIK ATK-16HRC Colour Camera */
+-#define FTDI_ATIK_ATK16IC_PID 0xDF35 /* ATIK ATK-16IC Grayscale Camera */
+-
+-/*
+- * Protego product ids
+- */
+-#define PROTEGO_SPECIAL_1 0xFC70 /* special/unknown device */
+-#define PROTEGO_R2X0 0xFC71 /* R200-USB TRNG unit (R210, R220, and R230) */
+-#define PROTEGO_SPECIAL_3 0xFC72 /* special/unknown device */
+-#define PROTEGO_SPECIAL_4 0xFC73 /* special/unknown device */
+-
+-/*
+- * Gude Analog- und Digitalsysteme GmbH
+- */
+-#define FTDI_GUDEADS_E808_PID 0xE808
+-#define FTDI_GUDEADS_E809_PID 0xE809
+-#define FTDI_GUDEADS_E80A_PID 0xE80A
+-#define FTDI_GUDEADS_E80B_PID 0xE80B
+-#define FTDI_GUDEADS_E80C_PID 0xE80C
+-#define FTDI_GUDEADS_E80D_PID 0xE80D
+-#define FTDI_GUDEADS_E80E_PID 0xE80E
+-#define FTDI_GUDEADS_E80F_PID 0xE80F
+-#define FTDI_GUDEADS_E888_PID 0xE888 /* Expert ISDN Control USB */
+-#define FTDI_GUDEADS_E889_PID 0xE889 /* USB RS-232 OptoBridge */
+-#define FTDI_GUDEADS_E88A_PID 0xE88A
+-#define FTDI_GUDEADS_E88B_PID 0xE88B
+-#define FTDI_GUDEADS_E88C_PID 0xE88C
+-#define FTDI_GUDEADS_E88D_PID 0xE88D
+-#define FTDI_GUDEADS_E88E_PID 0xE88E
+-#define FTDI_GUDEADS_E88F_PID 0xE88F
+-
+-/*
+- * Linx Technologies product ids
+- */
+-#define LINX_SDMUSBQSS_PID 0xF448 /* Linx SDM-USB-QS-S */
+-#define LINX_MASTERDEVEL2_PID 0xF449 /* Linx Master Development 2.0 */
+-#define LINX_FUTURE_0_PID 0xF44A /* Linx future device */
+-#define LINX_FUTURE_1_PID 0xF44B /* Linx future device */
+-#define LINX_FUTURE_2_PID 0xF44C /* Linx future device */
+-
+-/* CCS Inc. ICDU/ICDU40 product ID - the FT232BM is used in an in-circuit-debugger */
+-/* unit for PIC16's/PIC18's */
+-#define FTDI_CCSICDU20_0_PID 0xF9D0
+-#define FTDI_CCSICDU40_1_PID 0xF9D1
+-#define FTDI_CCSMACHX_2_PID 0xF9D2
+-#define FTDI_CCSLOAD_N_GO_3_PID 0xF9D3
+-#define FTDI_CCSICDU64_4_PID 0xF9D4
+-#define FTDI_CCSPRIME8_5_PID 0xF9D5
+-
+-/* Inside Accesso contactless reader (http://www.insidefr.com) */
+-#define INSIDE_ACCESSO 0xFAD0
+-
+-/*
+- * Intrepid Control Systems (http://www.intrepidcs.com/) ValueCAN and NeoVI
+- */
+-#define INTREPID_VID 0x093C
+-#define INTREPID_VALUECAN_PID 0x0601
+-#define INTREPID_NEOVI_PID 0x0701
+-
+-/*
+- * Falcom Wireless Communications GmbH
+- */
+-#define FALCOM_VID 0x0F94 /* Vendor Id */
+-#define FALCOM_TWIST_PID 0x0001 /* Falcom Twist USB GPRS modem */
+-#define FALCOM_SAMBA_PID 0x0005 /* Falcom Samba USB GPRS modem */
+-
+-/*
+- * SUUNTO product ids
+- */
+-#define FTDI_SUUNTO_SPORTS_PID 0xF680 /* Suunto Sports instrument */
+-
+-/*
+- * Oceanic product ids
+- */
+-#define FTDI_OCEANIC_PID 0xF460 /* Oceanic dive instrument */
+-
+-/*
+- * TTi (Thurlby Thandar Instruments)
+- */
+-#define TTI_VID 0x103E /* Vendor Id */
+-#define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */
+-
+-/*
+- * Definitions for B&B Electronics products.
+- */
+-#define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */
+-#define BANDB_USOTL4_PID 0xAC01 /* USOTL4 Isolated RS-485 Converter */
+-#define BANDB_USTL4_PID 0xAC02 /* USTL4 RS-485 Converter */
+-#define BANDB_USO9ML2_PID 0xAC03 /* USO9ML2 Isolated RS-232 Converter */
+-#define BANDB_USOPTL4_PID 0xAC11
+-#define BANDB_USPTL4_PID 0xAC12
+-#define BANDB_USO9ML2DR_2_PID 0xAC16
+-#define BANDB_USO9ML2DR_PID 0xAC17
+-#define BANDB_USOPTL4DR2_PID 0xAC18 /* USOPTL4R-2 2-port Isolated RS-232 Converter */
+-#define BANDB_USOPTL4DR_PID 0xAC19
+-#define BANDB_485USB9F_2W_PID 0xAC25
+-#define BANDB_485USB9F_4W_PID 0xAC26
+-#define BANDB_232USB9M_PID 0xAC27
+-#define BANDB_485USBTB_2W_PID 0xAC33
+-#define BANDB_485USBTB_4W_PID 0xAC34
+-#define BANDB_TTL5USB9M_PID 0xAC49
+-#define BANDB_TTL3USB9M_PID 0xAC50
+-#define BANDB_ZZ_PROG1_USB_PID 0xBA02
+-
+-/*
+- * RM Michaelides CANview USB (http://www.rmcan.com)
+- * CAN fieldbus interface adapter, added by port GmbH www.port.de)
+- * Ian Abbott changed the macro names for consistency.
+- */
+-#define FTDI_RM_CANVIEW_PID 0xfd60 /* Product Id */
+-
+-/*
+- * EVER Eco Pro UPS (http://www.ever.com.pl/)
+- */
+-
+-#define EVER_ECO_PRO_CDS 0xe520 /* RS-232 converter */
+-
+-/*
+- * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485,
+- * USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices
+- * and I'm not entirely sure which are used by which.
+- */
+-#define FTDI_4N_GALAXY_DE_1_PID 0xF3C0
+-#define FTDI_4N_GALAXY_DE_2_PID 0xF3C1
+-
+-/*
+- * Mobility Electronics products.
+- */
+-#define MOBILITY_VID 0x1342
+-#define MOBILITY_USB_SERIAL_PID 0x0202 /* EasiDock USB 200 serial */
+-
+-/*
+- * microHAM product IDs (http://www.microham.com).
+- * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>
+- * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>.
+- * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file.
+- */
+-#define FTDI_MHAM_KW_PID 0xEEE8 /* USB-KW interface */
+-#define FTDI_MHAM_YS_PID 0xEEE9 /* USB-YS interface */
+-#define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */
+-#define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */
+-#define FTDI_MHAM_IC_PID 0xEEEC /* USB-IC interface */
+-#define FTDI_MHAM_DB9_PID 0xEEED /* USB-DB9 interface */
+-#define FTDI_MHAM_RS232_PID 0xEEEE /* USB-RS232 interface */
+-#define FTDI_MHAM_Y9_PID 0xEEEF /* USB-Y9 interface */
+-
+-/*
+- * Active Robots product ids.
+- */
+-#define FTDI_ACTIVE_ROBOTS_PID 0xE548 /* USB comms board */
+-
+-/*
+- * Xsens Technologies BV products (http://www.xsens.com).
+- */
+-#define XSENS_CONVERTER_0_PID 0xD388
+-#define XSENS_CONVERTER_1_PID 0xD389
+-#define XSENS_CONVERTER_2_PID 0xD38A
+-#define XSENS_CONVERTER_3_PID 0xD38B
+-#define XSENS_CONVERTER_4_PID 0xD38C
+-#define XSENS_CONVERTER_5_PID 0xD38D
+-#define XSENS_CONVERTER_6_PID 0xD38E
+-#define XSENS_CONVERTER_7_PID 0xD38F
+-
+-/*
+- * Teratronik product ids.
+- * Submitted by O. Wölfelschneider.
+- */
+-#define FTDI_TERATRONIK_VCP_PID 0xEC88 /* Teratronik device (preferring VCP driver on windows) */
+-#define FTDI_TERATRONIK_D2XX_PID 0xEC89 /* Teratronik device (preferring D2XX driver on windows) */
+-
+-/*
+- * Evolution Robotics products (http://www.evolution.com/).
+- * Submitted by Shawn M. Lavelle.
+- */
+-#define EVOLUTION_VID 0xDEEE /* Vendor ID */
+-#define EVOLUTION_ER1_PID 0x0300 /* ER1 Control Module */
+-#define EVO_8U232AM_PID 0x02FF /* Evolution robotics RCM2 (FT232AM)*/
+-#define EVO_HYBRID_PID 0x0302 /* Evolution robotics RCM4 PID (FT232BM)*/
+-#define EVO_RCM4_PID 0x0303 /* Evolution robotics RCM4 PID */
+-
+-/* Pyramid Computer GmbH */
+-#define FTDI_PYRAMID_PID 0xE6C8 /* Pyramid Appliance Display */
+-
+-/*
+- * NDI (www.ndigital.com) product ids
+- */
+-#define FTDI_NDI_HUC_PID 0xDA70 /* NDI Host USB Converter */
+-#define FTDI_NDI_SPECTRA_SCU_PID 0xDA71 /* NDI Spectra SCU */
+-#define FTDI_NDI_FUTURE_2_PID 0xDA72 /* NDI future device #2 */
+-#define FTDI_NDI_FUTURE_3_PID 0xDA73 /* NDI future device #3 */
+-#define FTDI_NDI_AURORA_SCU_PID 0xDA74 /* NDI Aurora SCU */
+-
+-/*
+- * Posiflex inc retail equipment (http://www.posiflex.com.tw)
+- */
+-#define POSIFLEX_VID 0x0d3a /* Vendor ID */
+-#define POSIFLEX_PP7000_PID 0x0300 /* PP-7000II thermal printer */
+-
+-/*
+- * Westrex International devices submitted by Cory Lee
+- */
+-#define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */
+-#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */
+-
+-/*
+- * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
+- */
+-#define FTDI_RRCIRKITS_LOCOBUFFER_PID 0xc7d0 /* LocoBuffer USB */
+-
+-/*
+- * Eclo (http://www.eclo.pt/) product IDs.
+- * PID 0xEA90 submitted by Martin Grill.
+- */
+-#define FTDI_ECLO_COM_1WIRE_PID 0xEA90 /* COM to 1-Wire USB adaptor */
+-
+-/*
+- * Papouch products (http://www.papouch.com/)
+- * Submitted by Folkert van Heusden
+- */
+-
+-#define PAPOUCH_VID 0x5050 /* Vendor ID */
+-#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
+-#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
+-
+-/*
+- * ACG Identification Technologies GmbH products (http://www.acg.de/).
+- * Submitted by anton -at- goto10 -dot- org.
+- */
+-#define FTDI_ACG_HFDUAL_PID 0xDD20 /* HF Dual ISO Reader (RFID) */
+-
+-/*
+- * Yost Engineering, Inc. products (www.yostengineering.com).
+- * PID 0xE050 submitted by Aaron Prose.
+- */
+-#define FTDI_YEI_SERVOCENTER31_PID 0xE050 /* YEI ServoCenter3.1 USB */
+-
+-/*
+- * ThorLabs USB motor drivers
+- */
+-#define FTDI_THORLABS_PID 0xfaf0 /* ThorLabs USB motor drivers */
+-
+-/*
+- * Testo products (http://www.testo.com/)
+- * Submitted by Colin Leroy
+- */
+-#define TESTO_VID 0x128D
+-#define TESTO_USB_INTERFACE_PID 0x0001
+-
+-/*
+- * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com.
+- */
+-#define FTDI_GAMMA_SCOUT_PID 0xD678 /* Gamma Scout online */
+-
+-/*
+- * Tactrix OpenPort (ECU) devices.
+- * OpenPort 1.3M submitted by Donour Sizemore.
+- * OpenPort 1.3S and 1.3U submitted by Ian Abbott.
+- */
+-#define FTDI_TACTRIX_OPENPORT_13M_PID 0xCC48 /* OpenPort 1.3 Mitsubishi */
+-#define FTDI_TACTRIX_OPENPORT_13S_PID 0xCC49 /* OpenPort 1.3 Subaru */
+-#define FTDI_TACTRIX_OPENPORT_13U_PID 0xCC4A /* OpenPort 1.3 Universal */
+-
+-/*
+- * Telldus Technologies
+ */
+-#define TELLDUS_VID 0x1781 /* Vendor ID */
+-#define TELLDUS_TELLSTICK_PID 0x0C30 /* RF control dongle 433 MHz using FT232RL */
+-
+-/*
+- * IBS elektronik product ids
+- * Submitted by Thomas Schleusener
+- */
+-#define FTDI_IBS_US485_PID 0xff38 /* IBS US485 (USB<-->RS422/485 interface) */
+-#define FTDI_IBS_PICPRO_PID 0xff39 /* IBS PIC-Programmer */
+-#define FTDI_IBS_PCMCIA_PID 0xff3a /* IBS Card reader for PCMCIA SRAM-cards */
+-#define FTDI_IBS_PK1_PID 0xff3b /* IBS PK1 - Particel counter */
+-#define FTDI_IBS_RS232MON_PID 0xff3c /* IBS RS232 - Monitor */
+-#define FTDI_IBS_APP70_PID 0xff3d /* APP 70 (dust monitoring system) */
+-#define FTDI_IBS_PEDO_PID 0xff3e /* IBS PEDO-Modem (RF modem 868.35 MHz) */
+-#define FTDI_IBS_PROD_PID 0xff3f /* future device */
+-
+-/*
+- * MaxStream devices www.maxstream.net
+- */
+-#define FTDI_MAXSTREAM_PID 0xEE18 /* Xbee PKG-U Module */
+-
+-/* Olimex */
+-#define OLIMEX_VID 0x15BA
+-#define OLIMEX_ARM_USB_OCD_PID 0x0003
+-
+-/* Luminary Micro Stellaris Boards, VID = FTDI_VID */
+-/* FTDI 2332C Dual channel device, side A=245 FIFO (JTAG), Side B=RS232 UART */
+-#define LMI_LM3S_DEVEL_BOARD_PID 0xbcd8
+-#define LMI_LM3S_EVAL_BOARD_PID 0xbcd9
+-
+-/* www.elsterelectricity.com Elster Unicom III Optical Probe */
+-#define FTDI_ELSTER_UNICOM_PID 0xE700 /* Product Id */
+-
+-/*
+- * The Mobility Lab (TML)
+- * Submitted by Pierre Castella
+- */
+-#define TML_VID 0x1B91 /* Vendor ID */
+-#define TML_USB_SERIAL_PID 0x0064 /* USB - Serial Converter */
+-
+-/* Propox devices */
+-#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
+-
+-/* Rig Expert Ukraine devices */
+-#define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
+-
+-/* Domintell products http://www.domintell.com */
+-#define FTDI_DOMINTELL_DGQG_PID 0xEF50 /* Master */
+-#define FTDI_DOMINTELL_DUSB_PID 0xEF51 /* DUSB01 module */
+-
+-/* Alti-2 products http://www.alti-2.com */
+-#define ALTI2_VID 0x1BC9
+-#define ALTI2_N3_PID 0x6001 /* Neptune 3 */
+
+ /* Commands */
+ #define FTDI_SIO_RESET 0 /* Reset the port */
+@@ -910,86 +40,6 @@
+ #define INTERFACE_C 3
+ #define INTERFACE_D 4
+
+-/*
+- * FIC / OpenMoko, Inc. http://wiki.openmoko.org/wiki/Neo1973_Debug_Board_v3
+- * Submitted by Harald Welte <laforge@openmoko.org>
+- */
+-#define FIC_VID 0x1457
+-#define FIC_NEO1973_DEBUG_PID 0x5118
+-
+-/*
+- * RATOC REX-USB60F
+- */
+-#define RATOC_VENDOR_ID 0x0584
+-#define RATOC_PRODUCT_ID_USB60F 0xb020
+-
+-/*
+- * DIEBOLD BCS SE923
+- */
+-#define DIEBOLD_BCS_SE923_PID 0xfb99
+-
+-/*
+- * Atmel STK541
+- */
+-#define ATMEL_VID 0x03eb /* Vendor ID */
+-#define STK541_PID 0x2109 /* Zigbee Controller */
+-
+-/*
+- * Dresden Elektronic Sensor Terminal Board
+- */
+-#define DE_VID 0x1cf1 /* Vendor ID */
+-#define STB_PID 0x0001 /* Sensor Terminal Board */
+-#define WHT_PID 0x0004 /* Wireless Handheld Terminal */
+-
+-/*
+- * Blackfin gnICE JTAG
+- * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
+- */
+-#define ADI_VID 0x0456
+-#define ADI_GNICE_PID 0xF000
+-#define ADI_GNICEPLUS_PID 0xF001
+-
+-/*
+- * JETI SPECTROMETER SPECBOS 1201
+- * http://www.jeti.com/products/sys/scb/scb1201.php
+- */
+-#define JETI_VID 0x0c6c
+-#define JETI_SPC1201_PID 0x04b2
+-
+-/*
+- * Marvell SheevaPlug
+- */
+-#define MARVELL_VID 0x9e88
+-#define MARVELL_SHEEVAPLUG_PID 0x9e8f
+-
+-#define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmBH */
+-
+-/*
+- * GN Otometrics (http://www.otometrics.com)
+- * Submitted by Ville Sundberg.
+- */
+-#define GN_OTOMETRICS_VID 0x0c33 /* Vendor ID */
+-#define AURICAL_USB_PID 0x0010 /* Aurical USB Audiometer */
+-
+-/*
+- * Bayer Ascensia Contour blood glucose meter USB-converter cable.
+- * http://winglucofacts.com/cables/
+- */
+-#define BAYER_VID 0x1A79
+-#define BAYER_CONTOUR_CABLE_PID 0x6001
+-
+-/*
+- * Marvell OpenRD Base, Client
+- * http://www.open-rd.org
+- * OpenRD Base, Client use VID 0x0403
+- */
+-#define MARVELL_OPENRD_PID 0x9e90
+-
+-/*
+- * Hameg HO820 and HO870 interface (using VID 0x0403)
+- */
+-#define HAMEG_HO820_PID 0xed74
+-#define HAMEG_HO870_PID 0xed71
+
+ /*
+ * BmRequestType: 1100 0000b
+@@ -1504,4 +554,3 @@ typedef enum {
+ * B2..7 Length of message - (not including Byte 0)
+ *
+ */
+-
+--- /dev/null
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -0,0 +1,959 @@
++/*
++ * vendor/product IDs (VID/PID) of devices using FTDI USB serial converters.
++ *
++ * Philipp G�hring - pg@futureware.at - added the Device ID of the USB relais
++ * from Rudolf Gugler
++ *
++ */
++
++#define FTDI_VID 0x0403 /* Vendor Id */
++#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
++#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */
++#define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */
++#define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
++#define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
++#define FTDI_4232H_PID 0x6011 /* Quad channel hi-speed device */
++#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */
++#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */
++#define FTDI_NF_RIC_PID 0x0001 /* Product Id */
++#define FTDI_USBX_707_PID 0xF857 /* ADSTech IR Blaster USBX-707 */
++
++/* Larsen and Brusgaard AltiTrack/USBtrack */
++#define LARSENBRUSGAARD_VID 0x0FD8
++#define LB_ALTITRACK_PID 0x0001
++
++/* www.canusb.com Lawicel CANUSB device */
++#define FTDI_CANUSB_PID 0xFFA8 /* Product Id */
++
++/* AlphaMicro Components AMC-232USB01 device */
++#define FTDI_AMC232_PID 0xFF00 /* Product Id */
++
++/* www.candapter.com Ewert Energy Systems CANdapter device */
++#define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
++
++/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
++/* the VID is the standard ftdi vid (FTDI_VID) */
++#define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
++#define FTDI_SCS_DEVICE_1_PID 0xD011 /* SCS Tracker / DSP TNC */
++#define FTDI_SCS_DEVICE_2_PID 0xD012
++#define FTDI_SCS_DEVICE_3_PID 0xD013
++#define FTDI_SCS_DEVICE_4_PID 0xD014
++#define FTDI_SCS_DEVICE_5_PID 0xD015
++#define FTDI_SCS_DEVICE_6_PID 0xD016
++#define FTDI_SCS_DEVICE_7_PID 0xD017
++
++/* ACT Solutions HomePro ZWave interface (http://www.act-solutions.com/HomePro.htm) */
++#define FTDI_ACTZWAVE_PID 0xF2D0
++
++
++/* www.starting-point-systems.com �Chameleon device */
++#define FTDI_MICRO_CHAMELEON_PID 0xCAA0 /* Product Id */
++
++/* www.irtrans.de device */
++#define FTDI_IRTRANS_PID 0xFC60 /* Product Id */
++
++
++/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
++#define FTDI_TTUSB_PID 0xFF20 /* Product Id */
++
++/* iPlus device */
++#define FTDI_IPLUS_PID 0xD070 /* Product Id */
++#define FTDI_IPLUS2_PID 0xD071 /* Product Id */
++
++/* DMX4ALL DMX Interfaces */
++#define FTDI_DMX4ALL 0xC850
++
++/* OpenDCC (www.opendcc.de) product id */
++#define FTDI_OPENDCC_PID 0xBFD8
++#define FTDI_OPENDCC_SNIFFER_PID 0xBFD9
++#define FTDI_OPENDCC_THROTTLE_PID 0xBFDA
++#define FTDI_OPENDCC_GATEWAY_PID 0xBFDB
++
++/* Sprog II (Andrew Crosland's SprogII DCC interface) */
++#define FTDI_SPROG_II 0xF0C8
++
++/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
++/* they use the ftdi chipset for the USB interface and the vendor id is the same */
++#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
++#define FTDI_XF_634_PID 0xFC09 /* 634: 20x4 Character Display */
++#define FTDI_XF_547_PID 0xFC0A /* 547: Two line Display */
++#define FTDI_XF_633_PID 0xFC0B /* 633: 16x2 Character Display with Keys */
++#define FTDI_XF_631_PID 0xFC0C /* 631: 20x2 Character Display */
++#define FTDI_XF_635_PID 0xFC0D /* 635: 20x4 Character Display */
++#define FTDI_XF_640_PID 0xFC0E /* 640: Two line Display */
++#define FTDI_XF_642_PID 0xFC0F /* 642: Two line Display */
++
++/* Video Networks Limited / Homechoice in the UK use an ftdi-based device for their 1Mb */
++/* broadband internet service. The following PID is exhibited by the usb device supplied */
++/* (the VID is the standard ftdi vid (FTDI_VID) */
++#define FTDI_VNHCPCUSB_D_PID 0xfe38 /* Product Id */
++
++/*
++ * PCDJ use ftdi based dj-controllers. The following PID is for their DAC-2 device
++ * http://www.pcdjhardware.com/DAC2.asp (PID sent by Wouter Paesen)
++ * (the VID is the standard ftdi vid (FTDI_VID) */
++#define FTDI_PCDJ_DAC2_PID 0xFA88
++
++/*
++ * The following are the values for the Matrix Orbital LCD displays,
++ * which are the FT232BM ( similar to the 8U232AM )
++ */
++#define FTDI_MTXORB_0_PID 0xFA00 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_1_PID 0xFA01 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_2_PID 0xFA02 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_3_PID 0xFA03 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_4_PID 0xFA04 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_5_PID 0xFA05 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_6_PID 0xFA06 /* Matrix Orbital Product Id */
++
++/* OOCDlink by Joern Kaipf <joernk@web.de>
++ * (http://www.joernonline.de/dw/doku.php?id=start&idx=projects:oocdlink) */
++#define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */
++
++/*
++ * The following are the values for the Matrix Orbital FTDI Range
++ * Anything in this range will use an FT232RL.
++ */
++#define MTXORB_VID 0x1B3D
++#define MTXORB_FTDI_RANGE_0100_PID 0x0100
++#define MTXORB_FTDI_RANGE_0101_PID 0x0101
++#define MTXORB_FTDI_RANGE_0102_PID 0x0102
++#define MTXORB_FTDI_RANGE_0103_PID 0x0103
++#define MTXORB_FTDI_RANGE_0104_PID 0x0104
++#define MTXORB_FTDI_RANGE_0105_PID 0x0105
++#define MTXORB_FTDI_RANGE_0106_PID 0x0106
++#define MTXORB_FTDI_RANGE_0107_PID 0x0107
++#define MTXORB_FTDI_RANGE_0108_PID 0x0108
++#define MTXORB_FTDI_RANGE_0109_PID 0x0109
++#define MTXORB_FTDI_RANGE_010A_PID 0x010A
++#define MTXORB_FTDI_RANGE_010B_PID 0x010B
++#define MTXORB_FTDI_RANGE_010C_PID 0x010C
++#define MTXORB_FTDI_RANGE_010D_PID 0x010D
++#define MTXORB_FTDI_RANGE_010E_PID 0x010E
++#define MTXORB_FTDI_RANGE_010F_PID 0x010F
++#define MTXORB_FTDI_RANGE_0110_PID 0x0110
++#define MTXORB_FTDI_RANGE_0111_PID 0x0111
++#define MTXORB_FTDI_RANGE_0112_PID 0x0112
++#define MTXORB_FTDI_RANGE_0113_PID 0x0113
++#define MTXORB_FTDI_RANGE_0114_PID 0x0114
++#define MTXORB_FTDI_RANGE_0115_PID 0x0115
++#define MTXORB_FTDI_RANGE_0116_PID 0x0116
++#define MTXORB_FTDI_RANGE_0117_PID 0x0117
++#define MTXORB_FTDI_RANGE_0118_PID 0x0118
++#define MTXORB_FTDI_RANGE_0119_PID 0x0119
++#define MTXORB_FTDI_RANGE_011A_PID 0x011A
++#define MTXORB_FTDI_RANGE_011B_PID 0x011B
++#define MTXORB_FTDI_RANGE_011C_PID 0x011C
++#define MTXORB_FTDI_RANGE_011D_PID 0x011D
++#define MTXORB_FTDI_RANGE_011E_PID 0x011E
++#define MTXORB_FTDI_RANGE_011F_PID 0x011F
++#define MTXORB_FTDI_RANGE_0120_PID 0x0120
++#define MTXORB_FTDI_RANGE_0121_PID 0x0121
++#define MTXORB_FTDI_RANGE_0122_PID 0x0122
++#define MTXORB_FTDI_RANGE_0123_PID 0x0123
++#define MTXORB_FTDI_RANGE_0124_PID 0x0124
++#define MTXORB_FTDI_RANGE_0125_PID 0x0125
++#define MTXORB_FTDI_RANGE_0126_PID 0x0126
++#define MTXORB_FTDI_RANGE_0127_PID 0x0127
++#define MTXORB_FTDI_RANGE_0128_PID 0x0128
++#define MTXORB_FTDI_RANGE_0129_PID 0x0129
++#define MTXORB_FTDI_RANGE_012A_PID 0x012A
++#define MTXORB_FTDI_RANGE_012B_PID 0x012B
++#define MTXORB_FTDI_RANGE_012C_PID 0x012C
++#define MTXORB_FTDI_RANGE_012D_PID 0x012D
++#define MTXORB_FTDI_RANGE_012E_PID 0x012E
++#define MTXORB_FTDI_RANGE_012F_PID 0x012F
++#define MTXORB_FTDI_RANGE_0130_PID 0x0130
++#define MTXORB_FTDI_RANGE_0131_PID 0x0131
++#define MTXORB_FTDI_RANGE_0132_PID 0x0132
++#define MTXORB_FTDI_RANGE_0133_PID 0x0133
++#define MTXORB_FTDI_RANGE_0134_PID 0x0134
++#define MTXORB_FTDI_RANGE_0135_PID 0x0135
++#define MTXORB_FTDI_RANGE_0136_PID 0x0136
++#define MTXORB_FTDI_RANGE_0137_PID 0x0137
++#define MTXORB_FTDI_RANGE_0138_PID 0x0138
++#define MTXORB_FTDI_RANGE_0139_PID 0x0139
++#define MTXORB_FTDI_RANGE_013A_PID 0x013A
++#define MTXORB_FTDI_RANGE_013B_PID 0x013B
++#define MTXORB_FTDI_RANGE_013C_PID 0x013C
++#define MTXORB_FTDI_RANGE_013D_PID 0x013D
++#define MTXORB_FTDI_RANGE_013E_PID 0x013E
++#define MTXORB_FTDI_RANGE_013F_PID 0x013F
++#define MTXORB_FTDI_RANGE_0140_PID 0x0140
++#define MTXORB_FTDI_RANGE_0141_PID 0x0141
++#define MTXORB_FTDI_RANGE_0142_PID 0x0142
++#define MTXORB_FTDI_RANGE_0143_PID 0x0143
++#define MTXORB_FTDI_RANGE_0144_PID 0x0144
++#define MTXORB_FTDI_RANGE_0145_PID 0x0145
++#define MTXORB_FTDI_RANGE_0146_PID 0x0146
++#define MTXORB_FTDI_RANGE_0147_PID 0x0147
++#define MTXORB_FTDI_RANGE_0148_PID 0x0148
++#define MTXORB_FTDI_RANGE_0149_PID 0x0149
++#define MTXORB_FTDI_RANGE_014A_PID 0x014A
++#define MTXORB_FTDI_RANGE_014B_PID 0x014B
++#define MTXORB_FTDI_RANGE_014C_PID 0x014C
++#define MTXORB_FTDI_RANGE_014D_PID 0x014D
++#define MTXORB_FTDI_RANGE_014E_PID 0x014E
++#define MTXORB_FTDI_RANGE_014F_PID 0x014F
++#define MTXORB_FTDI_RANGE_0150_PID 0x0150
++#define MTXORB_FTDI_RANGE_0151_PID 0x0151
++#define MTXORB_FTDI_RANGE_0152_PID 0x0152
++#define MTXORB_FTDI_RANGE_0153_PID 0x0153
++#define MTXORB_FTDI_RANGE_0154_PID 0x0154
++#define MTXORB_FTDI_RANGE_0155_PID 0x0155
++#define MTXORB_FTDI_RANGE_0156_PID 0x0156
++#define MTXORB_FTDI_RANGE_0157_PID 0x0157
++#define MTXORB_FTDI_RANGE_0158_PID 0x0158
++#define MTXORB_FTDI_RANGE_0159_PID 0x0159
++#define MTXORB_FTDI_RANGE_015A_PID 0x015A
++#define MTXORB_FTDI_RANGE_015B_PID 0x015B
++#define MTXORB_FTDI_RANGE_015C_PID 0x015C
++#define MTXORB_FTDI_RANGE_015D_PID 0x015D
++#define MTXORB_FTDI_RANGE_015E_PID 0x015E
++#define MTXORB_FTDI_RANGE_015F_PID 0x015F
++#define MTXORB_FTDI_RANGE_0160_PID 0x0160
++#define MTXORB_FTDI_RANGE_0161_PID 0x0161
++#define MTXORB_FTDI_RANGE_0162_PID 0x0162
++#define MTXORB_FTDI_RANGE_0163_PID 0x0163
++#define MTXORB_FTDI_RANGE_0164_PID 0x0164
++#define MTXORB_FTDI_RANGE_0165_PID 0x0165
++#define MTXORB_FTDI_RANGE_0166_PID 0x0166
++#define MTXORB_FTDI_RANGE_0167_PID 0x0167
++#define MTXORB_FTDI_RANGE_0168_PID 0x0168
++#define MTXORB_FTDI_RANGE_0169_PID 0x0169
++#define MTXORB_FTDI_RANGE_016A_PID 0x016A
++#define MTXORB_FTDI_RANGE_016B_PID 0x016B
++#define MTXORB_FTDI_RANGE_016C_PID 0x016C
++#define MTXORB_FTDI_RANGE_016D_PID 0x016D
++#define MTXORB_FTDI_RANGE_016E_PID 0x016E
++#define MTXORB_FTDI_RANGE_016F_PID 0x016F
++#define MTXORB_FTDI_RANGE_0170_PID 0x0170
++#define MTXORB_FTDI_RANGE_0171_PID 0x0171
++#define MTXORB_FTDI_RANGE_0172_PID 0x0172
++#define MTXORB_FTDI_RANGE_0173_PID 0x0173
++#define MTXORB_FTDI_RANGE_0174_PID 0x0174
++#define MTXORB_FTDI_RANGE_0175_PID 0x0175
++#define MTXORB_FTDI_RANGE_0176_PID 0x0176
++#define MTXORB_FTDI_RANGE_0177_PID 0x0177
++#define MTXORB_FTDI_RANGE_0178_PID 0x0178
++#define MTXORB_FTDI_RANGE_0179_PID 0x0179
++#define MTXORB_FTDI_RANGE_017A_PID 0x017A
++#define MTXORB_FTDI_RANGE_017B_PID 0x017B
++#define MTXORB_FTDI_RANGE_017C_PID 0x017C
++#define MTXORB_FTDI_RANGE_017D_PID 0x017D
++#define MTXORB_FTDI_RANGE_017E_PID 0x017E
++#define MTXORB_FTDI_RANGE_017F_PID 0x017F
++#define MTXORB_FTDI_RANGE_0180_PID 0x0180
++#define MTXORB_FTDI_RANGE_0181_PID 0x0181
++#define MTXORB_FTDI_RANGE_0182_PID 0x0182
++#define MTXORB_FTDI_RANGE_0183_PID 0x0183
++#define MTXORB_FTDI_RANGE_0184_PID 0x0184
++#define MTXORB_FTDI_RANGE_0185_PID 0x0185
++#define MTXORB_FTDI_RANGE_0186_PID 0x0186
++#define MTXORB_FTDI_RANGE_0187_PID 0x0187
++#define MTXORB_FTDI_RANGE_0188_PID 0x0188
++#define MTXORB_FTDI_RANGE_0189_PID 0x0189
++#define MTXORB_FTDI_RANGE_018A_PID 0x018A
++#define MTXORB_FTDI_RANGE_018B_PID 0x018B
++#define MTXORB_FTDI_RANGE_018C_PID 0x018C
++#define MTXORB_FTDI_RANGE_018D_PID 0x018D
++#define MTXORB_FTDI_RANGE_018E_PID 0x018E
++#define MTXORB_FTDI_RANGE_018F_PID 0x018F
++#define MTXORB_FTDI_RANGE_0190_PID 0x0190
++#define MTXORB_FTDI_RANGE_0191_PID 0x0191
++#define MTXORB_FTDI_RANGE_0192_PID 0x0192
++#define MTXORB_FTDI_RANGE_0193_PID 0x0193
++#define MTXORB_FTDI_RANGE_0194_PID 0x0194
++#define MTXORB_FTDI_RANGE_0195_PID 0x0195
++#define MTXORB_FTDI_RANGE_0196_PID 0x0196
++#define MTXORB_FTDI_RANGE_0197_PID 0x0197
++#define MTXORB_FTDI_RANGE_0198_PID 0x0198
++#define MTXORB_FTDI_RANGE_0199_PID 0x0199
++#define MTXORB_FTDI_RANGE_019A_PID 0x019A
++#define MTXORB_FTDI_RANGE_019B_PID 0x019B
++#define MTXORB_FTDI_RANGE_019C_PID 0x019C
++#define MTXORB_FTDI_RANGE_019D_PID 0x019D
++#define MTXORB_FTDI_RANGE_019E_PID 0x019E
++#define MTXORB_FTDI_RANGE_019F_PID 0x019F
++#define MTXORB_FTDI_RANGE_01A0_PID 0x01A0
++#define MTXORB_FTDI_RANGE_01A1_PID 0x01A1
++#define MTXORB_FTDI_RANGE_01A2_PID 0x01A2
++#define MTXORB_FTDI_RANGE_01A3_PID 0x01A3
++#define MTXORB_FTDI_RANGE_01A4_PID 0x01A4
++#define MTXORB_FTDI_RANGE_01A5_PID 0x01A5
++#define MTXORB_FTDI_RANGE_01A6_PID 0x01A6
++#define MTXORB_FTDI_RANGE_01A7_PID 0x01A7
++#define MTXORB_FTDI_RANGE_01A8_PID 0x01A8
++#define MTXORB_FTDI_RANGE_01A9_PID 0x01A9
++#define MTXORB_FTDI_RANGE_01AA_PID 0x01AA
++#define MTXORB_FTDI_RANGE_01AB_PID 0x01AB
++#define MTXORB_FTDI_RANGE_01AC_PID 0x01AC
++#define MTXORB_FTDI_RANGE_01AD_PID 0x01AD
++#define MTXORB_FTDI_RANGE_01AE_PID 0x01AE
++#define MTXORB_FTDI_RANGE_01AF_PID 0x01AF
++#define MTXORB_FTDI_RANGE_01B0_PID 0x01B0
++#define MTXORB_FTDI_RANGE_01B1_PID 0x01B1
++#define MTXORB_FTDI_RANGE_01B2_PID 0x01B2
++#define MTXORB_FTDI_RANGE_01B3_PID 0x01B3
++#define MTXORB_FTDI_RANGE_01B4_PID 0x01B4
++#define MTXORB_FTDI_RANGE_01B5_PID 0x01B5
++#define MTXORB_FTDI_RANGE_01B6_PID 0x01B6
++#define MTXORB_FTDI_RANGE_01B7_PID 0x01B7
++#define MTXORB_FTDI_RANGE_01B8_PID 0x01B8
++#define MTXORB_FTDI_RANGE_01B9_PID 0x01B9
++#define MTXORB_FTDI_RANGE_01BA_PID 0x01BA
++#define MTXORB_FTDI_RANGE_01BB_PID 0x01BB
++#define MTXORB_FTDI_RANGE_01BC_PID 0x01BC
++#define MTXORB_FTDI_RANGE_01BD_PID 0x01BD
++#define MTXORB_FTDI_RANGE_01BE_PID 0x01BE
++#define MTXORB_FTDI_RANGE_01BF_PID 0x01BF
++#define MTXORB_FTDI_RANGE_01C0_PID 0x01C0
++#define MTXORB_FTDI_RANGE_01C1_PID 0x01C1
++#define MTXORB_FTDI_RANGE_01C2_PID 0x01C2
++#define MTXORB_FTDI_RANGE_01C3_PID 0x01C3
++#define MTXORB_FTDI_RANGE_01C4_PID 0x01C4
++#define MTXORB_FTDI_RANGE_01C5_PID 0x01C5
++#define MTXORB_FTDI_RANGE_01C6_PID 0x01C6
++#define MTXORB_FTDI_RANGE_01C7_PID 0x01C7
++#define MTXORB_FTDI_RANGE_01C8_PID 0x01C8
++#define MTXORB_FTDI_RANGE_01C9_PID 0x01C9
++#define MTXORB_FTDI_RANGE_01CA_PID 0x01CA
++#define MTXORB_FTDI_RANGE_01CB_PID 0x01CB
++#define MTXORB_FTDI_RANGE_01CC_PID 0x01CC
++#define MTXORB_FTDI_RANGE_01CD_PID 0x01CD
++#define MTXORB_FTDI_RANGE_01CE_PID 0x01CE
++#define MTXORB_FTDI_RANGE_01CF_PID 0x01CF
++#define MTXORB_FTDI_RANGE_01D0_PID 0x01D0
++#define MTXORB_FTDI_RANGE_01D1_PID 0x01D1
++#define MTXORB_FTDI_RANGE_01D2_PID 0x01D2
++#define MTXORB_FTDI_RANGE_01D3_PID 0x01D3
++#define MTXORB_FTDI_RANGE_01D4_PID 0x01D4
++#define MTXORB_FTDI_RANGE_01D5_PID 0x01D5
++#define MTXORB_FTDI_RANGE_01D6_PID 0x01D6
++#define MTXORB_FTDI_RANGE_01D7_PID 0x01D7
++#define MTXORB_FTDI_RANGE_01D8_PID 0x01D8
++#define MTXORB_FTDI_RANGE_01D9_PID 0x01D9
++#define MTXORB_FTDI_RANGE_01DA_PID 0x01DA
++#define MTXORB_FTDI_RANGE_01DB_PID 0x01DB
++#define MTXORB_FTDI_RANGE_01DC_PID 0x01DC
++#define MTXORB_FTDI_RANGE_01DD_PID 0x01DD
++#define MTXORB_FTDI_RANGE_01DE_PID 0x01DE
++#define MTXORB_FTDI_RANGE_01DF_PID 0x01DF
++#define MTXORB_FTDI_RANGE_01E0_PID 0x01E0
++#define MTXORB_FTDI_RANGE_01E1_PID 0x01E1
++#define MTXORB_FTDI_RANGE_01E2_PID 0x01E2
++#define MTXORB_FTDI_RANGE_01E3_PID 0x01E3
++#define MTXORB_FTDI_RANGE_01E4_PID 0x01E4
++#define MTXORB_FTDI_RANGE_01E5_PID 0x01E5
++#define MTXORB_FTDI_RANGE_01E6_PID 0x01E6
++#define MTXORB_FTDI_RANGE_01E7_PID 0x01E7
++#define MTXORB_FTDI_RANGE_01E8_PID 0x01E8
++#define MTXORB_FTDI_RANGE_01E9_PID 0x01E9
++#define MTXORB_FTDI_RANGE_01EA_PID 0x01EA
++#define MTXORB_FTDI_RANGE_01EB_PID 0x01EB
++#define MTXORB_FTDI_RANGE_01EC_PID 0x01EC
++#define MTXORB_FTDI_RANGE_01ED_PID 0x01ED
++#define MTXORB_FTDI_RANGE_01EE_PID 0x01EE
++#define MTXORB_FTDI_RANGE_01EF_PID 0x01EF
++#define MTXORB_FTDI_RANGE_01F0_PID 0x01F0
++#define MTXORB_FTDI_RANGE_01F1_PID 0x01F1
++#define MTXORB_FTDI_RANGE_01F2_PID 0x01F2
++#define MTXORB_FTDI_RANGE_01F3_PID 0x01F3
++#define MTXORB_FTDI_RANGE_01F4_PID 0x01F4
++#define MTXORB_FTDI_RANGE_01F5_PID 0x01F5
++#define MTXORB_FTDI_RANGE_01F6_PID 0x01F6
++#define MTXORB_FTDI_RANGE_01F7_PID 0x01F7
++#define MTXORB_FTDI_RANGE_01F8_PID 0x01F8
++#define MTXORB_FTDI_RANGE_01F9_PID 0x01F9
++#define MTXORB_FTDI_RANGE_01FA_PID 0x01FA
++#define MTXORB_FTDI_RANGE_01FB_PID 0x01FB
++#define MTXORB_FTDI_RANGE_01FC_PID 0x01FC
++#define MTXORB_FTDI_RANGE_01FD_PID 0x01FD
++#define MTXORB_FTDI_RANGE_01FE_PID 0x01FE
++#define MTXORB_FTDI_RANGE_01FF_PID 0x01FF
++
++
++
++/* Interbiometrics USB I/O Board */
++/* Developed for Interbiometrics by Rudolf Gugler */
++#define INTERBIOMETRICS_VID 0x1209
++#define INTERBIOMETRICS_IOBOARD_PID 0x1002
++#define INTERBIOMETRICS_MINI_IOBOARD_PID 0x1006
++
++/*
++ * The following are the values for the Perle Systems
++ * UltraPort USB serial converters
++ */
++#define FTDI_PERLE_ULTRAPORT_PID 0xF0C0 /* Perle UltraPort Product Id */
++
++/*
++ * The following are the values for the Sealevel SeaLINK+ adapters.
++ * (Original list sent by Tuan Hoang. Ian Abbott renamed the macros and
++ * removed some PIDs that don't seem to match any existing products.)
++ */
++#define SEALEVEL_VID 0x0c52 /* Sealevel Vendor ID */
++#define SEALEVEL_2101_PID 0x2101 /* SeaLINK+232 (2101/2105) */
++#define SEALEVEL_2102_PID 0x2102 /* SeaLINK+485 (2102) */
++#define SEALEVEL_2103_PID 0x2103 /* SeaLINK+232I (2103) */
++#define SEALEVEL_2104_PID 0x2104 /* SeaLINK+485I (2104) */
++#define SEALEVEL_2106_PID 0x9020 /* SeaLINK+422 (2106) */
++#define SEALEVEL_2201_1_PID 0x2211 /* SeaPORT+2/232 (2201) Port 1 */
++#define SEALEVEL_2201_2_PID 0x2221 /* SeaPORT+2/232 (2201) Port 2 */
++#define SEALEVEL_2202_1_PID 0x2212 /* SeaPORT+2/485 (2202) Port 1 */
++#define SEALEVEL_2202_2_PID 0x2222 /* SeaPORT+2/485 (2202) Port 2 */
++#define SEALEVEL_2203_1_PID 0x2213 /* SeaPORT+2 (2203) Port 1 */
++#define SEALEVEL_2203_2_PID 0x2223 /* SeaPORT+2 (2203) Port 2 */
++#define SEALEVEL_2401_1_PID 0x2411 /* SeaPORT+4/232 (2401) Port 1 */
++#define SEALEVEL_2401_2_PID 0x2421 /* SeaPORT+4/232 (2401) Port 2 */
++#define SEALEVEL_2401_3_PID 0x2431 /* SeaPORT+4/232 (2401) Port 3 */
++#define SEALEVEL_2401_4_PID 0x2441 /* SeaPORT+4/232 (2401) Port 4 */
++#define SEALEVEL_2402_1_PID 0x2412 /* SeaPORT+4/485 (2402) Port 1 */
++#define SEALEVEL_2402_2_PID 0x2422 /* SeaPORT+4/485 (2402) Port 2 */
++#define SEALEVEL_2402_3_PID 0x2432 /* SeaPORT+4/485 (2402) Port 3 */
++#define SEALEVEL_2402_4_PID 0x2442 /* SeaPORT+4/485 (2402) Port 4 */
++#define SEALEVEL_2403_1_PID 0x2413 /* SeaPORT+4 (2403) Port 1 */
++#define SEALEVEL_2403_2_PID 0x2423 /* SeaPORT+4 (2403) Port 2 */
++#define SEALEVEL_2403_3_PID 0x2433 /* SeaPORT+4 (2403) Port 3 */
++#define SEALEVEL_2403_4_PID 0x2443 /* SeaPORT+4 (2403) Port 4 */
++#define SEALEVEL_2801_1_PID 0X2811 /* SeaLINK+8/232 (2801) Port 1 */
++#define SEALEVEL_2801_2_PID 0X2821 /* SeaLINK+8/232 (2801) Port 2 */
++#define SEALEVEL_2801_3_PID 0X2831 /* SeaLINK+8/232 (2801) Port 3 */
++#define SEALEVEL_2801_4_PID 0X2841 /* SeaLINK+8/232 (2801) Port 4 */
++#define SEALEVEL_2801_5_PID 0X2851 /* SeaLINK+8/232 (2801) Port 5 */
++#define SEALEVEL_2801_6_PID 0X2861 /* SeaLINK+8/232 (2801) Port 6 */
++#define SEALEVEL_2801_7_PID 0X2871 /* SeaLINK+8/232 (2801) Port 7 */
++#define SEALEVEL_2801_8_PID 0X2881 /* SeaLINK+8/232 (2801) Port 8 */
++#define SEALEVEL_2802_1_PID 0X2812 /* SeaLINK+8/485 (2802) Port 1 */
++#define SEALEVEL_2802_2_PID 0X2822 /* SeaLINK+8/485 (2802) Port 2 */
++#define SEALEVEL_2802_3_PID 0X2832 /* SeaLINK+8/485 (2802) Port 3 */
++#define SEALEVEL_2802_4_PID 0X2842 /* SeaLINK+8/485 (2802) Port 4 */
++#define SEALEVEL_2802_5_PID 0X2852 /* SeaLINK+8/485 (2802) Port 5 */
++#define SEALEVEL_2802_6_PID 0X2862 /* SeaLINK+8/485 (2802) Port 6 */
++#define SEALEVEL_2802_7_PID 0X2872 /* SeaLINK+8/485 (2802) Port 7 */
++#define SEALEVEL_2802_8_PID 0X2882 /* SeaLINK+8/485 (2802) Port 8 */
++#define SEALEVEL_2803_1_PID 0X2813 /* SeaLINK+8 (2803) Port 1 */
++#define SEALEVEL_2803_2_PID 0X2823 /* SeaLINK+8 (2803) Port 2 */
++#define SEALEVEL_2803_3_PID 0X2833 /* SeaLINK+8 (2803) Port 3 */
++#define SEALEVEL_2803_4_PID 0X2843 /* SeaLINK+8 (2803) Port 4 */
++#define SEALEVEL_2803_5_PID 0X2853 /* SeaLINK+8 (2803) Port 5 */
++#define SEALEVEL_2803_6_PID 0X2863 /* SeaLINK+8 (2803) Port 6 */
++#define SEALEVEL_2803_7_PID 0X2873 /* SeaLINK+8 (2803) Port 7 */
++#define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */
++
++/*
++ * The following are the values for two KOBIL chipcard terminals.
++ */
++#define KOBIL_VID 0x0d46 /* KOBIL Vendor ID */
++#define KOBIL_CONV_B1_PID 0x2020 /* KOBIL Konverter for B1 */
++#define KOBIL_CONV_KAAN_PID 0x2021 /* KOBIL_Konverter for KAAN */
++
++/*
++ * Icom ID-1 digital transceiver
++ */
++
++#define ICOM_ID1_VID 0x0C26
++#define ICOM_ID1_PID 0x0004
++
++/*
++ * ASK.fr devices
++ */
++#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
++
++/*
++ * FTDI USB UART chips used in construction projects from the
++ * Elektor Electronics magazine (http://elektor-electronics.co.uk)
++ */
++#define ELEKTOR_VID 0x0C7D
++#define ELEKTOR_FT323R_PID 0x0005 /* RFID-Reader, issue 09-2006 */
++
++/*
++ * DSS-20 Sync Station for Sony Ericsson P800
++ */
++#define FTDI_DSS20_PID 0xFC82
++
++/*
++ * Home Electronics (www.home-electro.com) USB gadgets
++ */
++#define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR transceiver */
++
++/* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */
++/* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */
++#define FTDI_USB_UIRT_PID 0xF850 /* Product Id */
++
++/* TNC-X USB-to-packet-radio adapter, versions prior to 3.0 (DLP module) */
++
++#define FTDI_TNC_X_PID 0xEBE0
++
++/*
++ * ELV USB devices submitted by Christian Abt of ELV (www.elv.de).
++ * All of these devices use FTDI's vendor ID (0x0403).
++ *
++ * The previously included PID for the UO 100 module was incorrect.
++ * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58).
++ *
++ * Armin Laeuger originally sent the PID for the UM 100 module.
++ */
++#define FTDI_R2000KU_TRUE_RNG 0xFB80 /* R2000KU TRUE RNG */
++#define FTDI_ELV_UR100_PID 0xFB58 /* USB-RS232-Umsetzer (UR 100) */
++#define FTDI_ELV_UM100_PID 0xFB5A /* USB-Modul UM 100 */
++#define FTDI_ELV_UO100_PID 0xFB5B /* USB-Modul UO 100 */
++#define FTDI_ELV_ALC8500_PID 0xF06E /* ALC 8500 Expert */
++/* Additional ELV PIDs that default to using the FTDI D2XX drivers on
++ * MS Windows, rather than the FTDI Virtual Com Port drivers.
++ * Maybe these will be easier to use with the libftdi/libusb user-space
++ * drivers, or possibly the Comedi drivers in some cases. */
++#define FTDI_ELV_CLI7000_PID 0xFB59 /* Computer-Light-Interface (CLI 7000) */
++#define FTDI_ELV_PPS7330_PID 0xFB5C /* Processor-Power-Supply (PPS 7330) */
++#define FTDI_ELV_TFM100_PID 0xFB5D /* Temperartur-Feuchte Messgeraet (TFM 100) */
++#define FTDI_ELV_UDF77_PID 0xFB5E /* USB DCF Funkurh (UDF 77) */
++#define FTDI_ELV_UIO88_PID 0xFB5F /* USB-I/O Interface (UIO 88) */
++#define FTDI_ELV_UAD8_PID 0xF068 /* USB-AD-Wandler (UAD 8) */
++#define FTDI_ELV_UDA7_PID 0xF069 /* USB-DA-Wandler (UDA 7) */
++#define FTDI_ELV_USI2_PID 0xF06A /* USB-Schrittmotoren-Interface (USI 2) */
++#define FTDI_ELV_T1100_PID 0xF06B /* Thermometer (T 1100) */
++#define FTDI_ELV_PCD200_PID 0xF06C /* PC-Datenlogger (PCD 200) */
++#define FTDI_ELV_ULA200_PID 0xF06D /* USB-LCD-Ansteuerung (ULA 200) */
++#define FTDI_ELV_FHZ1000PC_PID 0xF06F /* FHZ 1000 PC */
++#define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */
++#define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */
++#define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */
++#define FTDI_ELV_RFP500_PID 0xE0F3 /* HF-Leistungsmesser (RFP 500) */
++#define FTDI_ELV_FS20SIG_PID 0xE0F4 /* Signalgeber (FS 20 SIG) */
++#define FTDI_ELV_WS300PC_PID 0xE0F6 /* PC-Wetterstation (WS 300 PC) */
++#define FTDI_ELV_FHZ1300PC_PID 0xE0E8 /* FHZ 1300 PC */
++#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */
++#define FTDI_ELV_HS485_PID 0xE0EA /* USB to RS-485 adapter */
++#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */
++#define FTDI_PHI_FISCO_PID 0xE40B /* PHI Fisco USB to Serial cable */
++
++/*
++ * Definitions for ID TECH (www.idt-net.com) devices
++ */
++#define IDTECH_VID 0x0ACD /* ID TECH Vendor ID */
++#define IDTECH_IDT1221U_PID 0x0300 /* IDT1221U USB to RS-232 adapter */
++
++/*
++ * Definitions for Omnidirectional Control Technology, Inc. devices
++ */
++#define OCT_VID 0x0B39 /* OCT vendor ID */
++/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */
++/* Also rebadged as Dick Smith Electronics (Aus) XH6451 */
++/* Also rebadged as SIIG Inc. model US2308 hardware version 1 */
++#define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */
++
++/* an infrared receiver for user access control with IR tags */
++#define FTDI_PIEGROUP_PID 0xF208 /* Product Id */
++
++/*
++ * Definitions for Artemis astronomical USB based cameras
++ * Check it at http://www.artemisccd.co.uk/
++ */
++#define FTDI_ARTEMIS_PID 0xDF28 /* All Artemis Cameras */
++
++/*
++ * Definitions for ATIK Instruments astronomical USB based cameras
++ * Check it at http://www.atik-instruments.com/
++ */
++#define FTDI_ATIK_ATK16_PID 0xDF30 /* ATIK ATK-16 Grayscale Camera */
++#define FTDI_ATIK_ATK16C_PID 0xDF32 /* ATIK ATK-16C Colour Camera */
++#define FTDI_ATIK_ATK16HR_PID 0xDF31 /* ATIK ATK-16HR Grayscale Camera */
++#define FTDI_ATIK_ATK16HRC_PID 0xDF33 /* ATIK ATK-16HRC Colour Camera */
++#define FTDI_ATIK_ATK16IC_PID 0xDF35 /* ATIK ATK-16IC Grayscale Camera */
++
++/*
++ * Protego product ids
++ */
++#define PROTEGO_SPECIAL_1 0xFC70 /* special/unknown device */
++#define PROTEGO_R2X0 0xFC71 /* R200-USB TRNG unit (R210, R220, and R230) */
++#define PROTEGO_SPECIAL_3 0xFC72 /* special/unknown device */
++#define PROTEGO_SPECIAL_4 0xFC73 /* special/unknown device */
++
++/*
++ * Gude Analog- und Digitalsysteme GmbH
++ */
++#define FTDI_GUDEADS_E808_PID 0xE808
++#define FTDI_GUDEADS_E809_PID 0xE809
++#define FTDI_GUDEADS_E80A_PID 0xE80A
++#define FTDI_GUDEADS_E80B_PID 0xE80B
++#define FTDI_GUDEADS_E80C_PID 0xE80C
++#define FTDI_GUDEADS_E80D_PID 0xE80D
++#define FTDI_GUDEADS_E80E_PID 0xE80E
++#define FTDI_GUDEADS_E80F_PID 0xE80F
++#define FTDI_GUDEADS_E888_PID 0xE888 /* Expert ISDN Control USB */
++#define FTDI_GUDEADS_E889_PID 0xE889 /* USB RS-232 OptoBridge */
++#define FTDI_GUDEADS_E88A_PID 0xE88A
++#define FTDI_GUDEADS_E88B_PID 0xE88B
++#define FTDI_GUDEADS_E88C_PID 0xE88C
++#define FTDI_GUDEADS_E88D_PID 0xE88D
++#define FTDI_GUDEADS_E88E_PID 0xE88E
++#define FTDI_GUDEADS_E88F_PID 0xE88F
++
++/*
++ * Linx Technologies product ids
++ */
++#define LINX_SDMUSBQSS_PID 0xF448 /* Linx SDM-USB-QS-S */
++#define LINX_MASTERDEVEL2_PID 0xF449 /* Linx Master Development 2.0 */
++#define LINX_FUTURE_0_PID 0xF44A /* Linx future device */
++#define LINX_FUTURE_1_PID 0xF44B /* Linx future device */
++#define LINX_FUTURE_2_PID 0xF44C /* Linx future device */
++
++/* CCS Inc. ICDU/ICDU40 product ID - the FT232BM is used in an in-circuit-debugger */
++/* unit for PIC16's/PIC18's */
++#define FTDI_CCSICDU20_0_PID 0xF9D0
++#define FTDI_CCSICDU40_1_PID 0xF9D1
++#define FTDI_CCSMACHX_2_PID 0xF9D2
++#define FTDI_CCSLOAD_N_GO_3_PID 0xF9D3
++#define FTDI_CCSICDU64_4_PID 0xF9D4
++#define FTDI_CCSPRIME8_5_PID 0xF9D5
++
++/* Inside Accesso contactless reader (http://www.insidefr.com) */
++#define INSIDE_ACCESSO 0xFAD0
++
++/*
++ * Intrepid Control Systems (http://www.intrepidcs.com/) ValueCAN and NeoVI
++ */
++#define INTREPID_VID 0x093C
++#define INTREPID_VALUECAN_PID 0x0601
++#define INTREPID_NEOVI_PID 0x0701
++
++/*
++ * Falcom Wireless Communications GmbH
++ */
++#define FALCOM_VID 0x0F94 /* Vendor Id */
++#define FALCOM_TWIST_PID 0x0001 /* Falcom Twist USB GPRS modem */
++#define FALCOM_SAMBA_PID 0x0005 /* Falcom Samba USB GPRS modem */
++
++/*
++ * SUUNTO product ids
++ */
++#define FTDI_SUUNTO_SPORTS_PID 0xF680 /* Suunto Sports instrument */
++
++/*
++ * Oceanic product ids
++ */
++#define FTDI_OCEANIC_PID 0xF460 /* Oceanic dive instrument */
++
++/*
++ * TTi (Thurlby Thandar Instruments)
++ */
++#define TTI_VID 0x103E /* Vendor Id */
++#define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */
++
++/*
++ * Definitions for B&B Electronics products.
++ */
++#define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */
++#define BANDB_USOTL4_PID 0xAC01 /* USOTL4 Isolated RS-485 Converter */
++#define BANDB_USTL4_PID 0xAC02 /* USTL4 RS-485 Converter */
++#define BANDB_USO9ML2_PID 0xAC03 /* USO9ML2 Isolated RS-232 Converter */
++#define BANDB_USOPTL4_PID 0xAC11
++#define BANDB_USPTL4_PID 0xAC12
++#define BANDB_USO9ML2DR_2_PID 0xAC16
++#define BANDB_USO9ML2DR_PID 0xAC17
++#define BANDB_USOPTL4DR2_PID 0xAC18 /* USOPTL4R-2 2-port Isolated RS-232 Converter */
++#define BANDB_USOPTL4DR_PID 0xAC19
++#define BANDB_485USB9F_2W_PID 0xAC25
++#define BANDB_485USB9F_4W_PID 0xAC26
++#define BANDB_232USB9M_PID 0xAC27
++#define BANDB_485USBTB_2W_PID 0xAC33
++#define BANDB_485USBTB_4W_PID 0xAC34
++#define BANDB_TTL5USB9M_PID 0xAC49
++#define BANDB_TTL3USB9M_PID 0xAC50
++#define BANDB_ZZ_PROG1_USB_PID 0xBA02
++
++/*
++ * RM Michaelides CANview USB (http://www.rmcan.com)
++ * CAN fieldbus interface adapter, added by port GmbH www.port.de)
++ * Ian Abbott changed the macro names for consistency.
++ */
++#define FTDI_RM_CANVIEW_PID 0xfd60 /* Product Id */
++
++/*
++ * EVER Eco Pro UPS (http://www.ever.com.pl/)
++ */
++
++#define EVER_ECO_PRO_CDS 0xe520 /* RS-232 converter */
++
++/*
++ * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485,
++ * USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices
++ * and I'm not entirely sure which are used by which.
++ */
++#define FTDI_4N_GALAXY_DE_1_PID 0xF3C0
++#define FTDI_4N_GALAXY_DE_2_PID 0xF3C1
++
++/*
++ * Mobility Electronics products.
++ */
++#define MOBILITY_VID 0x1342
++#define MOBILITY_USB_SERIAL_PID 0x0202 /* EasiDock USB 200 serial */
++
++/*
++ * microHAM product IDs (http://www.microham.com).
++ * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>
++ * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>.
++ * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file.
++ */
++#define FTDI_MHAM_KW_PID 0xEEE8 /* USB-KW interface */
++#define FTDI_MHAM_YS_PID 0xEEE9 /* USB-YS interface */
++#define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */
++#define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */
++#define FTDI_MHAM_IC_PID 0xEEEC /* USB-IC interface */
++#define FTDI_MHAM_DB9_PID 0xEEED /* USB-DB9 interface */
++#define FTDI_MHAM_RS232_PID 0xEEEE /* USB-RS232 interface */
++#define FTDI_MHAM_Y9_PID 0xEEEF /* USB-Y9 interface */
++
++/*
++ * Active Robots product ids.
++ */
++#define FTDI_ACTIVE_ROBOTS_PID 0xE548 /* USB comms board */
++
++/*
++ * Xsens Technologies BV products (http://www.xsens.com).
++ */
++#define XSENS_CONVERTER_0_PID 0xD388
++#define XSENS_CONVERTER_1_PID 0xD389
++#define XSENS_CONVERTER_2_PID 0xD38A
++#define XSENS_CONVERTER_3_PID 0xD38B
++#define XSENS_CONVERTER_4_PID 0xD38C
++#define XSENS_CONVERTER_5_PID 0xD38D
++#define XSENS_CONVERTER_6_PID 0xD38E
++#define XSENS_CONVERTER_7_PID 0xD38F
++
++/*
++ * Teratronik product ids.
++ * Submitted by O. W�lfelschneider.
++ */
++#define FTDI_TERATRONIK_VCP_PID 0xEC88 /* Teratronik device (preferring VCP driver on windows) */
++#define FTDI_TERATRONIK_D2XX_PID 0xEC89 /* Teratronik device (preferring D2XX driver on windows) */
++
++/*
++ * Evolution Robotics products (http://www.evolution.com/).
++ * Submitted by Shawn M. Lavelle.
++ */
++#define EVOLUTION_VID 0xDEEE /* Vendor ID */
++#define EVOLUTION_ER1_PID 0x0300 /* ER1 Control Module */
++#define EVO_8U232AM_PID 0x02FF /* Evolution robotics RCM2 (FT232AM)*/
++#define EVO_HYBRID_PID 0x0302 /* Evolution robotics RCM4 PID (FT232BM)*/
++#define EVO_RCM4_PID 0x0303 /* Evolution robotics RCM4 PID */
++
++/* Pyramid Computer GmbH */
++#define FTDI_PYRAMID_PID 0xE6C8 /* Pyramid Appliance Display */
++
++/*
++ * NDI (www.ndigital.com) product ids
++ */
++#define FTDI_NDI_HUC_PID 0xDA70 /* NDI Host USB Converter */
++#define FTDI_NDI_SPECTRA_SCU_PID 0xDA71 /* NDI Spectra SCU */
++#define FTDI_NDI_FUTURE_2_PID 0xDA72 /* NDI future device #2 */
++#define FTDI_NDI_FUTURE_3_PID 0xDA73 /* NDI future device #3 */
++#define FTDI_NDI_AURORA_SCU_PID 0xDA74 /* NDI Aurora SCU */
++
++/*
++ * Posiflex inc retail equipment (http://www.posiflex.com.tw)
++ */
++#define POSIFLEX_VID 0x0d3a /* Vendor ID */
++#define POSIFLEX_PP7000_PID 0x0300 /* PP-7000II thermal printer */
++
++/*
++ * Westrex International devices submitted by Cory Lee
++ */
++#define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */
++#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */
++
++/*
++ * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
++ */
++#define FTDI_RRCIRKITS_LOCOBUFFER_PID 0xc7d0 /* LocoBuffer USB */
++
++/*
++ * Eclo (http://www.eclo.pt/) product IDs.
++ * PID 0xEA90 submitted by Martin Grill.
++ */
++#define FTDI_ECLO_COM_1WIRE_PID 0xEA90 /* COM to 1-Wire USB adaptor */
++
++/*
++ * Papouch products (http://www.papouch.com/)
++ * Submitted by Folkert van Heusden
++ */
++
++#define PAPOUCH_VID 0x5050 /* Vendor ID */
++#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
++#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
++
++/*
++ * ACG Identification Technologies GmbH products (http://www.acg.de/).
++ * Submitted by anton -at- goto10 -dot- org.
++ */
++#define FTDI_ACG_HFDUAL_PID 0xDD20 /* HF Dual ISO Reader (RFID) */
++
++/*
++ * Yost Engineering, Inc. products (www.yostengineering.com).
++ * PID 0xE050 submitted by Aaron Prose.
++ */
++#define FTDI_YEI_SERVOCENTER31_PID 0xE050 /* YEI ServoCenter3.1 USB */
++
++/*
++ * ThorLabs USB motor drivers
++ */
++#define FTDI_THORLABS_PID 0xfaf0 /* ThorLabs USB motor drivers */
++
++/*
++ * Testo products (http://www.testo.com/)
++ * Submitted by Colin Leroy
++ */
++#define TESTO_VID 0x128D
++#define TESTO_USB_INTERFACE_PID 0x0001
++
++/*
++ * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com.
++ */
++#define FTDI_GAMMA_SCOUT_PID 0xD678 /* Gamma Scout online */
++
++/*
++ * Tactrix OpenPort (ECU) devices.
++ * OpenPort 1.3M submitted by Donour Sizemore.
++ * OpenPort 1.3S and 1.3U submitted by Ian Abbott.
++ */
++#define FTDI_TACTRIX_OPENPORT_13M_PID 0xCC48 /* OpenPort 1.3 Mitsubishi */
++#define FTDI_TACTRIX_OPENPORT_13S_PID 0xCC49 /* OpenPort 1.3 Subaru */
++#define FTDI_TACTRIX_OPENPORT_13U_PID 0xCC4A /* OpenPort 1.3 Universal */
++
++/*
++ * Telldus Technologies
++ */
++#define TELLDUS_VID 0x1781 /* Vendor ID */
++#define TELLDUS_TELLSTICK_PID 0x0C30 /* RF control dongle 433 MHz using FT232RL */
++
++/*
++ * IBS elektronik product ids
++ * Submitted by Thomas Schleusener
++ */
++#define FTDI_IBS_US485_PID 0xff38 /* IBS US485 (USB<-->RS422/485 interface) */
++#define FTDI_IBS_PICPRO_PID 0xff39 /* IBS PIC-Programmer */
++#define FTDI_IBS_PCMCIA_PID 0xff3a /* IBS Card reader for PCMCIA SRAM-cards */
++#define FTDI_IBS_PK1_PID 0xff3b /* IBS PK1 - Particel counter */
++#define FTDI_IBS_RS232MON_PID 0xff3c /* IBS RS232 - Monitor */
++#define FTDI_IBS_APP70_PID 0xff3d /* APP 70 (dust monitoring system) */
++#define FTDI_IBS_PEDO_PID 0xff3e /* IBS PEDO-Modem (RF modem 868.35 MHz) */
++#define FTDI_IBS_PROD_PID 0xff3f /* future device */
++
++/*
++ * MaxStream devices www.maxstream.net
++ */
++#define FTDI_MAXSTREAM_PID 0xEE18 /* Xbee PKG-U Module */
++
++/* Olimex */
++#define OLIMEX_VID 0x15BA
++#define OLIMEX_ARM_USB_OCD_PID 0x0003
++
++/* Luminary Micro Stellaris Boards, VID = FTDI_VID */
++/* FTDI 2332C Dual channel device, side A=245 FIFO (JTAG), Side B=RS232 UART */
++#define LMI_LM3S_DEVEL_BOARD_PID 0xbcd8
++#define LMI_LM3S_EVAL_BOARD_PID 0xbcd9
++
++/* www.elsterelectricity.com Elster Unicom III Optical Probe */
++#define FTDI_ELSTER_UNICOM_PID 0xE700 /* Product Id */
++
++/*
++ * The Mobility Lab (TML)
++ * Submitted by Pierre Castella
++ */
++#define TML_VID 0x1B91 /* Vendor ID */
++#define TML_USB_SERIAL_PID 0x0064 /* USB - Serial Converter */
++
++/* Propox devices */
++#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
++
++/* Rig Expert Ukraine devices */
++#define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
++
++/* Domintell products http://www.domintell.com */
++#define FTDI_DOMINTELL_DGQG_PID 0xEF50 /* Master */
++#define FTDI_DOMINTELL_DUSB_PID 0xEF51 /* DUSB01 module */
++
++/* Alti-2 products http://www.alti-2.com */
++#define ALTI2_VID 0x1BC9
++#define ALTI2_N3_PID 0x6001 /* Neptune 3 */
++
++/*
++ * FIC / OpenMoko, Inc. http://wiki.openmoko.org/wiki/Neo1973_Debug_Board_v3
++ * Submitted by Harald Welte <laforge@openmoko.org>
++ */
++#define FIC_VID 0x1457
++#define FIC_NEO1973_DEBUG_PID 0x5118
++
++/*
++ * RATOC REX-USB60F
++ */
++#define RATOC_VENDOR_ID 0x0584
++#define RATOC_PRODUCT_ID_USB60F 0xb020
++
++/*
++ * DIEBOLD BCS SE923
++ */
++#define DIEBOLD_BCS_SE923_PID 0xfb99
++
++/*
++ * Atmel STK541
++ */
++#define ATMEL_VID 0x03eb /* Vendor ID */
++#define STK541_PID 0x2109 /* Zigbee Controller */
++
++/*
++ * Dresden Elektronic Sensor Terminal Board
++ */
++#define DE_VID 0x1cf1 /* Vendor ID */
++#define STB_PID 0x0001 /* Sensor Terminal Board */
++#define WHT_PID 0x0004 /* Wireless Handheld Terminal */
++
++/*
++ * Blackfin gnICE JTAG
++ * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
++ */
++#define ADI_VID 0x0456
++#define ADI_GNICE_PID 0xF000
++#define ADI_GNICEPLUS_PID 0xF001
++
++/*
++ * JETI SPECTROMETER SPECBOS 1201
++ * http://www.jeti.com/products/sys/scb/scb1201.php
++ */
++#define JETI_VID 0x0c6c
++#define JETI_SPC1201_PID 0x04b2
++
++/*
++ * Marvell SheevaPlug
++ */
++#define MARVELL_VID 0x9e88
++#define MARVELL_SHEEVAPLUG_PID 0x9e8f
++
++#define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmBH */
++
++/*
++ * GN Otometrics (http://www.otometrics.com)
++ * Submitted by Ville Sundberg.
++ */
++#define GN_OTOMETRICS_VID 0x0c33 /* Vendor ID */
++#define AURICAL_USB_PID 0x0010 /* Aurical USB Audiometer */
++
++/*
++ * Bayer Ascensia Contour blood glucose meter USB-converter cable.
++ * http://winglucofacts.com/cables/
++ */
++#define BAYER_VID 0x1A79
++#define BAYER_CONTOUR_CABLE_PID 0x6001
++
++/*
++ * Marvell OpenRD Base, Client
++ * http://www.open-rd.org
++ * OpenRD Base, Client use VID 0x0403
++ */
++#define MARVELL_OPENRD_PID 0x9e90
++
++/*
++ * Hameg HO820 and HO870 interface (using VID 0x0403)
++ */
++#define HAMEG_HO820_PID 0xed74
++#define HAMEG_HO870_PID 0xed71
++
diff --git a/usb.current/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch b/usb.current/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch
new file mode 100644
index 00000000000000..489cec625adc30
--- /dev/null
+++ b/usb.current/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch
@@ -0,0 +1,1720 @@
+From andi@lisas.de Tue Dec 22 14:36:00 2009
+From: Andreas Mohr <andi@lisas.de>
+Date: Thu, 17 Dec 2009 11:56:09 +0100
+Subject: USB: ftdi_sio: sort PID/VID entries in new ftdi_sio_ids.h header
+To: Greg KH <gregkh@suse.de>
+Cc: Andreas Mohr <andi@lisas.de>, kuba@mareimbrium.org, linux-usb@vger.kernel.org
+Message-ID: <20091217105607.GA12983@rhlx01.hs-esslingen.de>
+Content-Disposition: inline
+
+
+This is a (almost) sort-only patch to sort FTDI device
+product ID definitions in new ftdi_sio_ids.h header.
+
+Advantage is that new device ID submissions will now have a specific (sorted)
+position - less future merge conflicts.
+
+Compile-tested, based on _current_ mainline git.
+Minor checkpatch.pl warnings were eliminated whereever it made sense,
+very minor text changes.
+
+
+Signed-off-by: Andreas Mohr <andi@lisas.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/usb/serial/ftdi_sio_ids.h | 1487 +++++++++++++++++++-------------------
+ 1 file changed, 757 insertions(+), 730 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -1,36 +1,85 @@
+ /*
+ * vendor/product IDs (VID/PID) of devices using FTDI USB serial converters.
++ * Please keep numerically sorted within individual areas, thanks!
+ *
+ * Philipp G�hring - pg@futureware.at - added the Device ID of the USB relais
+ * from Rudolf Gugler
+ *
+ */
+
++
++/**********************************/
++/***** devices using FTDI VID *****/
++/**********************************/
++
++
+ #define FTDI_VID 0x0403 /* Vendor Id */
+-#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
++
++
++/*** "original" FTDI device PIDs ***/
++
+ #define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */
+ #define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */
+ #define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
+-#define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
+ #define FTDI_4232H_PID 0x6011 /* Quad channel hi-speed device */
+-#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */
+-#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */
+-#define FTDI_NF_RIC_PID 0x0001 /* Product Id */
+-#define FTDI_USBX_707_PID 0xF857 /* ADSTech IR Blaster USBX-707 */
++#define FTDI_SIO_PID 0x8372 /* Product Id SIO application of 8U100AX */
++#define FTDI_232RL_PID 0xFBFA /* Product ID for FT232RL */
+
+-/* Larsen and Brusgaard AltiTrack/USBtrack */
+-#define LARSENBRUSGAARD_VID 0x0FD8
+-#define LB_ALTITRACK_PID 0x0001
+
+-/* www.canusb.com Lawicel CANUSB device */
+-#define FTDI_CANUSB_PID 0xFFA8 /* Product Id */
++/*** third-party PIDs (using FTDI_VID) ***/
+
+-/* AlphaMicro Components AMC-232USB01 device */
+-#define FTDI_AMC232_PID 0xFF00 /* Product Id */
++/*
++ * Marvell OpenRD Base, Client
++ * http://www.open-rd.org
++ * OpenRD Base, Client use VID 0x0403
++ */
++#define MARVELL_OPENRD_PID 0x9e90
+
+ /* www.candapter.com Ewert Energy Systems CANdapter device */
+ #define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
+
++/* OOCDlink by Joern Kaipf <joernk@web.de>
++ * (http://www.joernonline.de/dw/doku.php?id=start&idx=projects:oocdlink) */
++#define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */
++
++/* Luminary Micro Stellaris Boards, VID = FTDI_VID */
++/* FTDI 2332C Dual channel device, side A=245 FIFO (JTAG), Side B=RS232 UART */
++#define LMI_LM3S_DEVEL_BOARD_PID 0xbcd8
++#define LMI_LM3S_EVAL_BOARD_PID 0xbcd9
++
++#define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmBH */
++
++/* OpenDCC (www.opendcc.de) product id */
++#define FTDI_OPENDCC_PID 0xBFD8
++#define FTDI_OPENDCC_SNIFFER_PID 0xBFD9
++#define FTDI_OPENDCC_THROTTLE_PID 0xBFDA
++#define FTDI_OPENDCC_GATEWAY_PID 0xBFDB
++
++/*
++ * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
++ */
++#define FTDI_RRCIRKITS_LOCOBUFFER_PID 0xc7d0 /* LocoBuffer USB */
++
++/* DMX4ALL DMX Interfaces */
++#define FTDI_DMX4ALL 0xC850
++
++/*
++ * ASK.fr devices
++ */
++#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
++
++/* www.starting-point-systems.com �Chameleon device */
++#define FTDI_MICRO_CHAMELEON_PID 0xCAA0 /* Product Id */
++
++/*
++ * Tactrix OpenPort (ECU) devices.
++ * OpenPort 1.3M submitted by Donour Sizemore.
++ * OpenPort 1.3S and 1.3U submitted by Ian Abbott.
++ */
++#define FTDI_TACTRIX_OPENPORT_13M_PID 0xCC48 /* OpenPort 1.3 Mitsubishi */
++#define FTDI_TACTRIX_OPENPORT_13S_PID 0xCC49 /* OpenPort 1.3 Subaru */
++#define FTDI_TACTRIX_OPENPORT_13U_PID 0xCC4A /* OpenPort 1.3 Universal */
++
+ /* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
+ /* the VID is the standard ftdi vid (FTDI_VID) */
+ #define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
+@@ -42,523 +91,280 @@
+ #define FTDI_SCS_DEVICE_6_PID 0xD016
+ #define FTDI_SCS_DEVICE_7_PID 0xD017
+
+-/* ACT Solutions HomePro ZWave interface (http://www.act-solutions.com/HomePro.htm) */
+-#define FTDI_ACTZWAVE_PID 0xF2D0
++/* iPlus device */
++#define FTDI_IPLUS_PID 0xD070 /* Product Id */
++#define FTDI_IPLUS2_PID 0xD071 /* Product Id */
+
++/*
++ * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com.
++ */
++#define FTDI_GAMMA_SCOUT_PID 0xD678 /* Gamma Scout online */
+
+-/* www.starting-point-systems.com �Chameleon device */
+-#define FTDI_MICRO_CHAMELEON_PID 0xCAA0 /* Product Id */
++/* Propox devices */
++#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
+
+-/* www.irtrans.de device */
+-#define FTDI_IRTRANS_PID 0xFC60 /* Product Id */
++/*
++ * Xsens Technologies BV products (http://www.xsens.com).
++ */
++#define XSENS_CONVERTER_0_PID 0xD388
++#define XSENS_CONVERTER_1_PID 0xD389
++#define XSENS_CONVERTER_2_PID 0xD38A
++#define XSENS_CONVERTER_3_PID 0xD38B
++#define XSENS_CONVERTER_4_PID 0xD38C
++#define XSENS_CONVERTER_5_PID 0xD38D
++#define XSENS_CONVERTER_6_PID 0xD38E
++#define XSENS_CONVERTER_7_PID 0xD38F
+
++/*
++ * NDI (www.ndigital.com) product ids
++ */
++#define FTDI_NDI_HUC_PID 0xDA70 /* NDI Host USB Converter */
++#define FTDI_NDI_SPECTRA_SCU_PID 0xDA71 /* NDI Spectra SCU */
++#define FTDI_NDI_FUTURE_2_PID 0xDA72 /* NDI future device #2 */
++#define FTDI_NDI_FUTURE_3_PID 0xDA73 /* NDI future device #3 */
++#define FTDI_NDI_AURORA_SCU_PID 0xDA74 /* NDI Aurora SCU */
+
+-/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
+-#define FTDI_TTUSB_PID 0xFF20 /* Product Id */
++/*
++ * Westrex International devices submitted by Cory Lee
++ */
++#define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */
++#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */
+
+-/* iPlus device */
+-#define FTDI_IPLUS_PID 0xD070 /* Product Id */
+-#define FTDI_IPLUS2_PID 0xD071 /* Product Id */
++/*
++ * ACG Identification Technologies GmbH products (http://www.acg.de/).
++ * Submitted by anton -at- goto10 -dot- org.
++ */
++#define FTDI_ACG_HFDUAL_PID 0xDD20 /* HF Dual ISO Reader (RFID) */
+
+-/* DMX4ALL DMX Interfaces */
+-#define FTDI_DMX4ALL 0xC850
++/*
++ * Definitions for Artemis astronomical USB based cameras
++ * Check it at http://www.artemisccd.co.uk/
++ */
++#define FTDI_ARTEMIS_PID 0xDF28 /* All Artemis Cameras */
+
+-/* OpenDCC (www.opendcc.de) product id */
+-#define FTDI_OPENDCC_PID 0xBFD8
+-#define FTDI_OPENDCC_SNIFFER_PID 0xBFD9
+-#define FTDI_OPENDCC_THROTTLE_PID 0xBFDA
+-#define FTDI_OPENDCC_GATEWAY_PID 0xBFDB
++/*
++ * Definitions for ATIK Instruments astronomical USB based cameras
++ * Check it at http://www.atik-instruments.com/
++ */
++#define FTDI_ATIK_ATK16_PID 0xDF30 /* ATIK ATK-16 Grayscale Camera */
++#define FTDI_ATIK_ATK16C_PID 0xDF32 /* ATIK ATK-16C Colour Camera */
++#define FTDI_ATIK_ATK16HR_PID 0xDF31 /* ATIK ATK-16HR Grayscale Camera */
++#define FTDI_ATIK_ATK16HRC_PID 0xDF33 /* ATIK ATK-16HRC Colour Camera */
++#define FTDI_ATIK_ATK16IC_PID 0xDF35 /* ATIK ATK-16IC Grayscale Camera */
+
+-/* Sprog II (Andrew Crosland's SprogII DCC interface) */
+-#define FTDI_SPROG_II 0xF0C8
++/*
++ * Yost Engineering, Inc. products (www.yostengineering.com).
++ * PID 0xE050 submitted by Aaron Prose.
++ */
++#define FTDI_YEI_SERVOCENTER31_PID 0xE050 /* YEI ServoCenter3.1 USB */
+
+-/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
+-/* they use the ftdi chipset for the USB interface and the vendor id is the same */
+-#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
+-#define FTDI_XF_634_PID 0xFC09 /* 634: 20x4 Character Display */
+-#define FTDI_XF_547_PID 0xFC0A /* 547: Two line Display */
+-#define FTDI_XF_633_PID 0xFC0B /* 633: 16x2 Character Display with Keys */
+-#define FTDI_XF_631_PID 0xFC0C /* 631: 20x2 Character Display */
+-#define FTDI_XF_635_PID 0xFC0D /* 635: 20x4 Character Display */
+-#define FTDI_XF_640_PID 0xFC0E /* 640: Two line Display */
+-#define FTDI_XF_642_PID 0xFC0F /* 642: Two line Display */
++/*
++ * ELV USB devices submitted by Christian Abt of ELV (www.elv.de).
++ * All of these devices use FTDI's vendor ID (0x0403).
++ *
++ * The previously included PID for the UO 100 module was incorrect.
++ * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58).
++ *
++ * Armin Laeuger originally sent the PID for the UM 100 module.
++ */
++#define FTDI_ELV_FHZ1300PC_PID 0xE0E8 /* FHZ 1300 PC */
++#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */
++#define FTDI_ELV_HS485_PID 0xE0EA /* USB to RS-485 adapter */
++#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */
++#define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */
++#define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */
++#define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */
++#define FTDI_ELV_RFP500_PID 0xE0F3 /* HF-Leistungsmesser (RFP 500) */
++#define FTDI_ELV_FS20SIG_PID 0xE0F4 /* Signalgeber (FS 20 SIG) */
++#define FTDI_ELV_WS300PC_PID 0xE0F6 /* PC-Wetterstation (WS 300 PC) */
++#define FTDI_PHI_FISCO_PID 0xE40B /* PHI Fisco USB to Serial cable */
++#define FTDI_ELV_UAD8_PID 0xF068 /* USB-AD-Wandler (UAD 8) */
++#define FTDI_ELV_UDA7_PID 0xF069 /* USB-DA-Wandler (UDA 7) */
++#define FTDI_ELV_USI2_PID 0xF06A /* USB-Schrittmotoren-Interface (USI 2) */
++#define FTDI_ELV_T1100_PID 0xF06B /* Thermometer (T 1100) */
++#define FTDI_ELV_PCD200_PID 0xF06C /* PC-Datenlogger (PCD 200) */
++#define FTDI_ELV_ULA200_PID 0xF06D /* USB-LCD-Ansteuerung (ULA 200) */
++#define FTDI_ELV_ALC8500_PID 0xF06E /* ALC 8500 Expert */
++#define FTDI_ELV_FHZ1000PC_PID 0xF06F /* FHZ 1000 PC */
++#define FTDI_ELV_UR100_PID 0xFB58 /* USB-RS232-Umsetzer (UR 100) */
++#define FTDI_ELV_UM100_PID 0xFB5A /* USB-Modul UM 100 */
++#define FTDI_ELV_UO100_PID 0xFB5B /* USB-Modul UO 100 */
++/* Additional ELV PIDs that default to using the FTDI D2XX drivers on
++ * MS Windows, rather than the FTDI Virtual Com Port drivers.
++ * Maybe these will be easier to use with the libftdi/libusb user-space
++ * drivers, or possibly the Comedi drivers in some cases. */
++#define FTDI_ELV_CLI7000_PID 0xFB59 /* Computer-Light-Interface (CLI 7000) */
++#define FTDI_ELV_PPS7330_PID 0xFB5C /* Processor-Power-Supply (PPS 7330) */
++#define FTDI_ELV_TFM100_PID 0xFB5D /* Temperartur-Feuchte Messgeraet (TFM 100) */
++#define FTDI_ELV_UDF77_PID 0xFB5E /* USB DCF Funkurh (UDF 77) */
++#define FTDI_ELV_UIO88_PID 0xFB5F /* USB-I/O Interface (UIO 88) */
+
+-/* Video Networks Limited / Homechoice in the UK use an ftdi-based device for their 1Mb */
+-/* broadband internet service. The following PID is exhibited by the usb device supplied */
+-/* (the VID is the standard ftdi vid (FTDI_VID) */
+-#define FTDI_VNHCPCUSB_D_PID 0xfe38 /* Product Id */
++/*
++ * EVER Eco Pro UPS (http://www.ever.com.pl/)
++ */
++
++#define EVER_ECO_PRO_CDS 0xe520 /* RS-232 converter */
+
+ /*
+- * PCDJ use ftdi based dj-controllers. The following PID is for their DAC-2 device
+- * http://www.pcdjhardware.com/DAC2.asp (PID sent by Wouter Paesen)
+- * (the VID is the standard ftdi vid (FTDI_VID) */
+-#define FTDI_PCDJ_DAC2_PID 0xFA88
++ * Active Robots product ids.
++ */
++#define FTDI_ACTIVE_ROBOTS_PID 0xE548 /* USB comms board */
++
++/* Pyramid Computer GmbH */
++#define FTDI_PYRAMID_PID 0xE6C8 /* Pyramid Appliance Display */
++
++/* www.elsterelectricity.com Elster Unicom III Optical Probe */
++#define FTDI_ELSTER_UNICOM_PID 0xE700 /* Product Id */
+
+ /*
+- * The following are the values for the Matrix Orbital LCD displays,
+- * which are the FT232BM ( similar to the 8U232AM )
++ * Gude Analog- und Digitalsysteme GmbH
+ */
+-#define FTDI_MTXORB_0_PID 0xFA00 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_1_PID 0xFA01 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_2_PID 0xFA02 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_3_PID 0xFA03 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_4_PID 0xFA04 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_5_PID 0xFA05 /* Matrix Orbital Product Id */
+-#define FTDI_MTXORB_6_PID 0xFA06 /* Matrix Orbital Product Id */
++#define FTDI_GUDEADS_E808_PID 0xE808
++#define FTDI_GUDEADS_E809_PID 0xE809
++#define FTDI_GUDEADS_E80A_PID 0xE80A
++#define FTDI_GUDEADS_E80B_PID 0xE80B
++#define FTDI_GUDEADS_E80C_PID 0xE80C
++#define FTDI_GUDEADS_E80D_PID 0xE80D
++#define FTDI_GUDEADS_E80E_PID 0xE80E
++#define FTDI_GUDEADS_E80F_PID 0xE80F
++#define FTDI_GUDEADS_E888_PID 0xE888 /* Expert ISDN Control USB */
++#define FTDI_GUDEADS_E889_PID 0xE889 /* USB RS-232 OptoBridge */
++#define FTDI_GUDEADS_E88A_PID 0xE88A
++#define FTDI_GUDEADS_E88B_PID 0xE88B
++#define FTDI_GUDEADS_E88C_PID 0xE88C
++#define FTDI_GUDEADS_E88D_PID 0xE88D
++#define FTDI_GUDEADS_E88E_PID 0xE88E
++#define FTDI_GUDEADS_E88F_PID 0xE88F
+
+-/* OOCDlink by Joern Kaipf <joernk@web.de>
+- * (http://www.joernonline.de/dw/doku.php?id=start&idx=projects:oocdlink) */
+-#define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */
++/*
++ * Eclo (http://www.eclo.pt/) product IDs.
++ * PID 0xEA90 submitted by Martin Grill.
++ */
++#define FTDI_ECLO_COM_1WIRE_PID 0xEA90 /* COM to 1-Wire USB adaptor */
++
++/* TNC-X USB-to-packet-radio adapter, versions prior to 3.0 (DLP module) */
++#define FTDI_TNC_X_PID 0xEBE0
+
+ /*
+- * The following are the values for the Matrix Orbital FTDI Range
+- * Anything in this range will use an FT232RL.
++ * Teratronik product ids.
++ * Submitted by O. W�lfelschneider.
+ */
+-#define MTXORB_VID 0x1B3D
+-#define MTXORB_FTDI_RANGE_0100_PID 0x0100
+-#define MTXORB_FTDI_RANGE_0101_PID 0x0101
+-#define MTXORB_FTDI_RANGE_0102_PID 0x0102
+-#define MTXORB_FTDI_RANGE_0103_PID 0x0103
+-#define MTXORB_FTDI_RANGE_0104_PID 0x0104
+-#define MTXORB_FTDI_RANGE_0105_PID 0x0105
+-#define MTXORB_FTDI_RANGE_0106_PID 0x0106
+-#define MTXORB_FTDI_RANGE_0107_PID 0x0107
+-#define MTXORB_FTDI_RANGE_0108_PID 0x0108
+-#define MTXORB_FTDI_RANGE_0109_PID 0x0109
+-#define MTXORB_FTDI_RANGE_010A_PID 0x010A
+-#define MTXORB_FTDI_RANGE_010B_PID 0x010B
+-#define MTXORB_FTDI_RANGE_010C_PID 0x010C
+-#define MTXORB_FTDI_RANGE_010D_PID 0x010D
+-#define MTXORB_FTDI_RANGE_010E_PID 0x010E
+-#define MTXORB_FTDI_RANGE_010F_PID 0x010F
+-#define MTXORB_FTDI_RANGE_0110_PID 0x0110
+-#define MTXORB_FTDI_RANGE_0111_PID 0x0111
+-#define MTXORB_FTDI_RANGE_0112_PID 0x0112
+-#define MTXORB_FTDI_RANGE_0113_PID 0x0113
+-#define MTXORB_FTDI_RANGE_0114_PID 0x0114
+-#define MTXORB_FTDI_RANGE_0115_PID 0x0115
+-#define MTXORB_FTDI_RANGE_0116_PID 0x0116
+-#define MTXORB_FTDI_RANGE_0117_PID 0x0117
+-#define MTXORB_FTDI_RANGE_0118_PID 0x0118
+-#define MTXORB_FTDI_RANGE_0119_PID 0x0119
+-#define MTXORB_FTDI_RANGE_011A_PID 0x011A
+-#define MTXORB_FTDI_RANGE_011B_PID 0x011B
+-#define MTXORB_FTDI_RANGE_011C_PID 0x011C
+-#define MTXORB_FTDI_RANGE_011D_PID 0x011D
+-#define MTXORB_FTDI_RANGE_011E_PID 0x011E
+-#define MTXORB_FTDI_RANGE_011F_PID 0x011F
+-#define MTXORB_FTDI_RANGE_0120_PID 0x0120
+-#define MTXORB_FTDI_RANGE_0121_PID 0x0121
+-#define MTXORB_FTDI_RANGE_0122_PID 0x0122
+-#define MTXORB_FTDI_RANGE_0123_PID 0x0123
+-#define MTXORB_FTDI_RANGE_0124_PID 0x0124
+-#define MTXORB_FTDI_RANGE_0125_PID 0x0125
+-#define MTXORB_FTDI_RANGE_0126_PID 0x0126
+-#define MTXORB_FTDI_RANGE_0127_PID 0x0127
+-#define MTXORB_FTDI_RANGE_0128_PID 0x0128
+-#define MTXORB_FTDI_RANGE_0129_PID 0x0129
+-#define MTXORB_FTDI_RANGE_012A_PID 0x012A
+-#define MTXORB_FTDI_RANGE_012B_PID 0x012B
+-#define MTXORB_FTDI_RANGE_012C_PID 0x012C
+-#define MTXORB_FTDI_RANGE_012D_PID 0x012D
+-#define MTXORB_FTDI_RANGE_012E_PID 0x012E
+-#define MTXORB_FTDI_RANGE_012F_PID 0x012F
+-#define MTXORB_FTDI_RANGE_0130_PID 0x0130
+-#define MTXORB_FTDI_RANGE_0131_PID 0x0131
+-#define MTXORB_FTDI_RANGE_0132_PID 0x0132
+-#define MTXORB_FTDI_RANGE_0133_PID 0x0133
+-#define MTXORB_FTDI_RANGE_0134_PID 0x0134
+-#define MTXORB_FTDI_RANGE_0135_PID 0x0135
+-#define MTXORB_FTDI_RANGE_0136_PID 0x0136
+-#define MTXORB_FTDI_RANGE_0137_PID 0x0137
+-#define MTXORB_FTDI_RANGE_0138_PID 0x0138
+-#define MTXORB_FTDI_RANGE_0139_PID 0x0139
+-#define MTXORB_FTDI_RANGE_013A_PID 0x013A
+-#define MTXORB_FTDI_RANGE_013B_PID 0x013B
+-#define MTXORB_FTDI_RANGE_013C_PID 0x013C
+-#define MTXORB_FTDI_RANGE_013D_PID 0x013D
+-#define MTXORB_FTDI_RANGE_013E_PID 0x013E
+-#define MTXORB_FTDI_RANGE_013F_PID 0x013F
+-#define MTXORB_FTDI_RANGE_0140_PID 0x0140
+-#define MTXORB_FTDI_RANGE_0141_PID 0x0141
+-#define MTXORB_FTDI_RANGE_0142_PID 0x0142
+-#define MTXORB_FTDI_RANGE_0143_PID 0x0143
+-#define MTXORB_FTDI_RANGE_0144_PID 0x0144
+-#define MTXORB_FTDI_RANGE_0145_PID 0x0145
+-#define MTXORB_FTDI_RANGE_0146_PID 0x0146
+-#define MTXORB_FTDI_RANGE_0147_PID 0x0147
+-#define MTXORB_FTDI_RANGE_0148_PID 0x0148
+-#define MTXORB_FTDI_RANGE_0149_PID 0x0149
+-#define MTXORB_FTDI_RANGE_014A_PID 0x014A
+-#define MTXORB_FTDI_RANGE_014B_PID 0x014B
+-#define MTXORB_FTDI_RANGE_014C_PID 0x014C
+-#define MTXORB_FTDI_RANGE_014D_PID 0x014D
+-#define MTXORB_FTDI_RANGE_014E_PID 0x014E
+-#define MTXORB_FTDI_RANGE_014F_PID 0x014F
+-#define MTXORB_FTDI_RANGE_0150_PID 0x0150
+-#define MTXORB_FTDI_RANGE_0151_PID 0x0151
+-#define MTXORB_FTDI_RANGE_0152_PID 0x0152
+-#define MTXORB_FTDI_RANGE_0153_PID 0x0153
+-#define MTXORB_FTDI_RANGE_0154_PID 0x0154
+-#define MTXORB_FTDI_RANGE_0155_PID 0x0155
+-#define MTXORB_FTDI_RANGE_0156_PID 0x0156
+-#define MTXORB_FTDI_RANGE_0157_PID 0x0157
+-#define MTXORB_FTDI_RANGE_0158_PID 0x0158
+-#define MTXORB_FTDI_RANGE_0159_PID 0x0159
+-#define MTXORB_FTDI_RANGE_015A_PID 0x015A
+-#define MTXORB_FTDI_RANGE_015B_PID 0x015B
+-#define MTXORB_FTDI_RANGE_015C_PID 0x015C
+-#define MTXORB_FTDI_RANGE_015D_PID 0x015D
+-#define MTXORB_FTDI_RANGE_015E_PID 0x015E
+-#define MTXORB_FTDI_RANGE_015F_PID 0x015F
+-#define MTXORB_FTDI_RANGE_0160_PID 0x0160
+-#define MTXORB_FTDI_RANGE_0161_PID 0x0161
+-#define MTXORB_FTDI_RANGE_0162_PID 0x0162
+-#define MTXORB_FTDI_RANGE_0163_PID 0x0163
+-#define MTXORB_FTDI_RANGE_0164_PID 0x0164
+-#define MTXORB_FTDI_RANGE_0165_PID 0x0165
+-#define MTXORB_FTDI_RANGE_0166_PID 0x0166
+-#define MTXORB_FTDI_RANGE_0167_PID 0x0167
+-#define MTXORB_FTDI_RANGE_0168_PID 0x0168
+-#define MTXORB_FTDI_RANGE_0169_PID 0x0169
+-#define MTXORB_FTDI_RANGE_016A_PID 0x016A
+-#define MTXORB_FTDI_RANGE_016B_PID 0x016B
+-#define MTXORB_FTDI_RANGE_016C_PID 0x016C
+-#define MTXORB_FTDI_RANGE_016D_PID 0x016D
+-#define MTXORB_FTDI_RANGE_016E_PID 0x016E
+-#define MTXORB_FTDI_RANGE_016F_PID 0x016F
+-#define MTXORB_FTDI_RANGE_0170_PID 0x0170
+-#define MTXORB_FTDI_RANGE_0171_PID 0x0171
+-#define MTXORB_FTDI_RANGE_0172_PID 0x0172
+-#define MTXORB_FTDI_RANGE_0173_PID 0x0173
+-#define MTXORB_FTDI_RANGE_0174_PID 0x0174
+-#define MTXORB_FTDI_RANGE_0175_PID 0x0175
+-#define MTXORB_FTDI_RANGE_0176_PID 0x0176
+-#define MTXORB_FTDI_RANGE_0177_PID 0x0177
+-#define MTXORB_FTDI_RANGE_0178_PID 0x0178
+-#define MTXORB_FTDI_RANGE_0179_PID 0x0179
+-#define MTXORB_FTDI_RANGE_017A_PID 0x017A
+-#define MTXORB_FTDI_RANGE_017B_PID 0x017B
+-#define MTXORB_FTDI_RANGE_017C_PID 0x017C
+-#define MTXORB_FTDI_RANGE_017D_PID 0x017D
+-#define MTXORB_FTDI_RANGE_017E_PID 0x017E
+-#define MTXORB_FTDI_RANGE_017F_PID 0x017F
+-#define MTXORB_FTDI_RANGE_0180_PID 0x0180
+-#define MTXORB_FTDI_RANGE_0181_PID 0x0181
+-#define MTXORB_FTDI_RANGE_0182_PID 0x0182
+-#define MTXORB_FTDI_RANGE_0183_PID 0x0183
+-#define MTXORB_FTDI_RANGE_0184_PID 0x0184
+-#define MTXORB_FTDI_RANGE_0185_PID 0x0185
+-#define MTXORB_FTDI_RANGE_0186_PID 0x0186
+-#define MTXORB_FTDI_RANGE_0187_PID 0x0187
+-#define MTXORB_FTDI_RANGE_0188_PID 0x0188
+-#define MTXORB_FTDI_RANGE_0189_PID 0x0189
+-#define MTXORB_FTDI_RANGE_018A_PID 0x018A
+-#define MTXORB_FTDI_RANGE_018B_PID 0x018B
+-#define MTXORB_FTDI_RANGE_018C_PID 0x018C
+-#define MTXORB_FTDI_RANGE_018D_PID 0x018D
+-#define MTXORB_FTDI_RANGE_018E_PID 0x018E
+-#define MTXORB_FTDI_RANGE_018F_PID 0x018F
+-#define MTXORB_FTDI_RANGE_0190_PID 0x0190
+-#define MTXORB_FTDI_RANGE_0191_PID 0x0191
+-#define MTXORB_FTDI_RANGE_0192_PID 0x0192
+-#define MTXORB_FTDI_RANGE_0193_PID 0x0193
+-#define MTXORB_FTDI_RANGE_0194_PID 0x0194
+-#define MTXORB_FTDI_RANGE_0195_PID 0x0195
+-#define MTXORB_FTDI_RANGE_0196_PID 0x0196
+-#define MTXORB_FTDI_RANGE_0197_PID 0x0197
+-#define MTXORB_FTDI_RANGE_0198_PID 0x0198
+-#define MTXORB_FTDI_RANGE_0199_PID 0x0199
+-#define MTXORB_FTDI_RANGE_019A_PID 0x019A
+-#define MTXORB_FTDI_RANGE_019B_PID 0x019B
+-#define MTXORB_FTDI_RANGE_019C_PID 0x019C
+-#define MTXORB_FTDI_RANGE_019D_PID 0x019D
+-#define MTXORB_FTDI_RANGE_019E_PID 0x019E
+-#define MTXORB_FTDI_RANGE_019F_PID 0x019F
+-#define MTXORB_FTDI_RANGE_01A0_PID 0x01A0
+-#define MTXORB_FTDI_RANGE_01A1_PID 0x01A1
+-#define MTXORB_FTDI_RANGE_01A2_PID 0x01A2
+-#define MTXORB_FTDI_RANGE_01A3_PID 0x01A3
+-#define MTXORB_FTDI_RANGE_01A4_PID 0x01A4
+-#define MTXORB_FTDI_RANGE_01A5_PID 0x01A5
+-#define MTXORB_FTDI_RANGE_01A6_PID 0x01A6
+-#define MTXORB_FTDI_RANGE_01A7_PID 0x01A7
+-#define MTXORB_FTDI_RANGE_01A8_PID 0x01A8
+-#define MTXORB_FTDI_RANGE_01A9_PID 0x01A9
+-#define MTXORB_FTDI_RANGE_01AA_PID 0x01AA
+-#define MTXORB_FTDI_RANGE_01AB_PID 0x01AB
+-#define MTXORB_FTDI_RANGE_01AC_PID 0x01AC
+-#define MTXORB_FTDI_RANGE_01AD_PID 0x01AD
+-#define MTXORB_FTDI_RANGE_01AE_PID 0x01AE
+-#define MTXORB_FTDI_RANGE_01AF_PID 0x01AF
+-#define MTXORB_FTDI_RANGE_01B0_PID 0x01B0
+-#define MTXORB_FTDI_RANGE_01B1_PID 0x01B1
+-#define MTXORB_FTDI_RANGE_01B2_PID 0x01B2
+-#define MTXORB_FTDI_RANGE_01B3_PID 0x01B3
+-#define MTXORB_FTDI_RANGE_01B4_PID 0x01B4
+-#define MTXORB_FTDI_RANGE_01B5_PID 0x01B5
+-#define MTXORB_FTDI_RANGE_01B6_PID 0x01B6
+-#define MTXORB_FTDI_RANGE_01B7_PID 0x01B7
+-#define MTXORB_FTDI_RANGE_01B8_PID 0x01B8
+-#define MTXORB_FTDI_RANGE_01B9_PID 0x01B9
+-#define MTXORB_FTDI_RANGE_01BA_PID 0x01BA
+-#define MTXORB_FTDI_RANGE_01BB_PID 0x01BB
+-#define MTXORB_FTDI_RANGE_01BC_PID 0x01BC
+-#define MTXORB_FTDI_RANGE_01BD_PID 0x01BD
+-#define MTXORB_FTDI_RANGE_01BE_PID 0x01BE
+-#define MTXORB_FTDI_RANGE_01BF_PID 0x01BF
+-#define MTXORB_FTDI_RANGE_01C0_PID 0x01C0
+-#define MTXORB_FTDI_RANGE_01C1_PID 0x01C1
+-#define MTXORB_FTDI_RANGE_01C2_PID 0x01C2
+-#define MTXORB_FTDI_RANGE_01C3_PID 0x01C3
+-#define MTXORB_FTDI_RANGE_01C4_PID 0x01C4
+-#define MTXORB_FTDI_RANGE_01C5_PID 0x01C5
+-#define MTXORB_FTDI_RANGE_01C6_PID 0x01C6
+-#define MTXORB_FTDI_RANGE_01C7_PID 0x01C7
+-#define MTXORB_FTDI_RANGE_01C8_PID 0x01C8
+-#define MTXORB_FTDI_RANGE_01C9_PID 0x01C9
+-#define MTXORB_FTDI_RANGE_01CA_PID 0x01CA
+-#define MTXORB_FTDI_RANGE_01CB_PID 0x01CB
+-#define MTXORB_FTDI_RANGE_01CC_PID 0x01CC
+-#define MTXORB_FTDI_RANGE_01CD_PID 0x01CD
+-#define MTXORB_FTDI_RANGE_01CE_PID 0x01CE
+-#define MTXORB_FTDI_RANGE_01CF_PID 0x01CF
+-#define MTXORB_FTDI_RANGE_01D0_PID 0x01D0
+-#define MTXORB_FTDI_RANGE_01D1_PID 0x01D1
+-#define MTXORB_FTDI_RANGE_01D2_PID 0x01D2
+-#define MTXORB_FTDI_RANGE_01D3_PID 0x01D3
+-#define MTXORB_FTDI_RANGE_01D4_PID 0x01D4
+-#define MTXORB_FTDI_RANGE_01D5_PID 0x01D5
+-#define MTXORB_FTDI_RANGE_01D6_PID 0x01D6
+-#define MTXORB_FTDI_RANGE_01D7_PID 0x01D7
+-#define MTXORB_FTDI_RANGE_01D8_PID 0x01D8
+-#define MTXORB_FTDI_RANGE_01D9_PID 0x01D9
+-#define MTXORB_FTDI_RANGE_01DA_PID 0x01DA
+-#define MTXORB_FTDI_RANGE_01DB_PID 0x01DB
+-#define MTXORB_FTDI_RANGE_01DC_PID 0x01DC
+-#define MTXORB_FTDI_RANGE_01DD_PID 0x01DD
+-#define MTXORB_FTDI_RANGE_01DE_PID 0x01DE
+-#define MTXORB_FTDI_RANGE_01DF_PID 0x01DF
+-#define MTXORB_FTDI_RANGE_01E0_PID 0x01E0
+-#define MTXORB_FTDI_RANGE_01E1_PID 0x01E1
+-#define MTXORB_FTDI_RANGE_01E2_PID 0x01E2
+-#define MTXORB_FTDI_RANGE_01E3_PID 0x01E3
+-#define MTXORB_FTDI_RANGE_01E4_PID 0x01E4
+-#define MTXORB_FTDI_RANGE_01E5_PID 0x01E5
+-#define MTXORB_FTDI_RANGE_01E6_PID 0x01E6
+-#define MTXORB_FTDI_RANGE_01E7_PID 0x01E7
+-#define MTXORB_FTDI_RANGE_01E8_PID 0x01E8
+-#define MTXORB_FTDI_RANGE_01E9_PID 0x01E9
+-#define MTXORB_FTDI_RANGE_01EA_PID 0x01EA
+-#define MTXORB_FTDI_RANGE_01EB_PID 0x01EB
+-#define MTXORB_FTDI_RANGE_01EC_PID 0x01EC
+-#define MTXORB_FTDI_RANGE_01ED_PID 0x01ED
+-#define MTXORB_FTDI_RANGE_01EE_PID 0x01EE
+-#define MTXORB_FTDI_RANGE_01EF_PID 0x01EF
+-#define MTXORB_FTDI_RANGE_01F0_PID 0x01F0
+-#define MTXORB_FTDI_RANGE_01F1_PID 0x01F1
+-#define MTXORB_FTDI_RANGE_01F2_PID 0x01F2
+-#define MTXORB_FTDI_RANGE_01F3_PID 0x01F3
+-#define MTXORB_FTDI_RANGE_01F4_PID 0x01F4
+-#define MTXORB_FTDI_RANGE_01F5_PID 0x01F5
+-#define MTXORB_FTDI_RANGE_01F6_PID 0x01F6
+-#define MTXORB_FTDI_RANGE_01F7_PID 0x01F7
+-#define MTXORB_FTDI_RANGE_01F8_PID 0x01F8
+-#define MTXORB_FTDI_RANGE_01F9_PID 0x01F9
+-#define MTXORB_FTDI_RANGE_01FA_PID 0x01FA
+-#define MTXORB_FTDI_RANGE_01FB_PID 0x01FB
+-#define MTXORB_FTDI_RANGE_01FC_PID 0x01FC
+-#define MTXORB_FTDI_RANGE_01FD_PID 0x01FD
+-#define MTXORB_FTDI_RANGE_01FE_PID 0x01FE
+-#define MTXORB_FTDI_RANGE_01FF_PID 0x01FF
+-
+-
+-
+-/* Interbiometrics USB I/O Board */
+-/* Developed for Interbiometrics by Rudolf Gugler */
+-#define INTERBIOMETRICS_VID 0x1209
+-#define INTERBIOMETRICS_IOBOARD_PID 0x1002
+-#define INTERBIOMETRICS_MINI_IOBOARD_PID 0x1006
+-
+-/*
+- * The following are the values for the Perle Systems
+- * UltraPort USB serial converters
+- */
+-#define FTDI_PERLE_ULTRAPORT_PID 0xF0C0 /* Perle UltraPort Product Id */
+-
+-/*
+- * The following are the values for the Sealevel SeaLINK+ adapters.
+- * (Original list sent by Tuan Hoang. Ian Abbott renamed the macros and
+- * removed some PIDs that don't seem to match any existing products.)
+- */
+-#define SEALEVEL_VID 0x0c52 /* Sealevel Vendor ID */
+-#define SEALEVEL_2101_PID 0x2101 /* SeaLINK+232 (2101/2105) */
+-#define SEALEVEL_2102_PID 0x2102 /* SeaLINK+485 (2102) */
+-#define SEALEVEL_2103_PID 0x2103 /* SeaLINK+232I (2103) */
+-#define SEALEVEL_2104_PID 0x2104 /* SeaLINK+485I (2104) */
+-#define SEALEVEL_2106_PID 0x9020 /* SeaLINK+422 (2106) */
+-#define SEALEVEL_2201_1_PID 0x2211 /* SeaPORT+2/232 (2201) Port 1 */
+-#define SEALEVEL_2201_2_PID 0x2221 /* SeaPORT+2/232 (2201) Port 2 */
+-#define SEALEVEL_2202_1_PID 0x2212 /* SeaPORT+2/485 (2202) Port 1 */
+-#define SEALEVEL_2202_2_PID 0x2222 /* SeaPORT+2/485 (2202) Port 2 */
+-#define SEALEVEL_2203_1_PID 0x2213 /* SeaPORT+2 (2203) Port 1 */
+-#define SEALEVEL_2203_2_PID 0x2223 /* SeaPORT+2 (2203) Port 2 */
+-#define SEALEVEL_2401_1_PID 0x2411 /* SeaPORT+4/232 (2401) Port 1 */
+-#define SEALEVEL_2401_2_PID 0x2421 /* SeaPORT+4/232 (2401) Port 2 */
+-#define SEALEVEL_2401_3_PID 0x2431 /* SeaPORT+4/232 (2401) Port 3 */
+-#define SEALEVEL_2401_4_PID 0x2441 /* SeaPORT+4/232 (2401) Port 4 */
+-#define SEALEVEL_2402_1_PID 0x2412 /* SeaPORT+4/485 (2402) Port 1 */
+-#define SEALEVEL_2402_2_PID 0x2422 /* SeaPORT+4/485 (2402) Port 2 */
+-#define SEALEVEL_2402_3_PID 0x2432 /* SeaPORT+4/485 (2402) Port 3 */
+-#define SEALEVEL_2402_4_PID 0x2442 /* SeaPORT+4/485 (2402) Port 4 */
+-#define SEALEVEL_2403_1_PID 0x2413 /* SeaPORT+4 (2403) Port 1 */
+-#define SEALEVEL_2403_2_PID 0x2423 /* SeaPORT+4 (2403) Port 2 */
+-#define SEALEVEL_2403_3_PID 0x2433 /* SeaPORT+4 (2403) Port 3 */
+-#define SEALEVEL_2403_4_PID 0x2443 /* SeaPORT+4 (2403) Port 4 */
+-#define SEALEVEL_2801_1_PID 0X2811 /* SeaLINK+8/232 (2801) Port 1 */
+-#define SEALEVEL_2801_2_PID 0X2821 /* SeaLINK+8/232 (2801) Port 2 */
+-#define SEALEVEL_2801_3_PID 0X2831 /* SeaLINK+8/232 (2801) Port 3 */
+-#define SEALEVEL_2801_4_PID 0X2841 /* SeaLINK+8/232 (2801) Port 4 */
+-#define SEALEVEL_2801_5_PID 0X2851 /* SeaLINK+8/232 (2801) Port 5 */
+-#define SEALEVEL_2801_6_PID 0X2861 /* SeaLINK+8/232 (2801) Port 6 */
+-#define SEALEVEL_2801_7_PID 0X2871 /* SeaLINK+8/232 (2801) Port 7 */
+-#define SEALEVEL_2801_8_PID 0X2881 /* SeaLINK+8/232 (2801) Port 8 */
+-#define SEALEVEL_2802_1_PID 0X2812 /* SeaLINK+8/485 (2802) Port 1 */
+-#define SEALEVEL_2802_2_PID 0X2822 /* SeaLINK+8/485 (2802) Port 2 */
+-#define SEALEVEL_2802_3_PID 0X2832 /* SeaLINK+8/485 (2802) Port 3 */
+-#define SEALEVEL_2802_4_PID 0X2842 /* SeaLINK+8/485 (2802) Port 4 */
+-#define SEALEVEL_2802_5_PID 0X2852 /* SeaLINK+8/485 (2802) Port 5 */
+-#define SEALEVEL_2802_6_PID 0X2862 /* SeaLINK+8/485 (2802) Port 6 */
+-#define SEALEVEL_2802_7_PID 0X2872 /* SeaLINK+8/485 (2802) Port 7 */
+-#define SEALEVEL_2802_8_PID 0X2882 /* SeaLINK+8/485 (2802) Port 8 */
+-#define SEALEVEL_2803_1_PID 0X2813 /* SeaLINK+8 (2803) Port 1 */
+-#define SEALEVEL_2803_2_PID 0X2823 /* SeaLINK+8 (2803) Port 2 */
+-#define SEALEVEL_2803_3_PID 0X2833 /* SeaLINK+8 (2803) Port 3 */
+-#define SEALEVEL_2803_4_PID 0X2843 /* SeaLINK+8 (2803) Port 4 */
+-#define SEALEVEL_2803_5_PID 0X2853 /* SeaLINK+8 (2803) Port 5 */
+-#define SEALEVEL_2803_6_PID 0X2863 /* SeaLINK+8 (2803) Port 6 */
+-#define SEALEVEL_2803_7_PID 0X2873 /* SeaLINK+8 (2803) Port 7 */
+-#define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */
++#define FTDI_TERATRONIK_VCP_PID 0xEC88 /* Teratronik device (preferring VCP driver on windows) */
++#define FTDI_TERATRONIK_D2XX_PID 0xEC89 /* Teratronik device (preferring D2XX driver on windows) */
+
+-/*
+- * The following are the values for two KOBIL chipcard terminals.
+- */
+-#define KOBIL_VID 0x0d46 /* KOBIL Vendor ID */
+-#define KOBIL_CONV_B1_PID 0x2020 /* KOBIL Konverter for B1 */
+-#define KOBIL_CONV_KAAN_PID 0x2021 /* KOBIL_Konverter for KAAN */
++/* Rig Expert Ukraine devices */
++#define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
+
+ /*
+- * Icom ID-1 digital transceiver
++ * Hameg HO820 and HO870 interface (using VID 0x0403)
+ */
+-
+-#define ICOM_ID1_VID 0x0C26
+-#define ICOM_ID1_PID 0x0004
++#define HAMEG_HO820_PID 0xed74
++#define HAMEG_HO870_PID 0xed71
+
+ /*
+- * ASK.fr devices
++ * MaxStream devices www.maxstream.net
+ */
+-#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
++#define FTDI_MAXSTREAM_PID 0xEE18 /* Xbee PKG-U Module */
+
+ /*
+- * FTDI USB UART chips used in construction projects from the
+- * Elektor Electronics magazine (http://elektor-electronics.co.uk)
++ * microHAM product IDs (http://www.microham.com).
++ * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>
++ * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>.
++ * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file.
+ */
+-#define ELEKTOR_VID 0x0C7D
+-#define ELEKTOR_FT323R_PID 0x0005 /* RFID-Reader, issue 09-2006 */
++#define FTDI_MHAM_KW_PID 0xEEE8 /* USB-KW interface */
++#define FTDI_MHAM_YS_PID 0xEEE9 /* USB-YS interface */
++#define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */
++#define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */
++#define FTDI_MHAM_IC_PID 0xEEEC /* USB-IC interface */
++#define FTDI_MHAM_DB9_PID 0xEEED /* USB-DB9 interface */
++#define FTDI_MHAM_RS232_PID 0xEEEE /* USB-RS232 interface */
++#define FTDI_MHAM_Y9_PID 0xEEEF /* USB-Y9 interface */
+
+-/*
+- * DSS-20 Sync Station for Sony Ericsson P800
+- */
+-#define FTDI_DSS20_PID 0xFC82
++/* Domintell products http://www.domintell.com */
++#define FTDI_DOMINTELL_DGQG_PID 0xEF50 /* Master */
++#define FTDI_DOMINTELL_DUSB_PID 0xEF51 /* DUSB01 module */
+
+ /*
+- * Home Electronics (www.home-electro.com) USB gadgets
++ * The following are the values for the Perle Systems
++ * UltraPort USB serial converters
+ */
+-#define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR transceiver */
++#define FTDI_PERLE_ULTRAPORT_PID 0xF0C0 /* Perle UltraPort Product Id */
+
+-/* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */
+-/* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */
+-#define FTDI_USB_UIRT_PID 0xF850 /* Product Id */
++/* Sprog II (Andrew Crosland's SprogII DCC interface) */
++#define FTDI_SPROG_II 0xF0C8
+
+-/* TNC-X USB-to-packet-radio adapter, versions prior to 3.0 (DLP module) */
++/* an infrared receiver for user access control with IR tags */
++#define FTDI_PIEGROUP_PID 0xF208 /* Product Id */
+
+-#define FTDI_TNC_X_PID 0xEBE0
++/* ACT Solutions HomePro ZWave interface
++ (http://www.act-solutions.com/HomePro.htm) */
++#define FTDI_ACTZWAVE_PID 0xF2D0
+
+-/*
+- * ELV USB devices submitted by Christian Abt of ELV (www.elv.de).
+- * All of these devices use FTDI's vendor ID (0x0403).
+- *
+- * The previously included PID for the UO 100 module was incorrect.
+- * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58).
+- *
+- * Armin Laeuger originally sent the PID for the UM 100 module.
+- */
+-#define FTDI_R2000KU_TRUE_RNG 0xFB80 /* R2000KU TRUE RNG */
+-#define FTDI_ELV_UR100_PID 0xFB58 /* USB-RS232-Umsetzer (UR 100) */
+-#define FTDI_ELV_UM100_PID 0xFB5A /* USB-Modul UM 100 */
+-#define FTDI_ELV_UO100_PID 0xFB5B /* USB-Modul UO 100 */
+-#define FTDI_ELV_ALC8500_PID 0xF06E /* ALC 8500 Expert */
+-/* Additional ELV PIDs that default to using the FTDI D2XX drivers on
+- * MS Windows, rather than the FTDI Virtual Com Port drivers.
+- * Maybe these will be easier to use with the libftdi/libusb user-space
+- * drivers, or possibly the Comedi drivers in some cases. */
+-#define FTDI_ELV_CLI7000_PID 0xFB59 /* Computer-Light-Interface (CLI 7000) */
+-#define FTDI_ELV_PPS7330_PID 0xFB5C /* Processor-Power-Supply (PPS 7330) */
+-#define FTDI_ELV_TFM100_PID 0xFB5D /* Temperartur-Feuchte Messgeraet (TFM 100) */
+-#define FTDI_ELV_UDF77_PID 0xFB5E /* USB DCF Funkurh (UDF 77) */
+-#define FTDI_ELV_UIO88_PID 0xFB5F /* USB-I/O Interface (UIO 88) */
+-#define FTDI_ELV_UAD8_PID 0xF068 /* USB-AD-Wandler (UAD 8) */
+-#define FTDI_ELV_UDA7_PID 0xF069 /* USB-DA-Wandler (UDA 7) */
+-#define FTDI_ELV_USI2_PID 0xF06A /* USB-Schrittmotoren-Interface (USI 2) */
+-#define FTDI_ELV_T1100_PID 0xF06B /* Thermometer (T 1100) */
+-#define FTDI_ELV_PCD200_PID 0xF06C /* PC-Datenlogger (PCD 200) */
+-#define FTDI_ELV_ULA200_PID 0xF06D /* USB-LCD-Ansteuerung (ULA 200) */
+-#define FTDI_ELV_FHZ1000PC_PID 0xF06F /* FHZ 1000 PC */
+-#define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */
+-#define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */
+-#define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */
+-#define FTDI_ELV_RFP500_PID 0xE0F3 /* HF-Leistungsmesser (RFP 500) */
+-#define FTDI_ELV_FS20SIG_PID 0xE0F4 /* Signalgeber (FS 20 SIG) */
+-#define FTDI_ELV_WS300PC_PID 0xE0F6 /* PC-Wetterstation (WS 300 PC) */
+-#define FTDI_ELV_FHZ1300PC_PID 0xE0E8 /* FHZ 1300 PC */
+-#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */
+-#define FTDI_ELV_HS485_PID 0xE0EA /* USB to RS-485 adapter */
+-#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */
+-#define FTDI_PHI_FISCO_PID 0xE40B /* PHI Fisco USB to Serial cable */
++/*
++ * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485,
++ * USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices
++ * and I'm not entirely sure which are used by which.
++ */
++#define FTDI_4N_GALAXY_DE_1_PID 0xF3C0
++#define FTDI_4N_GALAXY_DE_2_PID 0xF3C1
+
+ /*
+- * Definitions for ID TECH (www.idt-net.com) devices
++ * Linx Technologies product ids
+ */
+-#define IDTECH_VID 0x0ACD /* ID TECH Vendor ID */
+-#define IDTECH_IDT1221U_PID 0x0300 /* IDT1221U USB to RS-232 adapter */
++#define LINX_SDMUSBQSS_PID 0xF448 /* Linx SDM-USB-QS-S */
++#define LINX_MASTERDEVEL2_PID 0xF449 /* Linx Master Development 2.0 */
++#define LINX_FUTURE_0_PID 0xF44A /* Linx future device */
++#define LINX_FUTURE_1_PID 0xF44B /* Linx future device */
++#define LINX_FUTURE_2_PID 0xF44C /* Linx future device */
+
+ /*
+- * Definitions for Omnidirectional Control Technology, Inc. devices
++ * Oceanic product ids
+ */
+-#define OCT_VID 0x0B39 /* OCT vendor ID */
+-/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */
+-/* Also rebadged as Dick Smith Electronics (Aus) XH6451 */
+-/* Also rebadged as SIIG Inc. model US2308 hardware version 1 */
+-#define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */
++#define FTDI_OCEANIC_PID 0xF460 /* Oceanic dive instrument */
+
+-/* an infrared receiver for user access control with IR tags */
+-#define FTDI_PIEGROUP_PID 0xF208 /* Product Id */
++/*
++ * SUUNTO product ids
++ */
++#define FTDI_SUUNTO_SPORTS_PID 0xF680 /* Suunto Sports instrument */
++
++/* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */
++/* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */
++#define FTDI_USB_UIRT_PID 0xF850 /* Product Id */
++
++/* CCS Inc. ICDU/ICDU40 product ID -
++ * the FT232BM is used in an in-circuit-debugger unit for PIC16's/PIC18's */
++#define FTDI_CCSICDU20_0_PID 0xF9D0
++#define FTDI_CCSICDU40_1_PID 0xF9D1
++#define FTDI_CCSMACHX_2_PID 0xF9D2
++#define FTDI_CCSLOAD_N_GO_3_PID 0xF9D3
++#define FTDI_CCSICDU64_4_PID 0xF9D4
++#define FTDI_CCSPRIME8_5_PID 0xF9D5
+
+ /*
+- * Definitions for Artemis astronomical USB based cameras
+- * Check it at http://www.artemisccd.co.uk/
++ * The following are the values for the Matrix Orbital LCD displays,
++ * which are the FT232BM ( similar to the 8U232AM )
+ */
+-#define FTDI_ARTEMIS_PID 0xDF28 /* All Artemis Cameras */
++#define FTDI_MTXORB_0_PID 0xFA00 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_1_PID 0xFA01 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_2_PID 0xFA02 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_3_PID 0xFA03 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_4_PID 0xFA04 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_5_PID 0xFA05 /* Matrix Orbital Product Id */
++#define FTDI_MTXORB_6_PID 0xFA06 /* Matrix Orbital Product Id */
+
+ /*
+- * Definitions for ATIK Instruments astronomical USB based cameras
+- * Check it at http://www.atik-instruments.com/
++ * Home Electronics (www.home-electro.com) USB gadgets
+ */
+-#define FTDI_ATIK_ATK16_PID 0xDF30 /* ATIK ATK-16 Grayscale Camera */
+-#define FTDI_ATIK_ATK16C_PID 0xDF32 /* ATIK ATK-16C Colour Camera */
+-#define FTDI_ATIK_ATK16HR_PID 0xDF31 /* ATIK ATK-16HR Grayscale Camera */
+-#define FTDI_ATIK_ATK16HRC_PID 0xDF33 /* ATIK ATK-16HRC Colour Camera */
+-#define FTDI_ATIK_ATK16IC_PID 0xDF35 /* ATIK ATK-16IC Grayscale Camera */
++#define FTDI_HE_TIRA1_PID 0xFA78 /* Tira-1 IR transceiver */
++
++/* Inside Accesso contactless reader (http://www.insidefr.com) */
++#define INSIDE_ACCESSO 0xFAD0
++
++/*
++ * ThorLabs USB motor drivers
++ */
++#define FTDI_THORLABS_PID 0xfaf0 /* ThorLabs USB motor drivers */
+
+ /*
+ * Protego product ids
+@@ -569,75 +375,106 @@
+ #define PROTEGO_SPECIAL_4 0xFC73 /* special/unknown device */
+
+ /*
+- * Gude Analog- und Digitalsysteme GmbH
++ * DSS-20 Sync Station for Sony Ericsson P800
+ */
+-#define FTDI_GUDEADS_E808_PID 0xE808
+-#define FTDI_GUDEADS_E809_PID 0xE809
+-#define FTDI_GUDEADS_E80A_PID 0xE80A
+-#define FTDI_GUDEADS_E80B_PID 0xE80B
+-#define FTDI_GUDEADS_E80C_PID 0xE80C
+-#define FTDI_GUDEADS_E80D_PID 0xE80D
+-#define FTDI_GUDEADS_E80E_PID 0xE80E
+-#define FTDI_GUDEADS_E80F_PID 0xE80F
+-#define FTDI_GUDEADS_E888_PID 0xE888 /* Expert ISDN Control USB */
+-#define FTDI_GUDEADS_E889_PID 0xE889 /* USB RS-232 OptoBridge */
+-#define FTDI_GUDEADS_E88A_PID 0xE88A
+-#define FTDI_GUDEADS_E88B_PID 0xE88B
+-#define FTDI_GUDEADS_E88C_PID 0xE88C
+-#define FTDI_GUDEADS_E88D_PID 0xE88D
+-#define FTDI_GUDEADS_E88E_PID 0xE88E
+-#define FTDI_GUDEADS_E88F_PID 0xE88F
++#define FTDI_DSS20_PID 0xFC82
++
++/* www.irtrans.de device */
++#define FTDI_IRTRANS_PID 0xFC60 /* Product Id */
+
+ /*
+- * Linx Technologies product ids
++ * RM Michaelides CANview USB (http://www.rmcan.com) (FTDI_VID)
++ * CAN fieldbus interface adapter, added by port GmbH www.port.de)
++ * Ian Abbott changed the macro names for consistency.
+ */
+-#define LINX_SDMUSBQSS_PID 0xF448 /* Linx SDM-USB-QS-S */
+-#define LINX_MASTERDEVEL2_PID 0xF449 /* Linx Master Development 2.0 */
+-#define LINX_FUTURE_0_PID 0xF44A /* Linx future device */
+-#define LINX_FUTURE_1_PID 0xF44B /* Linx future device */
+-#define LINX_FUTURE_2_PID 0xF44C /* Linx future device */
++#define FTDI_RM_CANVIEW_PID 0xfd60 /* Product Id */
++/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
++#define FTDI_TTUSB_PID 0xFF20 /* Product Id */
+
+-/* CCS Inc. ICDU/ICDU40 product ID - the FT232BM is used in an in-circuit-debugger */
+-/* unit for PIC16's/PIC18's */
+-#define FTDI_CCSICDU20_0_PID 0xF9D0
+-#define FTDI_CCSICDU40_1_PID 0xF9D1
+-#define FTDI_CCSMACHX_2_PID 0xF9D2
+-#define FTDI_CCSLOAD_N_GO_3_PID 0xF9D3
+-#define FTDI_CCSICDU64_4_PID 0xF9D4
+-#define FTDI_CCSPRIME8_5_PID 0xF9D5
++#define FTDI_USBX_707_PID 0xF857 /* ADSTech IR Blaster USBX-707 (FTDI_VID) */
+
+-/* Inside Accesso contactless reader (http://www.insidefr.com) */
+-#define INSIDE_ACCESSO 0xFAD0
++#define FTDI_RELAIS_PID 0xFA10 /* Relais device from Rudolf Gugler */
+
+ /*
+- * Intrepid Control Systems (http://www.intrepidcs.com/) ValueCAN and NeoVI
++ * PCDJ use ftdi based dj-controllers. The following PID is
++ * for their DAC-2 device http://www.pcdjhardware.com/DAC2.asp
++ * (the VID is the standard ftdi vid (FTDI_VID), PID sent by Wouter Paesen)
+ */
+-#define INTREPID_VID 0x093C
+-#define INTREPID_VALUECAN_PID 0x0601
+-#define INTREPID_NEOVI_PID 0x0701
++#define FTDI_PCDJ_DAC2_PID 0xFA88
++
++#define FTDI_R2000KU_TRUE_RNG 0xFB80 /* R2000KU TRUE RNG (FTDI_VID) */
+
+ /*
+- * Falcom Wireless Communications GmbH
++ * DIEBOLD BCS SE923 (FTDI_VID)
+ */
+-#define FALCOM_VID 0x0F94 /* Vendor Id */
+-#define FALCOM_TWIST_PID 0x0001 /* Falcom Twist USB GPRS modem */
+-#define FALCOM_SAMBA_PID 0x0005 /* Falcom Samba USB GPRS modem */
++#define DIEBOLD_BCS_SE923_PID 0xfb99
++
++/* www.crystalfontz.com devices
++ * - thanx for providing free devices for evaluation !
++ * they use the ftdi chipset for the USB interface
++ * and the vendor id is the same
++ */
++#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
++#define FTDI_XF_634_PID 0xFC09 /* 634: 20x4 Character Display */
++#define FTDI_XF_547_PID 0xFC0A /* 547: Two line Display */
++#define FTDI_XF_633_PID 0xFC0B /* 633: 16x2 Character Display with Keys */
++#define FTDI_XF_631_PID 0xFC0C /* 631: 20x2 Character Display */
++#define FTDI_XF_635_PID 0xFC0D /* 635: 20x4 Character Display */
++#define FTDI_XF_640_PID 0xFC0E /* 640: Two line Display */
++#define FTDI_XF_642_PID 0xFC0F /* 642: Two line Display */
+
+ /*
+- * SUUNTO product ids
++ * Video Networks Limited / Homechoice in the UK use an ftdi-based device
++ * for their 1Mb broadband internet service. The following PID is exhibited
++ * by the usb device supplied (the VID is the standard ftdi vid (FTDI_VID)
+ */
+-#define FTDI_SUUNTO_SPORTS_PID 0xF680 /* Suunto Sports instrument */
++#define FTDI_VNHCPCUSB_D_PID 0xfe38 /* Product Id */
++
++/* AlphaMicro Components AMC-232USB01 device (FTDI_VID) */
++#define FTDI_AMC232_PID 0xFF00 /* Product Id */
+
+ /*
+- * Oceanic product ids
++ * IBS elektronik product ids (FTDI_VID)
++ * Submitted by Thomas Schleusener
+ */
+-#define FTDI_OCEANIC_PID 0xF460 /* Oceanic dive instrument */
++#define FTDI_IBS_US485_PID 0xff38 /* IBS US485 (USB<-->RS422/485 interface) */
++#define FTDI_IBS_PICPRO_PID 0xff39 /* IBS PIC-Programmer */
++#define FTDI_IBS_PCMCIA_PID 0xff3a /* IBS Card reader for PCMCIA SRAM-cards */
++#define FTDI_IBS_PK1_PID 0xff3b /* IBS PK1 - Particel counter */
++#define FTDI_IBS_RS232MON_PID 0xff3c /* IBS RS232 - Monitor */
++#define FTDI_IBS_APP70_PID 0xff3d /* APP 70 (dust monitoring system) */
++#define FTDI_IBS_PEDO_PID 0xff3e /* IBS PEDO-Modem (RF modem 868.35 MHz) */
++#define FTDI_IBS_PROD_PID 0xff3f /* future device */
++/* www.canusb.com Lawicel CANUSB device (FTDI_VID) */
++#define FTDI_CANUSB_PID 0xFFA8 /* Product Id */
++
++
++
++/********************************/
++/** third-party VID/PID combos **/
++/********************************/
++
++
+
+ /*
+- * TTi (Thurlby Thandar Instruments)
++ * Atmel STK541
+ */
+-#define TTI_VID 0x103E /* Vendor Id */
+-#define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */
++#define ATMEL_VID 0x03eb /* Vendor ID */
++#define STK541_PID 0x2109 /* Zigbee Controller */
++
++/*
++ * Blackfin gnICE JTAG
++ * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
++ */
++#define ADI_VID 0x0456
++#define ADI_GNICE_PID 0xF000
++#define ADI_GNICEPLUS_PID 0xF001
++
++/*
++ * RATOC REX-USB60F
++ */
++#define RATOC_VENDOR_ID 0x0584
++#define RATOC_PRODUCT_ID_USB60F 0xb020
+
+ /*
+ * Definitions for B&B Electronics products.
+@@ -662,141 +499,147 @@
+ #define BANDB_ZZ_PROG1_USB_PID 0xBA02
+
+ /*
+- * RM Michaelides CANview USB (http://www.rmcan.com)
+- * CAN fieldbus interface adapter, added by port GmbH www.port.de)
+- * Ian Abbott changed the macro names for consistency.
+- */
+-#define FTDI_RM_CANVIEW_PID 0xfd60 /* Product Id */
+-
+-/*
+- * EVER Eco Pro UPS (http://www.ever.com.pl/)
+- */
+-
+-#define EVER_ECO_PRO_CDS 0xe520 /* RS-232 converter */
+-
+-/*
+- * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485,
+- * USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices
+- * and I'm not entirely sure which are used by which.
+- */
+-#define FTDI_4N_GALAXY_DE_1_PID 0xF3C0
+-#define FTDI_4N_GALAXY_DE_2_PID 0xF3C1
+-
+-/*
+- * Mobility Electronics products.
+- */
+-#define MOBILITY_VID 0x1342
+-#define MOBILITY_USB_SERIAL_PID 0x0202 /* EasiDock USB 200 serial */
+-
+-/*
+- * microHAM product IDs (http://www.microham.com).
+- * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>
+- * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>.
+- * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file.
+- */
+-#define FTDI_MHAM_KW_PID 0xEEE8 /* USB-KW interface */
+-#define FTDI_MHAM_YS_PID 0xEEE9 /* USB-YS interface */
+-#define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */
+-#define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */
+-#define FTDI_MHAM_IC_PID 0xEEEC /* USB-IC interface */
+-#define FTDI_MHAM_DB9_PID 0xEEED /* USB-DB9 interface */
+-#define FTDI_MHAM_RS232_PID 0xEEEE /* USB-RS232 interface */
+-#define FTDI_MHAM_Y9_PID 0xEEEF /* USB-Y9 interface */
+-
+-/*
+- * Active Robots product ids.
+- */
+-#define FTDI_ACTIVE_ROBOTS_PID 0xE548 /* USB comms board */
+-
+-/*
+- * Xsens Technologies BV products (http://www.xsens.com).
++ * Intrepid Control Systems (http://www.intrepidcs.com/) ValueCAN and NeoVI
+ */
+-#define XSENS_CONVERTER_0_PID 0xD388
+-#define XSENS_CONVERTER_1_PID 0xD389
+-#define XSENS_CONVERTER_2_PID 0xD38A
+-#define XSENS_CONVERTER_3_PID 0xD38B
+-#define XSENS_CONVERTER_4_PID 0xD38C
+-#define XSENS_CONVERTER_5_PID 0xD38D
+-#define XSENS_CONVERTER_6_PID 0xD38E
+-#define XSENS_CONVERTER_7_PID 0xD38F
++#define INTREPID_VID 0x093C
++#define INTREPID_VALUECAN_PID 0x0601
++#define INTREPID_NEOVI_PID 0x0701
+
+ /*
+- * Teratronik product ids.
+- * Submitted by O. W�lfelschneider.
++ * Definitions for ID TECH (www.idt-net.com) devices
+ */
+-#define FTDI_TERATRONIK_VCP_PID 0xEC88 /* Teratronik device (preferring VCP driver on windows) */
+-#define FTDI_TERATRONIK_D2XX_PID 0xEC89 /* Teratronik device (preferring D2XX driver on windows) */
++#define IDTECH_VID 0x0ACD /* ID TECH Vendor ID */
++#define IDTECH_IDT1221U_PID 0x0300 /* IDT1221U USB to RS-232 adapter */
+
+ /*
+- * Evolution Robotics products (http://www.evolution.com/).
+- * Submitted by Shawn M. Lavelle.
++ * Definitions for Omnidirectional Control Technology, Inc. devices
+ */
+-#define EVOLUTION_VID 0xDEEE /* Vendor ID */
+-#define EVOLUTION_ER1_PID 0x0300 /* ER1 Control Module */
+-#define EVO_8U232AM_PID 0x02FF /* Evolution robotics RCM2 (FT232AM)*/
+-#define EVO_HYBRID_PID 0x0302 /* Evolution robotics RCM4 PID (FT232BM)*/
+-#define EVO_RCM4_PID 0x0303 /* Evolution robotics RCM4 PID */
+-
+-/* Pyramid Computer GmbH */
+-#define FTDI_PYRAMID_PID 0xE6C8 /* Pyramid Appliance Display */
++#define OCT_VID 0x0B39 /* OCT vendor ID */
++/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */
++/* Also rebadged as Dick Smith Electronics (Aus) XH6451 */
++/* Also rebadged as SIIG Inc. model US2308 hardware version 1 */
++#define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */
+
+ /*
+- * NDI (www.ndigital.com) product ids
++ * Icom ID-1 digital transceiver
+ */
+-#define FTDI_NDI_HUC_PID 0xDA70 /* NDI Host USB Converter */
+-#define FTDI_NDI_SPECTRA_SCU_PID 0xDA71 /* NDI Spectra SCU */
+-#define FTDI_NDI_FUTURE_2_PID 0xDA72 /* NDI future device #2 */
+-#define FTDI_NDI_FUTURE_3_PID 0xDA73 /* NDI future device #3 */
+-#define FTDI_NDI_AURORA_SCU_PID 0xDA74 /* NDI Aurora SCU */
++
++#define ICOM_ID1_VID 0x0C26
++#define ICOM_ID1_PID 0x0004
+
+ /*
+- * Posiflex inc retail equipment (http://www.posiflex.com.tw)
++ * GN Otometrics (http://www.otometrics.com)
++ * Submitted by Ville Sundberg.
+ */
+-#define POSIFLEX_VID 0x0d3a /* Vendor ID */
+-#define POSIFLEX_PP7000_PID 0x0300 /* PP-7000II thermal printer */
++#define GN_OTOMETRICS_VID 0x0c33 /* Vendor ID */
++#define AURICAL_USB_PID 0x0010 /* Aurical USB Audiometer */
+
+ /*
+- * Westrex International devices submitted by Cory Lee
++ * The following are the values for the Sealevel SeaLINK+ adapters.
++ * (Original list sent by Tuan Hoang. Ian Abbott renamed the macros and
++ * removed some PIDs that don't seem to match any existing products.)
+ */
+-#define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */
+-#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */
++#define SEALEVEL_VID 0x0c52 /* Sealevel Vendor ID */
++#define SEALEVEL_2101_PID 0x2101 /* SeaLINK+232 (2101/2105) */
++#define SEALEVEL_2102_PID 0x2102 /* SeaLINK+485 (2102) */
++#define SEALEVEL_2103_PID 0x2103 /* SeaLINK+232I (2103) */
++#define SEALEVEL_2104_PID 0x2104 /* SeaLINK+485I (2104) */
++#define SEALEVEL_2106_PID 0x9020 /* SeaLINK+422 (2106) */
++#define SEALEVEL_2201_1_PID 0x2211 /* SeaPORT+2/232 (2201) Port 1 */
++#define SEALEVEL_2201_2_PID 0x2221 /* SeaPORT+2/232 (2201) Port 2 */
++#define SEALEVEL_2202_1_PID 0x2212 /* SeaPORT+2/485 (2202) Port 1 */
++#define SEALEVEL_2202_2_PID 0x2222 /* SeaPORT+2/485 (2202) Port 2 */
++#define SEALEVEL_2203_1_PID 0x2213 /* SeaPORT+2 (2203) Port 1 */
++#define SEALEVEL_2203_2_PID 0x2223 /* SeaPORT+2 (2203) Port 2 */
++#define SEALEVEL_2401_1_PID 0x2411 /* SeaPORT+4/232 (2401) Port 1 */
++#define SEALEVEL_2401_2_PID 0x2421 /* SeaPORT+4/232 (2401) Port 2 */
++#define SEALEVEL_2401_3_PID 0x2431 /* SeaPORT+4/232 (2401) Port 3 */
++#define SEALEVEL_2401_4_PID 0x2441 /* SeaPORT+4/232 (2401) Port 4 */
++#define SEALEVEL_2402_1_PID 0x2412 /* SeaPORT+4/485 (2402) Port 1 */
++#define SEALEVEL_2402_2_PID 0x2422 /* SeaPORT+4/485 (2402) Port 2 */
++#define SEALEVEL_2402_3_PID 0x2432 /* SeaPORT+4/485 (2402) Port 3 */
++#define SEALEVEL_2402_4_PID 0x2442 /* SeaPORT+4/485 (2402) Port 4 */
++#define SEALEVEL_2403_1_PID 0x2413 /* SeaPORT+4 (2403) Port 1 */
++#define SEALEVEL_2403_2_PID 0x2423 /* SeaPORT+4 (2403) Port 2 */
++#define SEALEVEL_2403_3_PID 0x2433 /* SeaPORT+4 (2403) Port 3 */
++#define SEALEVEL_2403_4_PID 0x2443 /* SeaPORT+4 (2403) Port 4 */
++#define SEALEVEL_2801_1_PID 0X2811 /* SeaLINK+8/232 (2801) Port 1 */
++#define SEALEVEL_2801_2_PID 0X2821 /* SeaLINK+8/232 (2801) Port 2 */
++#define SEALEVEL_2801_3_PID 0X2831 /* SeaLINK+8/232 (2801) Port 3 */
++#define SEALEVEL_2801_4_PID 0X2841 /* SeaLINK+8/232 (2801) Port 4 */
++#define SEALEVEL_2801_5_PID 0X2851 /* SeaLINK+8/232 (2801) Port 5 */
++#define SEALEVEL_2801_6_PID 0X2861 /* SeaLINK+8/232 (2801) Port 6 */
++#define SEALEVEL_2801_7_PID 0X2871 /* SeaLINK+8/232 (2801) Port 7 */
++#define SEALEVEL_2801_8_PID 0X2881 /* SeaLINK+8/232 (2801) Port 8 */
++#define SEALEVEL_2802_1_PID 0X2812 /* SeaLINK+8/485 (2802) Port 1 */
++#define SEALEVEL_2802_2_PID 0X2822 /* SeaLINK+8/485 (2802) Port 2 */
++#define SEALEVEL_2802_3_PID 0X2832 /* SeaLINK+8/485 (2802) Port 3 */
++#define SEALEVEL_2802_4_PID 0X2842 /* SeaLINK+8/485 (2802) Port 4 */
++#define SEALEVEL_2802_5_PID 0X2852 /* SeaLINK+8/485 (2802) Port 5 */
++#define SEALEVEL_2802_6_PID 0X2862 /* SeaLINK+8/485 (2802) Port 6 */
++#define SEALEVEL_2802_7_PID 0X2872 /* SeaLINK+8/485 (2802) Port 7 */
++#define SEALEVEL_2802_8_PID 0X2882 /* SeaLINK+8/485 (2802) Port 8 */
++#define SEALEVEL_2803_1_PID 0X2813 /* SeaLINK+8 (2803) Port 1 */
++#define SEALEVEL_2803_2_PID 0X2823 /* SeaLINK+8 (2803) Port 2 */
++#define SEALEVEL_2803_3_PID 0X2833 /* SeaLINK+8 (2803) Port 3 */
++#define SEALEVEL_2803_4_PID 0X2843 /* SeaLINK+8 (2803) Port 4 */
++#define SEALEVEL_2803_5_PID 0X2853 /* SeaLINK+8 (2803) Port 5 */
++#define SEALEVEL_2803_6_PID 0X2863 /* SeaLINK+8 (2803) Port 6 */
++#define SEALEVEL_2803_7_PID 0X2873 /* SeaLINK+8 (2803) Port 7 */
++#define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */
+
+ /*
+- * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
++ * JETI SPECTROMETER SPECBOS 1201
++ * http://www.jeti.com/products/sys/scb/scb1201.php
+ */
+-#define FTDI_RRCIRKITS_LOCOBUFFER_PID 0xc7d0 /* LocoBuffer USB */
++#define JETI_VID 0x0c6c
++#define JETI_SPC1201_PID 0x04b2
+
+ /*
+- * Eclo (http://www.eclo.pt/) product IDs.
+- * PID 0xEA90 submitted by Martin Grill.
++ * FTDI USB UART chips used in construction projects from the
++ * Elektor Electronics magazine (http://elektor-electronics.co.uk)
+ */
+-#define FTDI_ECLO_COM_1WIRE_PID 0xEA90 /* COM to 1-Wire USB adaptor */
++#define ELEKTOR_VID 0x0C7D
++#define ELEKTOR_FT323R_PID 0x0005 /* RFID-Reader, issue 09-2006 */
+
+ /*
+- * Papouch products (http://www.papouch.com/)
+- * Submitted by Folkert van Heusden
++ * Posiflex inc retail equipment (http://www.posiflex.com.tw)
+ */
+-
+-#define PAPOUCH_VID 0x5050 /* Vendor ID */
+-#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
+-#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
++#define POSIFLEX_VID 0x0d3a /* Vendor ID */
++#define POSIFLEX_PP7000_PID 0x0300 /* PP-7000II thermal printer */
+
+ /*
+- * ACG Identification Technologies GmbH products (http://www.acg.de/).
+- * Submitted by anton -at- goto10 -dot- org.
++ * The following are the values for two KOBIL chipcard terminals.
+ */
+-#define FTDI_ACG_HFDUAL_PID 0xDD20 /* HF Dual ISO Reader (RFID) */
++#define KOBIL_VID 0x0d46 /* KOBIL Vendor ID */
++#define KOBIL_CONV_B1_PID 0x2020 /* KOBIL Konverter for B1 */
++#define KOBIL_CONV_KAAN_PID 0x2021 /* KOBIL_Konverter for KAAN */
++
++#define FTDI_NF_RIC_VID 0x0DCD /* Vendor Id */
++#define FTDI_NF_RIC_PID 0x0001 /* Product Id */
+
+ /*
+- * Yost Engineering, Inc. products (www.yostengineering.com).
+- * PID 0xE050 submitted by Aaron Prose.
++ * Falcom Wireless Communications GmbH
+ */
+-#define FTDI_YEI_SERVOCENTER31_PID 0xE050 /* YEI ServoCenter3.1 USB */
++#define FALCOM_VID 0x0F94 /* Vendor Id */
++#define FALCOM_TWIST_PID 0x0001 /* Falcom Twist USB GPRS modem */
++#define FALCOM_SAMBA_PID 0x0005 /* Falcom Samba USB GPRS modem */
++
++/* Larsen and Brusgaard AltiTrack/USBtrack */
++#define LARSENBRUSGAARD_VID 0x0FD8
++#define LB_ALTITRACK_PID 0x0001
+
+ /*
+- * ThorLabs USB motor drivers
++ * TTi (Thurlby Thandar Instruments)
+ */
+-#define FTDI_THORLABS_PID 0xfaf0 /* ThorLabs USB motor drivers */
++#define TTI_VID 0x103E /* Vendor Id */
++#define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */
++
++/* Interbiometrics USB I/O Board */
++/* Developed for Interbiometrics by Rudolf Gugler */
++#define INTERBIOMETRICS_VID 0x1209
++#define INTERBIOMETRICS_IOBOARD_PID 0x1002
++#define INTERBIOMETRICS_MINI_IOBOARD_PID 0x1006
+
+ /*
+ * Testo products (http://www.testo.com/)
+@@ -806,18 +649,21 @@
+ #define TESTO_USB_INTERFACE_PID 0x0001
+
+ /*
+- * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com.
++ * Mobility Electronics products.
+ */
+-#define FTDI_GAMMA_SCOUT_PID 0xD678 /* Gamma Scout online */
++#define MOBILITY_VID 0x1342
++#define MOBILITY_USB_SERIAL_PID 0x0202 /* EasiDock USB 200 serial */
+
+ /*
+- * Tactrix OpenPort (ECU) devices.
+- * OpenPort 1.3M submitted by Donour Sizemore.
+- * OpenPort 1.3S and 1.3U submitted by Ian Abbott.
++ * FIC / OpenMoko, Inc. http://wiki.openmoko.org/wiki/Neo1973_Debug_Board_v3
++ * Submitted by Harald Welte <laforge@openmoko.org>
+ */
+-#define FTDI_TACTRIX_OPENPORT_13M_PID 0xCC48 /* OpenPort 1.3 Mitsubishi */
+-#define FTDI_TACTRIX_OPENPORT_13S_PID 0xCC49 /* OpenPort 1.3 Subaru */
+-#define FTDI_TACTRIX_OPENPORT_13U_PID 0xCC4A /* OpenPort 1.3 Universal */
++#define FIC_VID 0x1457
++#define FIC_NEO1973_DEBUG_PID 0x5118
++
++/* Olimex */
++#define OLIMEX_VID 0x15BA
++#define OLIMEX_ARM_USB_OCD_PID 0x0003
+
+ /*
+ * Telldus Technologies
+@@ -826,34 +672,275 @@
+ #define TELLDUS_TELLSTICK_PID 0x0C30 /* RF control dongle 433 MHz using FT232RL */
+
+ /*
+- * IBS elektronik product ids
+- * Submitted by Thomas Schleusener
++ * Bayer Ascensia Contour blood glucose meter USB-converter cable.
++ * http://winglucofacts.com/cables/
+ */
+-#define FTDI_IBS_US485_PID 0xff38 /* IBS US485 (USB<-->RS422/485 interface) */
+-#define FTDI_IBS_PICPRO_PID 0xff39 /* IBS PIC-Programmer */
+-#define FTDI_IBS_PCMCIA_PID 0xff3a /* IBS Card reader for PCMCIA SRAM-cards */
+-#define FTDI_IBS_PK1_PID 0xff3b /* IBS PK1 - Particel counter */
+-#define FTDI_IBS_RS232MON_PID 0xff3c /* IBS RS232 - Monitor */
+-#define FTDI_IBS_APP70_PID 0xff3d /* APP 70 (dust monitoring system) */
+-#define FTDI_IBS_PEDO_PID 0xff3e /* IBS PEDO-Modem (RF modem 868.35 MHz) */
+-#define FTDI_IBS_PROD_PID 0xff3f /* future device */
++#define BAYER_VID 0x1A79
++#define BAYER_CONTOUR_CABLE_PID 0x6001
+
+ /*
+- * MaxStream devices www.maxstream.net
++ * The following are the values for the Matrix Orbital FTDI Range
++ * Anything in this range will use an FT232RL.
+ */
+-#define FTDI_MAXSTREAM_PID 0xEE18 /* Xbee PKG-U Module */
+-
+-/* Olimex */
+-#define OLIMEX_VID 0x15BA
+-#define OLIMEX_ARM_USB_OCD_PID 0x0003
++#define MTXORB_VID 0x1B3D
++#define MTXORB_FTDI_RANGE_0100_PID 0x0100
++#define MTXORB_FTDI_RANGE_0101_PID 0x0101
++#define MTXORB_FTDI_RANGE_0102_PID 0x0102
++#define MTXORB_FTDI_RANGE_0103_PID 0x0103
++#define MTXORB_FTDI_RANGE_0104_PID 0x0104
++#define MTXORB_FTDI_RANGE_0105_PID 0x0105
++#define MTXORB_FTDI_RANGE_0106_PID 0x0106
++#define MTXORB_FTDI_RANGE_0107_PID 0x0107
++#define MTXORB_FTDI_RANGE_0108_PID 0x0108
++#define MTXORB_FTDI_RANGE_0109_PID 0x0109
++#define MTXORB_FTDI_RANGE_010A_PID 0x010A
++#define MTXORB_FTDI_RANGE_010B_PID 0x010B
++#define MTXORB_FTDI_RANGE_010C_PID 0x010C
++#define MTXORB_FTDI_RANGE_010D_PID 0x010D
++#define MTXORB_FTDI_RANGE_010E_PID 0x010E
++#define MTXORB_FTDI_RANGE_010F_PID 0x010F
++#define MTXORB_FTDI_RANGE_0110_PID 0x0110
++#define MTXORB_FTDI_RANGE_0111_PID 0x0111
++#define MTXORB_FTDI_RANGE_0112_PID 0x0112
++#define MTXORB_FTDI_RANGE_0113_PID 0x0113
++#define MTXORB_FTDI_RANGE_0114_PID 0x0114
++#define MTXORB_FTDI_RANGE_0115_PID 0x0115
++#define MTXORB_FTDI_RANGE_0116_PID 0x0116
++#define MTXORB_FTDI_RANGE_0117_PID 0x0117
++#define MTXORB_FTDI_RANGE_0118_PID 0x0118
++#define MTXORB_FTDI_RANGE_0119_PID 0x0119
++#define MTXORB_FTDI_RANGE_011A_PID 0x011A
++#define MTXORB_FTDI_RANGE_011B_PID 0x011B
++#define MTXORB_FTDI_RANGE_011C_PID 0x011C
++#define MTXORB_FTDI_RANGE_011D_PID 0x011D
++#define MTXORB_FTDI_RANGE_011E_PID 0x011E
++#define MTXORB_FTDI_RANGE_011F_PID 0x011F
++#define MTXORB_FTDI_RANGE_0120_PID 0x0120
++#define MTXORB_FTDI_RANGE_0121_PID 0x0121
++#define MTXORB_FTDI_RANGE_0122_PID 0x0122
++#define MTXORB_FTDI_RANGE_0123_PID 0x0123
++#define MTXORB_FTDI_RANGE_0124_PID 0x0124
++#define MTXORB_FTDI_RANGE_0125_PID 0x0125
++#define MTXORB_FTDI_RANGE_0126_PID 0x0126
++#define MTXORB_FTDI_RANGE_0127_PID 0x0127
++#define MTXORB_FTDI_RANGE_0128_PID 0x0128
++#define MTXORB_FTDI_RANGE_0129_PID 0x0129
++#define MTXORB_FTDI_RANGE_012A_PID 0x012A
++#define MTXORB_FTDI_RANGE_012B_PID 0x012B
++#define MTXORB_FTDI_RANGE_012C_PID 0x012C
++#define MTXORB_FTDI_RANGE_012D_PID 0x012D
++#define MTXORB_FTDI_RANGE_012E_PID 0x012E
++#define MTXORB_FTDI_RANGE_012F_PID 0x012F
++#define MTXORB_FTDI_RANGE_0130_PID 0x0130
++#define MTXORB_FTDI_RANGE_0131_PID 0x0131
++#define MTXORB_FTDI_RANGE_0132_PID 0x0132
++#define MTXORB_FTDI_RANGE_0133_PID 0x0133
++#define MTXORB_FTDI_RANGE_0134_PID 0x0134
++#define MTXORB_FTDI_RANGE_0135_PID 0x0135
++#define MTXORB_FTDI_RANGE_0136_PID 0x0136
++#define MTXORB_FTDI_RANGE_0137_PID 0x0137
++#define MTXORB_FTDI_RANGE_0138_PID 0x0138
++#define MTXORB_FTDI_RANGE_0139_PID 0x0139
++#define MTXORB_FTDI_RANGE_013A_PID 0x013A
++#define MTXORB_FTDI_RANGE_013B_PID 0x013B
++#define MTXORB_FTDI_RANGE_013C_PID 0x013C
++#define MTXORB_FTDI_RANGE_013D_PID 0x013D
++#define MTXORB_FTDI_RANGE_013E_PID 0x013E
++#define MTXORB_FTDI_RANGE_013F_PID 0x013F
++#define MTXORB_FTDI_RANGE_0140_PID 0x0140
++#define MTXORB_FTDI_RANGE_0141_PID 0x0141
++#define MTXORB_FTDI_RANGE_0142_PID 0x0142
++#define MTXORB_FTDI_RANGE_0143_PID 0x0143
++#define MTXORB_FTDI_RANGE_0144_PID 0x0144
++#define MTXORB_FTDI_RANGE_0145_PID 0x0145
++#define MTXORB_FTDI_RANGE_0146_PID 0x0146
++#define MTXORB_FTDI_RANGE_0147_PID 0x0147
++#define MTXORB_FTDI_RANGE_0148_PID 0x0148
++#define MTXORB_FTDI_RANGE_0149_PID 0x0149
++#define MTXORB_FTDI_RANGE_014A_PID 0x014A
++#define MTXORB_FTDI_RANGE_014B_PID 0x014B
++#define MTXORB_FTDI_RANGE_014C_PID 0x014C
++#define MTXORB_FTDI_RANGE_014D_PID 0x014D
++#define MTXORB_FTDI_RANGE_014E_PID 0x014E
++#define MTXORB_FTDI_RANGE_014F_PID 0x014F
++#define MTXORB_FTDI_RANGE_0150_PID 0x0150
++#define MTXORB_FTDI_RANGE_0151_PID 0x0151
++#define MTXORB_FTDI_RANGE_0152_PID 0x0152
++#define MTXORB_FTDI_RANGE_0153_PID 0x0153
++#define MTXORB_FTDI_RANGE_0154_PID 0x0154
++#define MTXORB_FTDI_RANGE_0155_PID 0x0155
++#define MTXORB_FTDI_RANGE_0156_PID 0x0156
++#define MTXORB_FTDI_RANGE_0157_PID 0x0157
++#define MTXORB_FTDI_RANGE_0158_PID 0x0158
++#define MTXORB_FTDI_RANGE_0159_PID 0x0159
++#define MTXORB_FTDI_RANGE_015A_PID 0x015A
++#define MTXORB_FTDI_RANGE_015B_PID 0x015B
++#define MTXORB_FTDI_RANGE_015C_PID 0x015C
++#define MTXORB_FTDI_RANGE_015D_PID 0x015D
++#define MTXORB_FTDI_RANGE_015E_PID 0x015E
++#define MTXORB_FTDI_RANGE_015F_PID 0x015F
++#define MTXORB_FTDI_RANGE_0160_PID 0x0160
++#define MTXORB_FTDI_RANGE_0161_PID 0x0161
++#define MTXORB_FTDI_RANGE_0162_PID 0x0162
++#define MTXORB_FTDI_RANGE_0163_PID 0x0163
++#define MTXORB_FTDI_RANGE_0164_PID 0x0164
++#define MTXORB_FTDI_RANGE_0165_PID 0x0165
++#define MTXORB_FTDI_RANGE_0166_PID 0x0166
++#define MTXORB_FTDI_RANGE_0167_PID 0x0167
++#define MTXORB_FTDI_RANGE_0168_PID 0x0168
++#define MTXORB_FTDI_RANGE_0169_PID 0x0169
++#define MTXORB_FTDI_RANGE_016A_PID 0x016A
++#define MTXORB_FTDI_RANGE_016B_PID 0x016B
++#define MTXORB_FTDI_RANGE_016C_PID 0x016C
++#define MTXORB_FTDI_RANGE_016D_PID 0x016D
++#define MTXORB_FTDI_RANGE_016E_PID 0x016E
++#define MTXORB_FTDI_RANGE_016F_PID 0x016F
++#define MTXORB_FTDI_RANGE_0170_PID 0x0170
++#define MTXORB_FTDI_RANGE_0171_PID 0x0171
++#define MTXORB_FTDI_RANGE_0172_PID 0x0172
++#define MTXORB_FTDI_RANGE_0173_PID 0x0173
++#define MTXORB_FTDI_RANGE_0174_PID 0x0174
++#define MTXORB_FTDI_RANGE_0175_PID 0x0175
++#define MTXORB_FTDI_RANGE_0176_PID 0x0176
++#define MTXORB_FTDI_RANGE_0177_PID 0x0177
++#define MTXORB_FTDI_RANGE_0178_PID 0x0178
++#define MTXORB_FTDI_RANGE_0179_PID 0x0179
++#define MTXORB_FTDI_RANGE_017A_PID 0x017A
++#define MTXORB_FTDI_RANGE_017B_PID 0x017B
++#define MTXORB_FTDI_RANGE_017C_PID 0x017C
++#define MTXORB_FTDI_RANGE_017D_PID 0x017D
++#define MTXORB_FTDI_RANGE_017E_PID 0x017E
++#define MTXORB_FTDI_RANGE_017F_PID 0x017F
++#define MTXORB_FTDI_RANGE_0180_PID 0x0180
++#define MTXORB_FTDI_RANGE_0181_PID 0x0181
++#define MTXORB_FTDI_RANGE_0182_PID 0x0182
++#define MTXORB_FTDI_RANGE_0183_PID 0x0183
++#define MTXORB_FTDI_RANGE_0184_PID 0x0184
++#define MTXORB_FTDI_RANGE_0185_PID 0x0185
++#define MTXORB_FTDI_RANGE_0186_PID 0x0186
++#define MTXORB_FTDI_RANGE_0187_PID 0x0187
++#define MTXORB_FTDI_RANGE_0188_PID 0x0188
++#define MTXORB_FTDI_RANGE_0189_PID 0x0189
++#define MTXORB_FTDI_RANGE_018A_PID 0x018A
++#define MTXORB_FTDI_RANGE_018B_PID 0x018B
++#define MTXORB_FTDI_RANGE_018C_PID 0x018C
++#define MTXORB_FTDI_RANGE_018D_PID 0x018D
++#define MTXORB_FTDI_RANGE_018E_PID 0x018E
++#define MTXORB_FTDI_RANGE_018F_PID 0x018F
++#define MTXORB_FTDI_RANGE_0190_PID 0x0190
++#define MTXORB_FTDI_RANGE_0191_PID 0x0191
++#define MTXORB_FTDI_RANGE_0192_PID 0x0192
++#define MTXORB_FTDI_RANGE_0193_PID 0x0193
++#define MTXORB_FTDI_RANGE_0194_PID 0x0194
++#define MTXORB_FTDI_RANGE_0195_PID 0x0195
++#define MTXORB_FTDI_RANGE_0196_PID 0x0196
++#define MTXORB_FTDI_RANGE_0197_PID 0x0197
++#define MTXORB_FTDI_RANGE_0198_PID 0x0198
++#define MTXORB_FTDI_RANGE_0199_PID 0x0199
++#define MTXORB_FTDI_RANGE_019A_PID 0x019A
++#define MTXORB_FTDI_RANGE_019B_PID 0x019B
++#define MTXORB_FTDI_RANGE_019C_PID 0x019C
++#define MTXORB_FTDI_RANGE_019D_PID 0x019D
++#define MTXORB_FTDI_RANGE_019E_PID 0x019E
++#define MTXORB_FTDI_RANGE_019F_PID 0x019F
++#define MTXORB_FTDI_RANGE_01A0_PID 0x01A0
++#define MTXORB_FTDI_RANGE_01A1_PID 0x01A1
++#define MTXORB_FTDI_RANGE_01A2_PID 0x01A2
++#define MTXORB_FTDI_RANGE_01A3_PID 0x01A3
++#define MTXORB_FTDI_RANGE_01A4_PID 0x01A4
++#define MTXORB_FTDI_RANGE_01A5_PID 0x01A5
++#define MTXORB_FTDI_RANGE_01A6_PID 0x01A6
++#define MTXORB_FTDI_RANGE_01A7_PID 0x01A7
++#define MTXORB_FTDI_RANGE_01A8_PID 0x01A8
++#define MTXORB_FTDI_RANGE_01A9_PID 0x01A9
++#define MTXORB_FTDI_RANGE_01AA_PID 0x01AA
++#define MTXORB_FTDI_RANGE_01AB_PID 0x01AB
++#define MTXORB_FTDI_RANGE_01AC_PID 0x01AC
++#define MTXORB_FTDI_RANGE_01AD_PID 0x01AD
++#define MTXORB_FTDI_RANGE_01AE_PID 0x01AE
++#define MTXORB_FTDI_RANGE_01AF_PID 0x01AF
++#define MTXORB_FTDI_RANGE_01B0_PID 0x01B0
++#define MTXORB_FTDI_RANGE_01B1_PID 0x01B1
++#define MTXORB_FTDI_RANGE_01B2_PID 0x01B2
++#define MTXORB_FTDI_RANGE_01B3_PID 0x01B3
++#define MTXORB_FTDI_RANGE_01B4_PID 0x01B4
++#define MTXORB_FTDI_RANGE_01B5_PID 0x01B5
++#define MTXORB_FTDI_RANGE_01B6_PID 0x01B6
++#define MTXORB_FTDI_RANGE_01B7_PID 0x01B7
++#define MTXORB_FTDI_RANGE_01B8_PID 0x01B8
++#define MTXORB_FTDI_RANGE_01B9_PID 0x01B9
++#define MTXORB_FTDI_RANGE_01BA_PID 0x01BA
++#define MTXORB_FTDI_RANGE_01BB_PID 0x01BB
++#define MTXORB_FTDI_RANGE_01BC_PID 0x01BC
++#define MTXORB_FTDI_RANGE_01BD_PID 0x01BD
++#define MTXORB_FTDI_RANGE_01BE_PID 0x01BE
++#define MTXORB_FTDI_RANGE_01BF_PID 0x01BF
++#define MTXORB_FTDI_RANGE_01C0_PID 0x01C0
++#define MTXORB_FTDI_RANGE_01C1_PID 0x01C1
++#define MTXORB_FTDI_RANGE_01C2_PID 0x01C2
++#define MTXORB_FTDI_RANGE_01C3_PID 0x01C3
++#define MTXORB_FTDI_RANGE_01C4_PID 0x01C4
++#define MTXORB_FTDI_RANGE_01C5_PID 0x01C5
++#define MTXORB_FTDI_RANGE_01C6_PID 0x01C6
++#define MTXORB_FTDI_RANGE_01C7_PID 0x01C7
++#define MTXORB_FTDI_RANGE_01C8_PID 0x01C8
++#define MTXORB_FTDI_RANGE_01C9_PID 0x01C9
++#define MTXORB_FTDI_RANGE_01CA_PID 0x01CA
++#define MTXORB_FTDI_RANGE_01CB_PID 0x01CB
++#define MTXORB_FTDI_RANGE_01CC_PID 0x01CC
++#define MTXORB_FTDI_RANGE_01CD_PID 0x01CD
++#define MTXORB_FTDI_RANGE_01CE_PID 0x01CE
++#define MTXORB_FTDI_RANGE_01CF_PID 0x01CF
++#define MTXORB_FTDI_RANGE_01D0_PID 0x01D0
++#define MTXORB_FTDI_RANGE_01D1_PID 0x01D1
++#define MTXORB_FTDI_RANGE_01D2_PID 0x01D2
++#define MTXORB_FTDI_RANGE_01D3_PID 0x01D3
++#define MTXORB_FTDI_RANGE_01D4_PID 0x01D4
++#define MTXORB_FTDI_RANGE_01D5_PID 0x01D5
++#define MTXORB_FTDI_RANGE_01D6_PID 0x01D6
++#define MTXORB_FTDI_RANGE_01D7_PID 0x01D7
++#define MTXORB_FTDI_RANGE_01D8_PID 0x01D8
++#define MTXORB_FTDI_RANGE_01D9_PID 0x01D9
++#define MTXORB_FTDI_RANGE_01DA_PID 0x01DA
++#define MTXORB_FTDI_RANGE_01DB_PID 0x01DB
++#define MTXORB_FTDI_RANGE_01DC_PID 0x01DC
++#define MTXORB_FTDI_RANGE_01DD_PID 0x01DD
++#define MTXORB_FTDI_RANGE_01DE_PID 0x01DE
++#define MTXORB_FTDI_RANGE_01DF_PID 0x01DF
++#define MTXORB_FTDI_RANGE_01E0_PID 0x01E0
++#define MTXORB_FTDI_RANGE_01E1_PID 0x01E1
++#define MTXORB_FTDI_RANGE_01E2_PID 0x01E2
++#define MTXORB_FTDI_RANGE_01E3_PID 0x01E3
++#define MTXORB_FTDI_RANGE_01E4_PID 0x01E4
++#define MTXORB_FTDI_RANGE_01E5_PID 0x01E5
++#define MTXORB_FTDI_RANGE_01E6_PID 0x01E6
++#define MTXORB_FTDI_RANGE_01E7_PID 0x01E7
++#define MTXORB_FTDI_RANGE_01E8_PID 0x01E8
++#define MTXORB_FTDI_RANGE_01E9_PID 0x01E9
++#define MTXORB_FTDI_RANGE_01EA_PID 0x01EA
++#define MTXORB_FTDI_RANGE_01EB_PID 0x01EB
++#define MTXORB_FTDI_RANGE_01EC_PID 0x01EC
++#define MTXORB_FTDI_RANGE_01ED_PID 0x01ED
++#define MTXORB_FTDI_RANGE_01EE_PID 0x01EE
++#define MTXORB_FTDI_RANGE_01EF_PID 0x01EF
++#define MTXORB_FTDI_RANGE_01F0_PID 0x01F0
++#define MTXORB_FTDI_RANGE_01F1_PID 0x01F1
++#define MTXORB_FTDI_RANGE_01F2_PID 0x01F2
++#define MTXORB_FTDI_RANGE_01F3_PID 0x01F3
++#define MTXORB_FTDI_RANGE_01F4_PID 0x01F4
++#define MTXORB_FTDI_RANGE_01F5_PID 0x01F5
++#define MTXORB_FTDI_RANGE_01F6_PID 0x01F6
++#define MTXORB_FTDI_RANGE_01F7_PID 0x01F7
++#define MTXORB_FTDI_RANGE_01F8_PID 0x01F8
++#define MTXORB_FTDI_RANGE_01F9_PID 0x01F9
++#define MTXORB_FTDI_RANGE_01FA_PID 0x01FA
++#define MTXORB_FTDI_RANGE_01FB_PID 0x01FB
++#define MTXORB_FTDI_RANGE_01FC_PID 0x01FC
++#define MTXORB_FTDI_RANGE_01FD_PID 0x01FD
++#define MTXORB_FTDI_RANGE_01FE_PID 0x01FE
++#define MTXORB_FTDI_RANGE_01FF_PID 0x01FF
+
+-/* Luminary Micro Stellaris Boards, VID = FTDI_VID */
+-/* FTDI 2332C Dual channel device, side A=245 FIFO (JTAG), Side B=RS232 UART */
+-#define LMI_LM3S_DEVEL_BOARD_PID 0xbcd8
+-#define LMI_LM3S_EVAL_BOARD_PID 0xbcd9
+
+-/* www.elsterelectricity.com Elster Unicom III Optical Probe */
+-#define FTDI_ELSTER_UNICOM_PID 0xE700 /* Product Id */
+
+ /*
+ * The Mobility Lab (TML)
+@@ -862,45 +949,11 @@
+ #define TML_VID 0x1B91 /* Vendor ID */
+ #define TML_USB_SERIAL_PID 0x0064 /* USB - Serial Converter */
+
+-/* Propox devices */
+-#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
+-
+-/* Rig Expert Ukraine devices */
+-#define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
+-
+-/* Domintell products http://www.domintell.com */
+-#define FTDI_DOMINTELL_DGQG_PID 0xEF50 /* Master */
+-#define FTDI_DOMINTELL_DUSB_PID 0xEF51 /* DUSB01 module */
+-
+ /* Alti-2 products http://www.alti-2.com */
+ #define ALTI2_VID 0x1BC9
+ #define ALTI2_N3_PID 0x6001 /* Neptune 3 */
+
+ /*
+- * FIC / OpenMoko, Inc. http://wiki.openmoko.org/wiki/Neo1973_Debug_Board_v3
+- * Submitted by Harald Welte <laforge@openmoko.org>
+- */
+-#define FIC_VID 0x1457
+-#define FIC_NEO1973_DEBUG_PID 0x5118
+-
+-/*
+- * RATOC REX-USB60F
+- */
+-#define RATOC_VENDOR_ID 0x0584
+-#define RATOC_PRODUCT_ID_USB60F 0xb020
+-
+-/*
+- * DIEBOLD BCS SE923
+- */
+-#define DIEBOLD_BCS_SE923_PID 0xfb99
+-
+-/*
+- * Atmel STK541
+- */
+-#define ATMEL_VID 0x03eb /* Vendor ID */
+-#define STK541_PID 0x2109 /* Zigbee Controller */
+-
+-/*
+ * Dresden Elektronic Sensor Terminal Board
+ */
+ #define DE_VID 0x1cf1 /* Vendor ID */
+@@ -908,19 +961,13 @@
+ #define WHT_PID 0x0004 /* Wireless Handheld Terminal */
+
+ /*
+- * Blackfin gnICE JTAG
+- * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
++ * Papouch products (http://www.papouch.com/)
++ * Submitted by Folkert van Heusden
+ */
+-#define ADI_VID 0x0456
+-#define ADI_GNICE_PID 0xF000
+-#define ADI_GNICEPLUS_PID 0xF001
+
+-/*
+- * JETI SPECTROMETER SPECBOS 1201
+- * http://www.jeti.com/products/sys/scb/scb1201.php
+- */
+-#define JETI_VID 0x0c6c
+-#define JETI_SPC1201_PID 0x04b2
++#define PAPOUCH_VID 0x5050 /* Vendor ID */
++#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
++#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
+
+ /*
+ * Marvell SheevaPlug
+@@ -928,32 +975,12 @@
+ #define MARVELL_VID 0x9e88
+ #define MARVELL_SHEEVAPLUG_PID 0x9e8f
+
+-#define FTDI_TURTELIZER_PID 0xBDC8 /* JTAG/RS-232 adapter by egnite GmBH */
+-
+ /*
+- * GN Otometrics (http://www.otometrics.com)
+- * Submitted by Ville Sundberg.
+- */
+-#define GN_OTOMETRICS_VID 0x0c33 /* Vendor ID */
+-#define AURICAL_USB_PID 0x0010 /* Aurical USB Audiometer */
+-
+-/*
+- * Bayer Ascensia Contour blood glucose meter USB-converter cable.
+- * http://winglucofacts.com/cables/
+- */
+-#define BAYER_VID 0x1A79
+-#define BAYER_CONTOUR_CABLE_PID 0x6001
+-
+-/*
+- * Marvell OpenRD Base, Client
+- * http://www.open-rd.org
+- * OpenRD Base, Client use VID 0x0403
+- */
+-#define MARVELL_OPENRD_PID 0x9e90
+-
+-/*
+- * Hameg HO820 and HO870 interface (using VID 0x0403)
++ * Evolution Robotics products (http://www.evolution.com/).
++ * Submitted by Shawn M. Lavelle.
+ */
+-#define HAMEG_HO820_PID 0xed74
+-#define HAMEG_HO870_PID 0xed71
+-
++#define EVOLUTION_VID 0xDEEE /* Vendor ID */
++#define EVOLUTION_ER1_PID 0x0300 /* ER1 Control Module */
++#define EVO_8U232AM_PID 0x02FF /* Evolution robotics RCM2 (FT232AM)*/
++#define EVO_HYBRID_PID 0x0302 /* Evolution robotics RCM4 PID (FT232BM)*/
++#define EVO_RCM4_PID 0x0303 /* Evolution robotics RCM4 PID */
diff --git a/usb.current/usb-musb-correct-dma-address-for-tx.patch b/usb.current/usb-musb-correct-dma-address-for-tx.patch
new file mode 100644
index 00000000000000..912e6fdb6aecce
--- /dev/null
+++ b/usb.current/usb-musb-correct-dma-address-for-tx.patch
@@ -0,0 +1,34 @@
+From vapier@gentoo.org Tue Dec 22 14:20:14 2009
+From: Cliff Cai <cliff.cai@analog.com>
+Date: Mon, 21 Dec 2009 21:18:02 -0500
+Subject: USB: musb: correct DMA address for tx
+To: linux-usb@vger.kernel.org, Felipe Balbi <felipe.balbi@nokia.com>
+Cc: uclinux-dist-devel@blackfin.uclinux.org, Cliff Cai <cliff.cai@analog.com>
+Message-ID: <1261448282-20059-1-git-send-email-vapier@gentoo.org>
+
+
+From: Cliff Cai <cliff.cai@analog.com>
+
+Since a DMA transfer may need to be kicked off several times to complete,
+the DMA start must include the length that has already been transferred.
+
+Signed-off-by: Cliff Cai <cliff.cai@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Cc: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_gadget.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_gadget.c
++++ b/drivers/usb/musb/musb_gadget.c
+@@ -319,7 +319,7 @@ static void txstate(struct musb *musb, s
+ use_dma = use_dma && c->channel_program(
+ musb_ep->dma, musb_ep->packet_sz,
+ musb_ep->dma->desired_mode,
+- request->dma, request_size);
++ request->dma + request->actual, request_size);
+ if (use_dma) {
+ if (musb_ep->dma->desired_mode == 0) {
+ /*
diff --git a/usb.current/usb-musb-do-not-work-if-no-gadget-driver-is-loaded.patch b/usb.current/usb-musb-do-not-work-if-no-gadget-driver-is-loaded.patch
new file mode 100644
index 00000000000000..6ef2536aacb0e6
--- /dev/null
+++ b/usb.current/usb-musb-do-not-work-if-no-gadget-driver-is-loaded.patch
@@ -0,0 +1,39 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:16:27 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 13:47:30 +0200
+Subject: USB: musb: do not work if no gadget driver is loaded
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Atal Shargorodsky <ext-atal.shargorodsky@nokia.com>, Yauheni Kaliuta <yauheni.kaliuta@nokia.com>, Maulik <x0082077@ti.com>, Felipe Balbi <felipe.balbi@nokia.com>, David Brownell <dbrownell@users.sourceforge.net>
+Message-ID: <1260877650-32451-1-git-send-email-felipe.balbi@nokia.com>
+
+
+On OTG and gadget-only configurations, we need a gadget driver
+in order to work properly, so avoid changing operation modes
+when there's no gadget driver loaded.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Cc: David Brownell <dbrownell@users.sourceforge.net>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1521,6 +1521,14 @@ irqreturn_t musb_interrupt(struct musb *
+ (devctl & MUSB_DEVCTL_HM) ? "host" : "peripheral",
+ musb->int_usb, musb->int_tx, musb->int_rx);
+
++#ifdef CONFIG_USB_GADGET_MUSB_HDRC
++ if (is_otg_enabled(musb) || is_peripheral_enabled(musb))
++ if (!musb->gadget_driver) {
++ DBG(5, "No gadget driver loaded\n");
++ return IRQ_HANDLED;
++ }
++#endif
++
+ /* the core can interrupt us for multiple reasons; docs have
+ * a generic interrupt flowchart to follow
+ */
diff --git a/usb.current/usb-musb-fix-array-index-out-of-bounds-issue.patch b/usb.current/usb-musb-fix-array-index-out-of-bounds-issue.patch
new file mode 100644
index 00000000000000..33e519f9830839
--- /dev/null
+++ b/usb.current/usb-musb-fix-array-index-out-of-bounds-issue.patch
@@ -0,0 +1,40 @@
+From x0082077@ti.com Tue Dec 22 14:21:30 2009
+From: Maulik Mankad <x0082077@ti.com>
+Date: Tue, 22 Dec 2009 16:19:53 +0530
+Subject: USB: musb: Fix array index out of bounds issue
+To: linux-usb@vger.kernel.org
+Cc: david-b@pacbell.net, Maulik Mankad <x0082077@ti.com>
+Message-ID: <1261478993-32294-1-git-send-email-x0082077@ti.com>
+
+
+This patch fixes the below array index out of bounds issue.
+
+Buffer overflow, array index of 'aInfo' may be out of
+bounds. Array 'aInfo' of size 78 may use index value(s) 6..84
+
+The data stored in 'aInfo' array exceeds the array size of 78.
+
+This patch increases the size of this array to hold the string
+correctly without any memory corruption.
+
+This issue was reported by Klockwork tool.
+
+Signed-off-by: Maulik Mankad <x0082077@ti.com>
+Cc: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1319,7 +1319,7 @@ static int __init musb_core_init(u16 mus
+ #endif
+ u8 reg;
+ char *type;
+- char aInfo[78], aRevision[32], aDate[12];
++ char aInfo[90], aRevision[32], aDate[12];
+ void __iomem *mbase = musb->mregs;
+ int status = 0;
+ int i;
diff --git a/usb.current/usb-musb-fix-compiling-warning-with-min-macro.patch b/usb.current/usb-musb-fix-compiling-warning-with-min-macro.patch
new file mode 100644
index 00000000000000..39d3f280a666a1
--- /dev/null
+++ b/usb.current/usb-musb-fix-compiling-warning-with-min-macro.patch
@@ -0,0 +1,38 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:12:35 2009
+From: Cliff Cai <cliff.cai@analog.com>
+Date: Tue, 15 Dec 2009 11:08:44 +0200
+Subject: USB: musb: fix compiling warning with min() macro
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Cliff Cai <cliff.cai@analog.com>, Mike Frysinger <vapier@gentoo.org>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-8-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Cliff Cai <cliff.cai@analog.com>
+
+Current musb gadget dma code produces the warning:
+drivers/usb/musb/musb_gadget.c: In function 'txstate':
+drivers/usb/musb/musb_gadget.c:312: warning: comparison of distinct
+ pointer types lacks a cast
+
+So switch to min_t(size_t, ...).
+
+Signed-off-by: Cliff Cai <cliff.cai@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_gadget.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_gadget.c
++++ b/drivers/usb/musb/musb_gadget.c
+@@ -309,7 +309,7 @@ static void txstate(struct musb *musb, s
+ size_t request_size;
+
+ /* setup DMA, then program endpoint CSR */
+- request_size = min(request->length,
++ request_size = min_t(size_t, request->length,
+ musb_ep->dma->max_len);
+ if (request_size < musb_ep->packet_sz)
+ musb_ep->dma->desired_mode = 0;
diff --git a/usb.current/usb-musb-fix-for-crash-in-dm646x-usb-when-cppi-dma-is-enabled.patch b/usb.current/usb-musb-fix-for-crash-in-dm646x-usb-when-cppi-dma-is-enabled.patch
new file mode 100644
index 00000000000000..69524ec482f242
--- /dev/null
+++ b/usb.current/usb-musb-fix-for-crash-in-dm646x-usb-when-cppi-dma-is-enabled.patch
@@ -0,0 +1,53 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:16:50 2009
+From: Swaminathan S <swami.iyer@ti.com>
+Date: Tue, 15 Dec 2009 13:30:00 +0200
+Subject: USB: musb: fix for crash in DM646x USB when (CPPI)DMA is enabled
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Atal Shargorodsky <ext-atal.shargorodsky@nokia.com>, Yauheni Kaliuta <yauheni.kaliuta@nokia.com>, Swaminathan S <swami.iyer@ti.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260876601-7598-12-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Swaminathan S <swami.iyer@ti.com>
+
+Race condition exists between the cppi_interrupt handler and
+davinci_interrupt handler w.r.t completing a TX IO. Since DM646x
+has seperate DMA and USB endpoint interrupts cppi_interrupt handler
+needs to hold the lock while operating on the endpoint.
+
+Update over previous patch to avoid taking the lock if already
+taken. Tested on DM644x, DM355 and DM646x platforms.
+
+Signed-off-by: Swaminathan S <swami.iyer@ti.com>
+Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/cppi_dma.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/usb/musb/cppi_dma.c
++++ b/drivers/usb/musb/cppi_dma.c
+@@ -1154,8 +1154,11 @@ irqreturn_t cppi_interrupt(int irq, void
+ struct musb_hw_ep *hw_ep = NULL;
+ u32 rx, tx;
+ int i, index;
++ unsigned long flags;
+
+ cppi = container_of(musb->dma_controller, struct cppi, controller);
++ if (cppi->irq)
++ spin_lock_irqsave(&musb->lock, flags);
+
+ tibase = musb->ctrl_base;
+
+@@ -1285,6 +1288,9 @@ irqreturn_t cppi_interrupt(int irq, void
+ /* write to CPPI EOI register to re-enable interrupts */
+ musb_writel(tibase, DAVINCI_CPPI_EOI_REG, 0);
+
++ if (cppi->irq)
++ spin_unlock_irqrestore(&musb->lock, flags);
++
+ return IRQ_HANDLED;
+ }
+
diff --git a/usb.current/usb-musb-fix-null-pointer-dereference-issue.patch b/usb.current/usb-musb-fix-null-pointer-dereference-issue.patch
new file mode 100644
index 00000000000000..5c425de08f8129
--- /dev/null
+++ b/usb.current/usb-musb-fix-null-pointer-dereference-issue.patch
@@ -0,0 +1,48 @@
+From x0082077@ti.com Tue Dec 22 14:20:44 2009
+From: Maulik Mankad <x0082077@ti.com>
+Date: Tue, 22 Dec 2009 16:18:19 +0530
+Subject: USB: musb: Fix null pointer dereference issue
+To: linux-usb@vger.kernel.org
+Cc: david-b@pacbell.net, Maulik Mankad <x0082077@ti.com>
+Message-ID: <1261478899-31816-1-git-send-email-x0082077@ti.com>
+
+
+This patch fixes the following NULL pointer dereference issue.
+
+Pointer 'request' returned from call to function 'next_request'
+at line 748 may be NULL and may be dereferenced at line 792.
+
+============
+Code Snippet
+============
+
+748: request = next_request(musb_ep);
+785: if (dma && (csr & MUSB_RXCSR_DMAENAB)) {
+ csr &= ~(MUSB_RXCSR_AUTOCLEAR
+ | MUSB_RXCSR_DMAENAB
+ | MUSB_RXCSR_DMAMODE);
+ musb_writew(epio, MUSB_RXCSR,
+ MUSB_RXCSR_P_WZC_BITS | csr);
+
+792: request->actual += musb_ep->dma->actual_len;
+
+
+Signed-off-by: Maulik Mankad <x0082077@ti.com>
+Cc: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_gadget.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/musb/musb_gadget.c
++++ b/drivers/usb/musb/musb_gadget.c
+@@ -746,6 +746,8 @@ void musb_g_rx(struct musb *musb, u8 epn
+ musb_ep_select(mbase, epnum);
+
+ request = next_request(musb_ep);
++ if (!request)
++ return;
+
+ csr = musb_readw(epio, MUSB_RXCSR);
+ dma = is_dma_capable() ? musb_ep->dma : NULL;
diff --git a/usb.current/usb-musb-gadget-set-otg-tranceiver-to-idle-when-registering-gadget.patch b/usb.current/usb-musb-gadget-set-otg-tranceiver-to-idle-when-registering-gadget.patch
new file mode 100644
index 00000000000000..381500ff57b1c7
--- /dev/null
+++ b/usb.current/usb-musb-gadget-set-otg-tranceiver-to-idle-when-registering-gadget.patch
@@ -0,0 +1,37 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:15:51 2009
+From: Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>
+Date: Tue, 15 Dec 2009 13:29:58 +0200
+Subject: USB: musb: gadget: set otg tranceiver to idle when registering gadget
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Atal Shargorodsky <ext-atal.shargorodsky@nokia.com>, Yauheni Kaliuta <yauheni.kaliuta@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>, David Brownell <dbrownell@users.sourceforge.net>
+Message-ID: <1260876601-7598-10-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>
+
+When registering gadget driver, the state of the transceiver
+must be set from undefined (no gadget) to b_idle.
+
+Module unload sets the transceiver state to undefined state.
+After the first load/unload pair, the reset irq will be lost.
+
+Signed-off-by: Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Cc: David Brownell <dbrownell@users.sourceforge.net>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_gadget.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/musb/musb_gadget.c
++++ b/drivers/usb/musb/musb_gadget.c
+@@ -1731,6 +1731,7 @@ int usb_gadget_register_driver(struct us
+ spin_lock_irqsave(&musb->lock, flags);
+
+ otg_set_peripheral(musb->xceiv, &musb->g);
++ musb->xceiv->state = OTG_STATE_B_IDLE;
+ musb->is_active = 1;
+
+ /* FIXME this ignores the softconnect flag. Drivers are
diff --git a/usb.current/usb-musb-gadget_ep0-avoid-setupend-interrupt.patch b/usb.current/usb-musb-gadget_ep0-avoid-setupend-interrupt.patch
new file mode 100644
index 00000000000000..46a4fbf814b63f
--- /dev/null
+++ b/usb.current/usb-musb-gadget_ep0-avoid-setupend-interrupt.patch
@@ -0,0 +1,61 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:17:38 2009
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Tue, 15 Dec 2009 13:30:01 +0200
+Subject: USB: musb: gadget_ep0: avoid SetupEnd interrupt
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Atal Shargorodsky <ext-atal.shargorodsky@nokia.com>, Yauheni Kaliuta <yauheni.kaliuta@nokia.com>, Sergei Shtylyov <sshtylyov@ru.mvista.com>, stable@kernel.org, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260876601-7598-13-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+Gadget stalling a zero-length SETUP request results in this error message:
+
+SetupEnd came in a wrong ep0stage idle
+
+In order to avoid it, always set the CSR0.DataEnd bit after detecting a zero-
+length request. Add the missing '\n' to the error message itself as well...
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_gadget_ep0.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/musb/musb_gadget_ep0.c
++++ b/drivers/usb/musb/musb_gadget_ep0.c
+@@ -664,7 +664,7 @@ irqreturn_t musb_g_ep0_irq(struct musb *
+ musb->ep0_state = MUSB_EP0_STAGE_STATUSIN;
+ break;
+ default:
+- ERR("SetupEnd came in a wrong ep0stage %s",
++ ERR("SetupEnd came in a wrong ep0stage %s\n",
+ decode_ep0stage(musb->ep0_state));
+ }
+ csr = musb_readw(regs, MUSB_CSR0);
+@@ -787,12 +787,18 @@ setup:
+ handled = service_zero_data_request(
+ musb, &setup);
+
++ /*
++ * We're expecting no data in any case, so
++ * always set the DATAEND bit -- doing this
++ * here helps avoid SetupEnd interrupt coming
++ * in the idle stage when we're stalling...
++ */
++ musb->ackpend |= MUSB_CSR0_P_DATAEND;
++
+ /* status stage might be immediate */
+- if (handled > 0) {
+- musb->ackpend |= MUSB_CSR0_P_DATAEND;
++ if (handled > 0)
+ musb->ep0_state =
+ MUSB_EP0_STAGE_STATUSIN;
+- }
+ break;
+
+ /* sequence #1 (IN to host), includes GET_STATUS
diff --git a/usb.current/usb-musb-maintainers-fix-my-tree-s-address.patch b/usb.current/usb-musb-maintainers-fix-my-tree-s-address.patch
new file mode 100644
index 00000000000000..122109445948ea
--- /dev/null
+++ b/usb.current/usb-musb-maintainers-fix-my-tree-s-address.patch
@@ -0,0 +1,29 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:13:06 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:45 +0200
+Subject: USB: musb: MAINTAINERS: Fix my tree's address
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-9-git-send-email-felipe.balbi@nokia.com>
+
+
+The tree is now on a new address.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ MAINTAINERS | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -3677,7 +3677,7 @@ F: include/linux/isicom.h
+ MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
+ M: Felipe Balbi <felipe.balbi@nokia.com>
+ L: linux-usb@vger.kernel.org
+-T: git git://gitorious.org/musb/mainline.git
++T: git git://gitorious.org/usb/usb.git
+ S: Maintained
+ F: drivers/usb/musb/
+
diff --git a/usb.current/usb-musb-move-musb_remove-to-__exit.patch b/usb.current/usb-musb-move-musb_remove-to-__exit.patch
new file mode 100644
index 00000000000000..dc0b952ec1e746
--- /dev/null
+++ b/usb.current/usb-musb-move-musb_remove-to-__exit.patch
@@ -0,0 +1,38 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:11:13 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:41 +0200
+Subject: USB: musb: move musb_remove to __exit
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-5-git-send-email-felipe.balbi@nokia.com>
+
+
+probe() already was on __init, so moving remove() to __exit.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2139,7 +2139,7 @@ static int __init musb_probe(struct plat
+ return musb_init_controller(dev, irq, base);
+ }
+
+-static int __devexit musb_remove(struct platform_device *pdev)
++static int __exit musb_remove(struct platform_device *pdev)
+ {
+ struct musb *musb = dev_to_musb(&pdev->dev);
+ void __iomem *ctrl_base = musb->ctrl_base;
+@@ -2231,7 +2231,7 @@ static struct platform_driver musb_drive
+ .owner = THIS_MODULE,
+ .pm = MUSB_DEV_PM_OPS,
+ },
+- .remove = __devexit_p(musb_remove),
++ .remove = __exit_p(musb_remove),
+ .shutdown = musb_shutdown,
+ };
+
diff --git a/usb.current/usb-musb-populate-the-vbus-gpio-with-the-correct-gpio-number.patch b/usb.current/usb-musb-populate-the-vbus-gpio-with-the-correct-gpio-number.patch
new file mode 100644
index 00000000000000..164cd7c319109e
--- /dev/null
+++ b/usb.current/usb-musb-populate-the-vbus-gpio-with-the-correct-gpio-number.patch
@@ -0,0 +1,35 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:15:24 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 13:29:57 +0200
+Subject: USB: musb: Populate the VBUS GPIO with the correct GPIO number
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Atal Shargorodsky <ext-atal.shargorodsky@nokia.com>, Yauheni Kaliuta <yauheni.kaliuta@nokia.com>, Swaminathan S <swami.iyer@ti.com>, David Brownell <dbrownell@users.sourceforge.net>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260876601-7598-9-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Swaminathan S <swami.iyer@ti.com>
+
+This fixes a null-pointer dereference bug.
+
+Signed-off-by: Swaminathan S <swami.iyer@ti.com>
+Cc: David Brownell <dbrownell@users.sourceforge.net>
+Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/davinci.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/davinci.c
++++ b/drivers/usb/musb/davinci.c
+@@ -42,7 +42,7 @@
+ #include "musb_core.h"
+
+ #ifdef CONFIG_MACH_DAVINCI_EVM
+-#define GPIO_nVBUS_DRV 144
++#define GPIO_nVBUS_DRV 160
+ #endif
+
+ #include "davinci.h"
diff --git a/usb.current/usb-musb-workaround-blackfin-fifo-anomalies.patch b/usb.current/usb-musb-workaround-blackfin-fifo-anomalies.patch
new file mode 100644
index 00000000000000..feb12995900b1f
--- /dev/null
+++ b/usb.current/usb-musb-workaround-blackfin-fifo-anomalies.patch
@@ -0,0 +1,213 @@
+From vapier@gentoo.org Tue Dec 22 14:22:24 2009
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Mon, 21 Dec 2009 09:49:52 -0500
+Subject: USB: musb: workaround Blackfin FIFO anomalies
+To: linux-usb@vger.kernel.org, Felipe Balbi <felipe.balbi@nokia.com>
+Cc: uclinux-dist-devel@blackfin.uclinux.org, Bryan Wu <cooloney@kernel.org>, Cliff Cai <cliff.cai@analog.com>
+Message-ID: <1261406993-7902-2-git-send-email-vapier@gentoo.org>
+
+
+From: Bryan Wu <cooloney@kernel.org>
+
+Some of these workarounds are already in place, but labeled as affecting
+all BF52x parts. Since we have official anomaly numbers now, use those
+defines. And since writing to the FIFO has a similar hang issue as reading
+from the FIFO, implement the workaround there too when necessary.
+
+Signed-off-by: Bryan Wu <cooloney@kernel.org>
+Signed-off-by: Cliff Cai <cliff.cai@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Cc: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/blackfin.c | 134 +++++++++++++++++++++++++++++---------------
+ drivers/usb/musb/blackfin.h | 2
+ 2 files changed, 91 insertions(+), 45 deletions(-)
+
+--- a/drivers/usb/musb/blackfin.c
++++ b/drivers/usb/musb/blackfin.c
+@@ -29,6 +29,8 @@ void musb_write_fifo(struct musb_hw_ep *
+ {
+ void __iomem *fifo = hw_ep->fifo;
+ void __iomem *epio = hw_ep->regs;
++ u8 epnum = hw_ep->epnum;
++ u16 dma_reg = 0;
+
+ prefetch((u8 *)src);
+
+@@ -39,67 +41,113 @@ void musb_write_fifo(struct musb_hw_ep *
+
+ dump_fifo_data(src, len);
+
+- if (unlikely((unsigned long)src & 0x01))
+- outsw_8((unsigned long)fifo, src,
+- len & 0x01 ? (len >> 1) + 1 : len >> 1);
+- else
+- outsw((unsigned long)fifo, src,
+- len & 0x01 ? (len >> 1) + 1 : len >> 1);
+-}
++ if (!ANOMALY_05000380 && epnum != 0) {
++ flush_dcache_range((unsigned int)src,
++ (unsigned int)(src + len));
++
++ /* Setup DMA address register */
++ dma_reg = (u16) ((u32) src & 0xFFFF);
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_ADDR_LOW), dma_reg);
++ SSYNC();
+
++ dma_reg = (u16) (((u32) src >> 16) & 0xFFFF);
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_ADDR_HIGH), dma_reg);
++ SSYNC();
++
++ /* Setup DMA count register */
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_COUNT_LOW), len);
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_COUNT_HIGH), 0);
++ SSYNC();
++
++ /* Enable the DMA */
++ dma_reg = (epnum << 4) | DMA_ENA | INT_ENA | DIRECTION;
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_CTRL), dma_reg);
++ SSYNC();
++
++ /* Wait for compelete */
++ while (!(bfin_read_USB_DMA_INTERRUPT() & (1 << epnum)))
++ cpu_relax();
++
++ /* acknowledge dma interrupt */
++ bfin_write_USB_DMA_INTERRUPT(1 << epnum);
++ SSYNC();
++
++ /* Reset DMA */
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_CTRL), 0);
++ SSYNC();
++ } else {
++ SSYNC();
++
++ if (unlikely((unsigned long)src & 0x01))
++ outsw_8((unsigned long)fifo, src,
++ len & 0x01 ? (len >> 1) + 1 : len >> 1);
++ else
++ outsw((unsigned long)fifo, src,
++ len & 0x01 ? (len >> 1) + 1 : len >> 1);
++
++ }
++}
+ /*
+ * Unload an endpoint's FIFO
+ */
+ void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst)
+ {
+ void __iomem *fifo = hw_ep->fifo;
+-
+-#ifdef CONFIG_BF52x
+ u8 epnum = hw_ep->epnum;
+ u16 dma_reg = 0;
+
+- invalidate_dcache_range((unsigned int)dst,
+- (unsigned int)(dst + len));
++ if (ANOMALY_05000467 && epnum != 0) {
+
+- /* Setup DMA address register */
+- dma_reg = (u16) ((u32) dst & 0xFFFF);
+- bfin_write16(USB_DMA_REG(epnum, USB_DMAx_ADDR_LOW), dma_reg);
+- SSYNC();
++ invalidate_dcache_range((unsigned int)dst,
++ (unsigned int)(dst + len));
+
+- dma_reg = (u16) (((u32) dst >> 16) & 0xFFFF);
+- bfin_write16(USB_DMA_REG(epnum, USB_DMAx_ADDR_HIGH), dma_reg);
+- SSYNC();
++ /* Setup DMA address register */
++ dma_reg = (u16) ((u32) dst & 0xFFFF);
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_ADDR_LOW), dma_reg);
++ SSYNC();
+
+- /* Setup DMA count register */
+- bfin_write16(USB_DMA_REG(epnum, USB_DMAx_COUNT_LOW), len);
+- bfin_write16(USB_DMA_REG(epnum, USB_DMAx_COUNT_HIGH), 0);
+- SSYNC();
++ dma_reg = (u16) (((u32) dst >> 16) & 0xFFFF);
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_ADDR_HIGH), dma_reg);
++ SSYNC();
+
+- /* Enable the DMA */
+- dma_reg = (epnum << 4) | DMA_ENA | INT_ENA;
+- bfin_write16(USB_DMA_REG(epnum, USB_DMAx_CTRL), dma_reg);
+- SSYNC();
++ /* Setup DMA count register */
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_COUNT_LOW), len);
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_COUNT_HIGH), 0);
++ SSYNC();
+
+- /* Wait for compelete */
+- while (!(bfin_read_USB_DMA_INTERRUPT() & (1 << epnum)))
+- cpu_relax();
++ /* Enable the DMA */
++ dma_reg = (epnum << 4) | DMA_ENA | INT_ENA;
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_CTRL), dma_reg);
++ SSYNC();
+
+- /* acknowledge dma interrupt */
+- bfin_write_USB_DMA_INTERRUPT(1 << epnum);
+- SSYNC();
++ /* Wait for compelete */
++ while (!(bfin_read_USB_DMA_INTERRUPT() & (1 << epnum)))
++ cpu_relax();
+
+- /* Reset DMA */
+- bfin_write16(USB_DMA_REG(epnum, USB_DMAx_CTRL), 0);
+- SSYNC();
+-#else
+- if (unlikely((unsigned long)dst & 0x01))
+- insw_8((unsigned long)fifo, dst,
+- len & 0x01 ? (len >> 1) + 1 : len >> 1);
+- else
+- insw((unsigned long)fifo, dst,
+- len & 0x01 ? (len >> 1) + 1 : len >> 1);
+-#endif
++ /* acknowledge dma interrupt */
++ bfin_write_USB_DMA_INTERRUPT(1 << epnum);
++ SSYNC();
+
++ /* Reset DMA */
++ bfin_write16(USB_DMA_REG(epnum, USB_DMAx_CTRL), 0);
++ SSYNC();
++ } else {
++ SSYNC();
++ /* Read the last byte of packet with odd size from address fifo + 4
++ * to trigger 1 byte access to EP0 FIFO.
++ */
++ if (len == 1)
++ *dst = (u8)inw((unsigned long)fifo + 4);
++ else {
++ if (unlikely((unsigned long)dst & 0x01))
++ insw_8((unsigned long)fifo, dst, len >> 1);
++ else
++ insw((unsigned long)fifo, dst, len >> 1);
++
++ if (len & 0x01)
++ *(dst + len - 1) = (u8)inw((unsigned long)fifo + 4);
++ }
++ }
+ DBG(4, "%cX ep%d fifo %p count %d buf %p\n",
+ 'R', hw_ep->epnum, fifo, len, dst);
+
+--- a/drivers/usb/musb/blackfin.h
++++ b/drivers/usb/musb/blackfin.h
+@@ -69,7 +69,6 @@ static void dump_fifo_data(u8 *buf, u16
+ #define dump_fifo_data(buf, len) do {} while (0)
+ #endif
+
+-#ifdef CONFIG_BF52x
+
+ #define USB_DMA_BASE USB_DMA_INTERRUPT
+ #define USB_DMAx_CTRL 0x04
+@@ -79,7 +78,6 @@ static void dump_fifo_data(u8 *buf, u16
+ #define USB_DMAx_COUNT_HIGH 0x14
+
+ #define USB_DMA_REG(ep, reg) (USB_DMA_BASE + 0x20 * ep + reg)
+-#endif
+
+ /* Almost 1 second */
+ #define TIMER_DELAY (1 * HZ)
diff --git a/usb.current/usb-musb_gadget-fix-kernel-oops-in-txstate.patch b/usb.current/usb-musb_gadget-fix-kernel-oops-in-txstate.patch
new file mode 100644
index 00000000000000..33f17d85ea7270
--- /dev/null
+++ b/usb.current/usb-musb_gadget-fix-kernel-oops-in-txstate.patch
@@ -0,0 +1,41 @@
+From sshtylyov@ru.mvista.com Tue Dec 22 14:07:39 2009
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Wed, 16 Dec 2009 20:38:31 +0300
+Subject: USB: musb_gadget: fix kernel oops in txstate()
+To: felipe.balbi@nokia.com, gregkh@suse.de
+Cc: linux-usb@vger.kernel.org, davinci-linux-open-source@linux.davincidsp.com, david-b@pacbell.net
+Message-ID: <200912162038.31532.sshtylyov@ru.mvista.com>
+Content-Disposition: inline
+
+
+Commit 7723de7e19b744144975a09c81777ec0f14ac5b3 (USB: musb_gadget: remove
+pointless loop) included uncalled for (and incorrect) optimization that
+might cause a kernel oops in txstate() -- undo it.
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/usb/musb/musb_gadget.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/musb/musb_gadget.c
++++ b/drivers/usb/musb/musb_gadget.c
+@@ -515,12 +515,12 @@ void musb_g_tx(struct musb *musb, u8 epn
+ if (csr & MUSB_TXCSR_FIFONOTEMPTY)
+ return;
+
+- if (!musb_ep->desc) {
++ request = musb_ep->desc ? next_request(musb_ep) : NULL;
++ if (!request) {
+ DBG(4, "%s idle now\n",
+ musb_ep->end_point.name);
+ return;
+- } else
+- request = next_request(musb_ep);
++ }
+ }
+
+ txstate(musb, to_musb_request(request));
diff --git a/usb/usb-otg-isp1301_omap-fix-compile-error.patch b/usb.current/usb-otg-isp1301_omap-fix-compile-error.patch
index 2a536072fc4d44..2a536072fc4d44 100644
--- a/usb/usb-otg-isp1301_omap-fix-compile-error.patch
+++ b/usb.current/usb-otg-isp1301_omap-fix-compile-error.patch
diff --git a/usb/usb-ftdi_sio-fix-error-message-on-close.patch b/usb/usb-ftdi_sio-fix-error-message-on-close.patch
index f6294ec6efd7f7..c1db6fe47cbe67 100644
--- a/usb/usb-ftdi_sio-fix-error-message-on-close.patch
+++ b/usb/usb-ftdi_sio-fix-error-message-on-close.patch
@@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1700,7 +1700,7 @@ static int ftdi_submit_read_urb(struct u
+@@ -1701,7 +1701,7 @@ static int ftdi_submit_read_urb(struct u
urb->transfer_buffer_length,
ftdi_read_bulk_callback, port);
result = usb_submit_urb(urb, mem_flags);
diff --git a/usb/usb-ftdi_sio-fix-initialisation-of-latency-timeout.patch b/usb/usb-ftdi_sio-fix-initialisation-of-latency-timeout.patch
index 459dfa199be012..39d27707ff2cb9 100644
--- a/usb/usb-ftdi_sio-fix-initialisation-of-latency-timeout.patch
+++ b/usb/usb-ftdi_sio-fix-initialisation-of-latency-timeout.patch
@@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1164,7 +1164,6 @@ static int read_latency_timer(struct usb
+@@ -1165,7 +1165,6 @@ static int read_latency_timer(struct usb
unsigned short latency = 0;
int rv = 0;
@@ -28,7 +28,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
dbg("%s", __func__);
rv = usb_control_msg(udev,
-@@ -1177,8 +1176,9 @@ static int read_latency_timer(struct usb
+@@ -1178,8 +1177,9 @@ static int read_latency_timer(struct usb
if (rv < 0) {
dev_err(&port->dev, "Unable to read latency timer: %i\n", rv);
return -EIO;
@@ -40,7 +40,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
}
static int get_serial_info(struct usb_serial_port *port,
-@@ -1564,7 +1564,8 @@ static int ftdi_sio_port_probe(struct us
+@@ -1565,7 +1565,8 @@ static int ftdi_sio_port_probe(struct us
ftdi_determine_type(port);
ftdi_set_max_packet_size(port);
diff --git a/usb/usb-ftdi_sio-remove-obsolete-comment.patch b/usb/usb-ftdi_sio-remove-obsolete-comment.patch
index faf996a6ac3d7d..8d0c45e2851a98 100644
--- a/usb/usb-ftdi_sio-remove-obsolete-comment.patch
+++ b/usb/usb-ftdi_sio-remove-obsolete-comment.patch
@@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1532,8 +1532,7 @@ static int ftdi_sio_port_probe(struct us
+@@ -1533,8 +1533,7 @@ static int ftdi_sio_port_probe(struct us
kref_init(&priv->kref);
spin_lock_init(&priv->tx_lock);
init_waitqueue_head(&priv->delta_msr_wait);
diff --git a/usb/usb-ftdi_sio-remove-support-for-5-and-6-data-bits.patch b/usb/usb-ftdi_sio-remove-support-for-5-and-6-data-bits.patch
index 425264ce2e39b5..f148371604ecdd 100644
--- a/usb/usb-ftdi_sio-remove-support-for-5-and-6-data-bits.patch
+++ b/usb/usb-ftdi_sio-remove-support-for-5-and-6-data-bits.patch
@@ -21,7 +21,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -2226,12 +2226,10 @@ static void ftdi_set_termios(struct tty_
+@@ -2227,12 +2227,10 @@ static void ftdi_set_termios(struct tty_
}
if (cflag & CSIZE) {
switch (cflag & CSIZE) {
diff --git a/usb/usb-musb-get-rid-of-musb-set_clock.patch b/usb/usb-musb-get-rid-of-musb-set_clock.patch
new file mode 100644
index 00000000000000..59037ca0628e76
--- /dev/null
+++ b/usb/usb-musb-get-rid-of-musb-set_clock.patch
@@ -0,0 +1,133 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:10:27 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:40 +0200
+Subject: USB: musb: get rid of musb->set_clock
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-4-git-send-email-felipe.balbi@nokia.com>
+
+
+... and use clk framework functions only.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 12 +++---------
+ drivers/usb/musb/musb_core.h | 2 --
+ drivers/usb/musb/omap2430.c | 10 ++--------
+ drivers/usb/musb/tusb6010.c | 16 ++++++----------
+ 4 files changed, 11 insertions(+), 29 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1915,7 +1915,6 @@ bad_config:
+ spin_lock_init(&musb->lock);
+ musb->board_mode = plat->mode;
+ musb->board_set_power = plat->set_power;
+- musb->set_clock = plat->set_clock;
+ musb->min_power = plat->min_power;
+
+ /* Clock usage is chip-specific ... functional clock (DaVinci,
+@@ -2167,11 +2166,9 @@ static int musb_suspend(struct device *d
+ */
+ }
+
+- if (musb->set_clock)
+- musb->set_clock(musb->clock, 0);
+- else
+- clk_disable(musb->clock);
++ clk_disable(musb->clock);
+ spin_unlock_irqrestore(&musb->lock, flags);
++
+ return 0;
+ }
+
+@@ -2183,10 +2180,7 @@ static int musb_resume_noirq(struct devi
+ if (!musb->clock)
+ return 0;
+
+- if (musb->set_clock)
+- musb->set_clock(musb->clock, 1);
+- else
+- clk_enable(musb->clock);
++ clk_enable(musb->clock);
+
+ /* for static cmos like DaVinci, register values were preserved
+ * unless for some reason the whole soc powered down or the USB
+--- a/drivers/usb/musb/musb_core.h
++++ b/drivers/usb/musb/musb_core.h
+@@ -394,8 +394,6 @@ struct musb {
+ u8 board_mode; /* enum musb_mode */
+ int (*board_set_power)(int state);
+
+- int (*set_clock)(struct clk *clk, int is_active);
+-
+ u8 min_power; /* vbus for periph, in mA/2 */
+
+ bool is_host;
+--- a/drivers/usb/musb/omap2430.c
++++ b/drivers/usb/musb/omap2430.c
+@@ -273,10 +273,7 @@ int musb_platform_suspend(struct musb *m
+
+ otg_set_suspend(musb->xceiv, 1);
+
+- if (musb->set_clock)
+- musb->set_clock(musb->clock, 0);
+- else
+- clk_disable(musb->clock);
++ clk_disable(musb->clock);
+
+ return 0;
+ }
+@@ -290,10 +287,7 @@ static int musb_platform_resume(struct m
+
+ otg_set_suspend(musb->xceiv, 0);
+
+- if (musb->set_clock)
+- musb->set_clock(musb->clock, 1);
+- else
+- clk_enable(musb->clock);
++ clk_enable(musb->clock);
+
+ l = omap_readl(OTG_SYSCONFIG);
+ l &= ~ENABLEWAKEUP; /* disable wakeup */
+--- a/drivers/usb/musb/tusb6010.c
++++ b/drivers/usb/musb/tusb6010.c
+@@ -279,12 +279,10 @@ static int tusb_draw_power(struct otg_tr
+ * Keep clock active when enabled. Note that this is not tied to
+ * drawing VBUS, as with OTG mA can be less than musb->min_power.
+ */
+- if (musb->set_clock) {
+- if (mA)
+- musb->set_clock(musb->clock, 1);
+- else
+- musb->set_clock(musb->clock, 0);
+- }
++ if (mA)
++ clk_enable(musb->clock);
++ else
++ clk_disable(musb->clock);
+
+ /* tps65030 seems to consume max 100mA, with maybe 60mA available
+ * (measured on one board) for things other than tps and tusb.
+@@ -531,8 +529,7 @@ static void tusb_source_power(struct mus
+ devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
+
+ if (is_on) {
+- if (musb->set_clock)
+- musb->set_clock(musb->clock, 1);
++ clk_enable(musb->clock);
+ timer = OTG_TIMER_MS(OTG_TIME_A_WAIT_VRISE);
+ musb->xceiv->default_a = 1;
+ musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;
+@@ -571,8 +568,7 @@ static void tusb_source_power(struct mus
+
+ devctl &= ~MUSB_DEVCTL_SESSION;
+ conf &= ~TUSB_DEV_CONF_USB_HOST_MODE;
+- if (musb->set_clock)
+- musb->set_clock(musb->clock, 0);
++ clk_disable(musb->clock);
+ }
+ prcm &= ~(TUSB_PRCM_MNGMT_15_SW_EN | TUSB_PRCM_MNGMT_33_SW_EN);
+
diff --git a/usb/usb-musb-move-to-sysfs_groups.patch b/usb/usb-musb-move-to-sysfs_groups.patch
new file mode 100644
index 00000000000000..fdb9f990709b32
--- /dev/null
+++ b/usb/usb-musb-move-to-sysfs_groups.patch
@@ -0,0 +1,82 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:09:22 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:38 +0200
+Subject: USB: musb: move to sysfs_groups
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-2-git-send-email-felipe.balbi@nokia.com>
+
+
+it's easier to keep up and add more sysfs entries
+as necessary.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 33 +++++++++++++++------------------
+ 1 file changed, 15 insertions(+), 18 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1759,6 +1759,19 @@ static DEVICE_ATTR(srp, 0644, NULL, musb
+
+ #endif /* CONFIG_USB_GADGET_MUSB_HDRC */
+
++static struct attribute *musb_attributes[] = {
++ &dev_attr_mode.attr,
++ &dev_attr_vbus.attr,
++#ifdef CONFIG_USB_GADGET_MUSB_HDRC
++ &dev_attr_srp.attr,
++#endif
++ NULL
++};
++
++static const struct attribute_group musb_attr_group = {
++ .attrs = musb_attributes,
++};
++
+ #endif /* sysfs */
+
+ /* Only used to provide driver mode change events */
+@@ -1833,11 +1846,7 @@ static void musb_free(struct musb *musb)
+ */
+
+ #ifdef CONFIG_SYSFS
+- device_remove_file(musb->controller, &dev_attr_mode);
+- device_remove_file(musb->controller, &dev_attr_vbus);
+-#ifdef CONFIG_USB_GADGET_MUSB_HDRC
+- device_remove_file(musb->controller, &dev_attr_srp);
+-#endif
++ sysfs_remove_group(&musb->controller->kobj, &musb_attr_group);
+ #endif
+
+ #ifdef CONFIG_USB_GADGET_MUSB_HDRC
+@@ -2079,12 +2088,7 @@ bad_config:
+ }
+
+ #ifdef CONFIG_SYSFS
+- status = device_create_file(dev, &dev_attr_mode);
+- status = device_create_file(dev, &dev_attr_vbus);
+-#ifdef CONFIG_USB_GADGET_MUSB_HDRC
+- status = device_create_file(dev, &dev_attr_srp);
+-#endif /* CONFIG_USB_GADGET_MUSB_HDRC */
+- status = 0;
++ status = sysfs_create_group(&musb->controller->kobj, &musb_attr_group);
+ #endif
+ if (status)
+ goto fail2;
+@@ -2092,13 +2096,6 @@ bad_config:
+ return 0;
+
+ fail2:
+-#ifdef CONFIG_SYSFS
+- device_remove_file(musb->controller, &dev_attr_mode);
+- device_remove_file(musb->controller, &dev_attr_vbus);
+-#ifdef CONFIG_USB_GADGET_MUSB_HDRC
+- device_remove_file(musb->controller, &dev_attr_srp);
+-#endif
+-#endif
+ musb_platform_exit(musb);
+ fail:
+ dev_err(musb->controller,
diff --git a/usb/usb-musb-move-two-printk-to-dev_err.patch b/usb/usb-musb-move-two-printk-to-dev_err.patch
new file mode 100644
index 00000000000000..b26aecaae3c235
--- /dev/null
+++ b/usb/usb-musb-move-two-printk-to-dev_err.patch
@@ -0,0 +1,38 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:12:04 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:43 +0200
+Subject: USB: musb: move two printk to dev_err
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-7-git-send-email-felipe.balbi@nokia.com>
+
+
+trivial cleanup, no functional changes.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1696,7 +1696,7 @@ musb_vbus_store(struct device *dev, stru
+ unsigned long val;
+
+ if (sscanf(buf, "%lu", &val) < 1) {
+- printk(KERN_ERR "Invalid VBUS timeout ms value\n");
++ dev_err(dev, "Invalid VBUS timeout ms value\n");
+ return -EINVAL;
+ }
+
+@@ -1746,7 +1746,7 @@ musb_srp_store(struct device *dev, struc
+
+ if (sscanf(buf, "%hu", &srp) != 1
+ || (srp != 1)) {
+- printk(KERN_ERR "SRP: Value must be 1\n");
++ dev_err(dev, "SRP: Value must be 1\n");
+ return -EINVAL;
+ }
+
diff --git a/usb/usb-musb-remove-some-of-the-never-defined-defines.patch b/usb/usb-musb-remove-some-of-the-never-defined-defines.patch
new file mode 100644
index 00000000000000..4f22ad1f549fc8
--- /dev/null
+++ b/usb/usb-musb-remove-some-of-the-never-defined-defines.patch
@@ -0,0 +1,100 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:09:45 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:39 +0200
+Subject: USB: musb: remove some of the never defined defines
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-3-git-send-email-felipe.balbi@nokia.com>
+
+
+just makes the musb init code a bit cleaner.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 24 ------------------------
+ drivers/usb/musb/musb_core.h | 16 ++++------------
+ 2 files changed, 4 insertions(+), 36 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1314,9 +1314,6 @@ enum { MUSB_CONTROLLER_MHDRC, MUSB_CONTR
+ */
+ static int __init musb_core_init(u16 musb_type, struct musb *musb)
+ {
+-#ifdef MUSB_AHB_ID
+- u32 data;
+-#endif
+ u8 reg;
+ char *type;
+ char aInfo[90], aRevision[32], aDate[12];
+@@ -1332,19 +1329,11 @@ static int __init musb_core_init(u16 mus
+ strcat(aInfo, ", dyn FIFOs");
+ if (reg & MUSB_CONFIGDATA_MPRXE) {
+ strcat(aInfo, ", bulk combine");
+-#ifdef C_MP_RX
+ musb->bulk_combine = true;
+-#else
+- strcat(aInfo, " (X)"); /* no driver support */
+-#endif
+ }
+ if (reg & MUSB_CONFIGDATA_MPTXE) {
+ strcat(aInfo, ", bulk split");
+-#ifdef C_MP_TX
+ musb->bulk_split = true;
+-#else
+- strcat(aInfo, " (X)"); /* no driver support */
+-#endif
+ }
+ if (reg & MUSB_CONFIGDATA_HBRXE) {
+ strcat(aInfo, ", HB-ISO Rx");
+@@ -1360,20 +1349,7 @@ static int __init musb_core_init(u16 mus
+ printk(KERN_DEBUG "%s: ConfigData=0x%02x (%s)\n",
+ musb_driver_name, reg, aInfo);
+
+-#ifdef MUSB_AHB_ID
+- data = musb_readl(mbase, 0x404);
+- sprintf(aDate, "%04d-%02x-%02x", (data & 0xffff),
+- (data >> 16) & 0xff, (data >> 24) & 0xff);
+- /* FIXME ID2 and ID3 are unused */
+- data = musb_readl(mbase, 0x408);
+- printk(KERN_DEBUG "ID2=%lx\n", (long unsigned)data);
+- data = musb_readl(mbase, 0x40c);
+- printk(KERN_DEBUG "ID3=%lx\n", (long unsigned)data);
+- reg = musb_readb(mbase, 0x400);
+- musb_type = ('M' == reg) ? MUSB_CONTROLLER_MHDRC : MUSB_CONTROLLER_HDRC;
+-#else
+ aDate[0] = 0;
+-#endif
+ if (MUSB_CONTROLLER_MHDRC == musb_type) {
+ musb->is_multipoint = 1;
+ type = "M";
+--- a/drivers/usb/musb/musb_core.h
++++ b/drivers/usb/musb/musb_core.h
+@@ -412,21 +412,13 @@ struct musb {
+ unsigned hb_iso_rx:1; /* high bandwidth iso rx? */
+ unsigned hb_iso_tx:1; /* high bandwidth iso tx? */
+
+-#ifdef C_MP_TX
+- unsigned bulk_split:1;
++ unsigned bulk_split:1;
+ #define can_bulk_split(musb,type) \
+- (((type) == USB_ENDPOINT_XFER_BULK) && (musb)->bulk_split)
+-#else
+-#define can_bulk_split(musb, type) 0
+-#endif
++ (((type) == USB_ENDPOINT_XFER_BULK) && (musb)->bulk_split)
+
+-#ifdef C_MP_RX
+- unsigned bulk_combine:1;
++ unsigned bulk_combine:1;
+ #define can_bulk_combine(musb,type) \
+- (((type) == USB_ENDPOINT_XFER_BULK) && (musb)->bulk_combine)
+-#else
+-#define can_bulk_combine(musb, type) 0
+-#endif
++ (((type) == USB_ENDPOINT_XFER_BULK) && (musb)->bulk_combine)
+
+ #ifdef CONFIG_USB_GADGET_MUSB_HDRC
+ /* is_suspended means USB B_PERIPHERAL suspend */
diff --git a/usb/usb-musb-use-resource_size.patch b/usb/usb-musb-use-resource_size.patch
new file mode 100644
index 00000000000000..8289a0a46b494c
--- /dev/null
+++ b/usb/usb-musb-use-resource_size.patch
@@ -0,0 +1,29 @@
+From felipe.balbi@nokia.com Tue Dec 22 14:11:34 2009
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Tue, 15 Dec 2009 11:08:42 +0200
+Subject: USB: musb: use resource_size()
+To: Greg Kroah-Hartman <gregkh@suse.de>
+Cc: David Brownell <david-b@pacbell.net>, Anand Gadiyar <gadiyar@ti.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Arnaud Mandy <ext-arnaud.2.mandy@nokia.com>, Heikki Krogerus <ext-heikki.krogerus@nokia.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1260868125-4774-6-git-send-email-felipe.balbi@nokia.com>
+
+
+it makes ioremap() usage looks cleaner.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2134,7 +2134,7 @@ static int __init musb_probe(struct plat
+ if (!iomem || irq == 0)
+ return -ENODEV;
+
+- base = ioremap(iomem->start, iomem->end - iomem->start + 1);
++ base = ioremap(iomem->start, resource_size(iomem));
+ if (!base) {
+ dev_err(dev, "ioremap failed\n");
+ return -ENOMEM;