From: Greg Kroah-Hartman Date: Thu, 11 Mar 2010 19:29:41 +0000 (-0800) Subject: .32 patches X-Git-Tag: v2.6.32.10~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7ee497ab1978cd8e2ecab8c72f1de9533d96648b;p=thirdparty%2Fkernel%2Fstable-queue.git .32 patches --- diff --git a/queue-2.6.32/ocfs2-only-bug-out-in-direct-io-write-for-reflinked-extent.patch b/queue-2.6.32/ocfs2-only-bug-out-in-direct-io-write-for-reflinked-extent.patch new file mode 100644 index 00000000000..4918e0b5c5e --- /dev/null +++ b/queue-2.6.32/ocfs2-only-bug-out-in-direct-io-write-for-reflinked-extent.patch @@ -0,0 +1,36 @@ +From cbaee472f274ea9a98aabe47025f6e5551acadcb Mon Sep 17 00:00:00 2001 +From: Tao Ma +Date: Fri, 26 Feb 2010 10:54:52 +0800 +Subject: ocfs2: Only bug out in direct io write for reflinked extent. + +From: Tao Ma + +commit cbaee472f274ea9a98aabe47025f6e5551acadcb upstream. + +In ocfs2_direct_IO_get_blocks, we only need to bug out +in case of we are going to write a recounted extent rec. + +What a silly bug introduced by me! + +Signed-off-by: Tao Ma +Signed-off-by: Joel Becker +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ocfs2/aops.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/fs/ocfs2/aops.c ++++ b/fs/ocfs2/aops.c +@@ -591,8 +591,9 @@ static int ocfs2_direct_IO_get_blocks(st + goto bail; + } + +- /* We should already CoW the refcounted extent. */ +- BUG_ON(ext_flags & OCFS2_EXT_REFCOUNTED); ++ /* We should already CoW the refcounted extent in case of create. */ ++ BUG_ON(create && (ext_flags & OCFS2_EXT_REFCOUNTED)); ++ + /* + * get_more_blocks() expects us to describe a hole by clearing + * the mapped bit on bh_result(). diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 051b536cf0c..ee302ef7b93 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -103,6 +103,24 @@ b43-b43legacy-wake-queues-in-wireless_core_start.patch netfilter-xt_recent-fix-buffer-overflow.patch netfilter-xt_recent-fix-false-match.patch sunxvr500-additional-pci-id-for-sunxvr500-driver.patch +thinkpad-acpi-fix-poll-thread-auto-start.patch +thinkpad-acpi-r52-brightness_mode-has-been-confirmed.patch +thinkpad-acpi-document-hkey-event-3006.patch +thinkpad-acpi-make-driver-events-work-in-nvram-poll-mode.patch +thinkpad-acpi-fix-bluetooth-wwan-resume.patch +ocfs2-only-bug-out-in-direct-io-write-for-reflinked-extent.patch +x86-ia32_aout-do-not-kill-argument-mapping.patch +x86-add-imac9-1-to-pci_reboot_dmi_table.patch +x86-xen-disable-highmem-pte-allocation-even-when-config_highpte-y.patch +x86-avoid-race-condition-in-pci_enable_msix.patch +x86-fix-sci-on-ioapic-0.patch +usb-xhci-fix-finding-extended-capabilities-registers.patch +usb-fix-the-idproduct-value-for-usb-3.0-root-hubs.patch +usb-fix-crash-in-uhci_scan_schedule.patch +usb-remove-debugging-message-for-uevent-constructions.patch +usb-move-hcd-free_dev-call-into-usb_disconnect-to-fix-oops.patch +usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch +usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch sched-fix-sched_mv_power_savings-for-smt.patch sched-fix-smt-scheduler-regression-in-find_busiest_queue.patch sched-don-t-use-possibly-stale-sched_class.patch diff --git a/queue-2.6.32/thinkpad-acpi-document-hkey-event-3006.patch b/queue-2.6.32/thinkpad-acpi-document-hkey-event-3006.patch new file mode 100644 index 00000000000..35fcfac60c7 --- /dev/null +++ b/queue-2.6.32/thinkpad-acpi-document-hkey-event-3006.patch @@ -0,0 +1,56 @@ +From bf8b29c8f7f8269e99eca8b19048ed5b34b51810 Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Thu, 25 Feb 2010 21:28:56 -0300 +Subject: thinkpad-acpi: document HKEY event 3006 + +From: Henrique de Moraes Holschuh + +commit bf8b29c8f7f8269e99eca8b19048ed5b34b51810 upstream. + +Event 0x3006 is used to help power management of the ODD in the +UltraBay. The EC generates this event when the ODD eject button is +pressed (even if the bay is powered down). + +Normally, Linux doesn't need this as we keep the SATA link powered +up (which wastes power). The EC powers up the bay by itself when the +ODD eject button is pressed, and the SATA PHY reports the hotplug. + +However, we could also power that SATA link down (and for that matter, +also power down the Ultrabay) if the ODD is left idle for a while with +no disk inside, and use event 0x3006 to know when we need that SATA link +powered back up. + +For now, just stop asking for more information when event 0x3006 is +seen, there is no point in pestering users about it anymore. + +Signed-off-by: Henrique de Moraes Holschuh +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -3630,13 +3630,19 @@ static void hotkey_notify(struct ibm_str + break; + case 3: + /* 0x3000-0x3FFF: bay-related wakeups */ +- if (hkey == TP_HKEY_EV_BAYEJ_ACK) { ++ switch (hkey) { ++ case TP_HKEY_EV_BAYEJ_ACK: + hotkey_autosleep_ack = 1; + printk(TPACPI_INFO + "bay ejected\n"); + hotkey_wakeup_hotunplug_complete_notify_change(); + known_ev = true; +- } else { ++ break; ++ case TP_HKEY_EV_OPTDRV_EJ: ++ /* FIXME: kick libata if SATA link offline */ ++ known_ev = true; ++ break; ++ default: + known_ev = false; + } + break; diff --git a/queue-2.6.32/thinkpad-acpi-fix-bluetooth-wwan-resume.patch b/queue-2.6.32/thinkpad-acpi-fix-bluetooth-wwan-resume.patch new file mode 100644 index 00000000000..fb1caec1fab --- /dev/null +++ b/queue-2.6.32/thinkpad-acpi-fix-bluetooth-wwan-resume.patch @@ -0,0 +1,83 @@ +From 08fedfc903c78e380b0baa7b57c52d367794d0a5 Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Thu, 25 Feb 2010 22:22:07 -0300 +Subject: thinkpad-acpi: fix bluetooth/wwan resume + +From: Henrique de Moraes Holschuh + +commit 08fedfc903c78e380b0baa7b57c52d367794d0a5 upstream. + +Studying the DSDTs of various thinkpads, it looks like bit 3 of the +argument to SBDC and SWAN is not "set radio to last state on resume". +Rather, it seems to be "if this bit is set, enable radio on resume, +otherwise disable it on resume". + +So, the proper way to prepare the radios for S3 suspend is: disable +radio and clear bit 3 on the SBDC/SWAN call to to resume with radio +disabled, and enable radio and set bit 3 on the SBDC/SWAN call to +resume with the radio enabled. + +Also, for persistent devices, the rfkill core does not restore state, +so we really need to get the firmware to do the right thing. + +We don't sync the radio state on suspend, instead we trust the BIOS to +not do anything weird if we never touched the radio state since boot. +Time will tell if that's a wise way of doing things... + +Signed-off-by: Henrique de Moraes Holschuh +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -3860,7 +3860,7 @@ enum { + TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */ + TP_ACPI_BLUETOOTH_RADIOSSW = 0x02, /* Bluetooth radio enabled */ + TP_ACPI_BLUETOOTH_RESUMECTRL = 0x04, /* Bluetooth state at resume: +- off / last state */ ++ 0 = disable, 1 = enable */ + }; + + enum { +@@ -3906,10 +3906,11 @@ static int bluetooth_set_status(enum tpa + } + #endif + +- /* We make sure to keep TP_ACPI_BLUETOOTH_RESUMECTRL off */ +- status = TP_ACPI_BLUETOOTH_RESUMECTRL; + if (state == TPACPI_RFK_RADIO_ON) +- status |= TP_ACPI_BLUETOOTH_RADIOSSW; ++ status = TP_ACPI_BLUETOOTH_RADIOSSW ++ | TP_ACPI_BLUETOOTH_RESUMECTRL; ++ else ++ status = 0; + + if (!acpi_evalf(hkey_handle, NULL, "SBDC", "vd", status)) + return -EIO; +@@ -4060,7 +4061,7 @@ enum { + TP_ACPI_WANCARD_HWPRESENT = 0x01, /* Wan hw available */ + TP_ACPI_WANCARD_RADIOSSW = 0x02, /* Wan radio enabled */ + TP_ACPI_WANCARD_RESUMECTRL = 0x04, /* Wan state at resume: +- off / last state */ ++ 0 = disable, 1 = enable */ + }; + + #define TPACPI_RFK_WWAN_SW_NAME "tpacpi_wwan_sw" +@@ -4097,10 +4098,11 @@ static int wan_set_status(enum tpacpi_rf + } + #endif + +- /* We make sure to set TP_ACPI_WANCARD_RESUMECTRL */ +- status = TP_ACPI_WANCARD_RESUMECTRL; + if (state == TPACPI_RFK_RADIO_ON) +- status |= TP_ACPI_WANCARD_RADIOSSW; ++ status = TP_ACPI_WANCARD_RADIOSSW ++ | TP_ACPI_WANCARD_RESUMECTRL; ++ else ++ status = 0; + + if (!acpi_evalf(hkey_handle, NULL, "SWAN", "vd", status)) + return -EIO; diff --git a/queue-2.6.32/thinkpad-acpi-fix-poll-thread-auto-start.patch b/queue-2.6.32/thinkpad-acpi-fix-poll-thread-auto-start.patch new file mode 100644 index 00000000000..e5244c0b280 --- /dev/null +++ b/queue-2.6.32/thinkpad-acpi-fix-poll-thread-auto-start.patch @@ -0,0 +1,71 @@ +From b589ea4c44170d3f7a845684e2d1b3b9571663af Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Thu, 25 Feb 2010 21:28:58 -0300 +Subject: thinkpad-acpi: fix poll thread auto-start + +From: Henrique de Moraes Holschuh + +commit b589ea4c44170d3f7a845684e2d1b3b9571663af upstream. + +The driver was not starting the NVRAM polling thread if the input +device was bound immediately after registration. + +This fixes: +http://bugzilla.kernel.org/show_bug.cgi?id=15118 + +Reported-by: Florian Zumbiehl +Signed-off-by: Henrique de Moraes Holschuh +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -2597,16 +2597,11 @@ static int hotkey_inputdev_open(struct i + { + switch (tpacpi_lifecycle) { + case TPACPI_LIFE_INIT: +- /* +- * hotkey_init will call hotkey_poll_setup_safe +- * at the appropriate moment +- */ +- return 0; +- case TPACPI_LIFE_EXITING: +- return -EBUSY; + case TPACPI_LIFE_RUNNING: + hotkey_poll_setup_safe(false); + return 0; ++ case TPACPI_LIFE_EXITING: ++ return -EBUSY; + } + + /* Should only happen if tpacpi_lifecycle is corrupt */ +@@ -2617,7 +2612,7 @@ static int hotkey_inputdev_open(struct i + static void hotkey_inputdev_close(struct input_dev *dev) + { + /* disable hotkey polling when possible */ +- if (tpacpi_lifecycle == TPACPI_LIFE_RUNNING && ++ if (tpacpi_lifecycle != TPACPI_LIFE_EXITING && + !(hotkey_source_mask & hotkey_driver_mask)) + hotkey_poll_setup_safe(false); + } +@@ -8362,6 +8357,9 @@ static int __init thinkpad_acpi_module_i + return ret; + } + } ++ ++ tpacpi_lifecycle = TPACPI_LIFE_RUNNING; ++ + ret = input_register_device(tpacpi_inputdev); + if (ret < 0) { + printk(TPACPI_ERR "unable to register input device\n"); +@@ -8371,7 +8369,6 @@ static int __init thinkpad_acpi_module_i + tp_features.input_device_registered = 1; + } + +- tpacpi_lifecycle = TPACPI_LIFE_RUNNING; + return 0; + } + diff --git a/queue-2.6.32/thinkpad-acpi-make-driver-events-work-in-nvram-poll-mode.patch b/queue-2.6.32/thinkpad-acpi-make-driver-events-work-in-nvram-poll-mode.patch new file mode 100644 index 00000000000..1bb6a4e1c23 --- /dev/null +++ b/queue-2.6.32/thinkpad-acpi-make-driver-events-work-in-nvram-poll-mode.patch @@ -0,0 +1,81 @@ +From 7f0cf712a74fcc3ad21f0bde95bd32c2f2cc3888 Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Thu, 25 Feb 2010 21:29:00 -0300 +Subject: thinkpad-acpi: make driver events work in NVRAM poll mode + +From: Henrique de Moraes Holschuh + +commit 7f0cf712a74fcc3ad21f0bde95bd32c2f2cc3888 upstream. + +Thadeu Lima de Souza Cascardo reports this: + +Brightness notification does not work until the user writes to +hotkey_mask attribute. That's because the polling thread will only run +if hotkey_user_mask is set and someone is reading the input device or +if hotkey_driver_mask is set. In this second case, this condition is +not tested after the mask is changed, because the brightness and +volume drivers are started after the hotkey drivers. + +Fix tpacpi_hotkey_driver_mask_set() to call hotkey_poll_setup(), so +that the poller kthread will be started when needed. + +Reported-by: Thadeu Lima de Souza Cascardo +Tested-by: Thadeu Lima de Souza Cascardo +Signed-off-by: Henrique de Moraes Holschuh +Cc: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -2073,6 +2073,7 @@ static struct attribute_set *hotkey_dev_ + + static void tpacpi_driver_event(const unsigned int hkey_event); + static void hotkey_driver_event(const unsigned int scancode); ++static void hotkey_poll_setup(const bool may_warn); + + /* HKEY.MHKG() return bits */ + #define TP_HOTKEY_TABLET_MASK (1 << 3) +@@ -2254,6 +2255,8 @@ static int tpacpi_hotkey_driver_mask_set + + rc = hotkey_mask_set((hotkey_acpi_mask | hotkey_driver_mask) & + ~hotkey_source_mask); ++ hotkey_poll_setup(true); ++ + mutex_unlock(&hotkey_mutex); + + return rc; +@@ -2538,7 +2541,7 @@ static void hotkey_poll_stop_sync(void) + } + + /* call with hotkey_mutex held */ +-static void hotkey_poll_setup(bool may_warn) ++static void hotkey_poll_setup(const bool may_warn) + { + const u32 poll_driver_mask = hotkey_driver_mask & hotkey_source_mask; + const u32 poll_user_mask = hotkey_user_mask & hotkey_source_mask; +@@ -2569,7 +2572,7 @@ static void hotkey_poll_setup(bool may_w + } + } + +-static void hotkey_poll_setup_safe(bool may_warn) ++static void hotkey_poll_setup_safe(const bool may_warn) + { + mutex_lock(&hotkey_mutex); + hotkey_poll_setup(may_warn); +@@ -2587,7 +2590,11 @@ static void hotkey_poll_set_freq(unsigne + + #else /* CONFIG_THINKPAD_ACPI_HOTKEY_POLL */ + +-static void hotkey_poll_setup_safe(bool __unused) ++static void hotkey_poll_setup(const bool __unused) ++{ ++} ++ ++static void hotkey_poll_setup_safe(const bool __unused) + { + } + diff --git a/queue-2.6.32/thinkpad-acpi-r52-brightness_mode-has-been-confirmed.patch b/queue-2.6.32/thinkpad-acpi-r52-brightness_mode-has-been-confirmed.patch new file mode 100644 index 00000000000..baeb553a4a0 --- /dev/null +++ b/queue-2.6.32/thinkpad-acpi-r52-brightness_mode-has-been-confirmed.patch @@ -0,0 +1,41 @@ +From 7d1894d8d1c411d2dad95abfe0f65bacf68c4afa Mon Sep 17 00:00:00 2001 +From: Henrique de Moraes Holschuh +Date: Thu, 25 Feb 2010 21:28:56 -0300 +Subject: thinkpad-acpi: R52 brightness_mode has been confirmed + +From: Henrique de Moraes Holschuh + +commit 7d1894d8d1c411d2dad95abfe0f65bacf68c4afa upstream. + +We can stop pestering users for confirmation of the brightness_mode +default for firmware TP-76. + +While at it, add a few missing comments in that quirk table. + +Reported-by: Whoopie +Signed-off-by: Henrique de Moraes Holschuh +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/thinkpad_acpi.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -6089,13 +6089,13 @@ static const struct tpacpi_quirk brightn + TPACPI_Q_IBM('1', 'Y', TPACPI_BRGHT_Q_EC), /* T43/p ATI */ + + /* Models with ATI GPUs that can use ECNVRAM */ +- TPACPI_Q_IBM('1', 'R', TPACPI_BRGHT_Q_EC), ++ TPACPI_Q_IBM('1', 'R', TPACPI_BRGHT_Q_EC), /* R50,51 T40-42 */ + TPACPI_Q_IBM('1', 'Q', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), +- TPACPI_Q_IBM('7', '6', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), ++ TPACPI_Q_IBM('7', '6', TPACPI_BRGHT_Q_EC), /* R52 */ + TPACPI_Q_IBM('7', '8', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), + + /* Models with Intel Extreme Graphics 2 */ +- TPACPI_Q_IBM('1', 'U', TPACPI_BRGHT_Q_NOEC), ++ TPACPI_Q_IBM('1', 'U', TPACPI_BRGHT_Q_NOEC), /* X40 */ + TPACPI_Q_IBM('1', 'V', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), + TPACPI_Q_IBM('1', 'W', TPACPI_BRGHT_Q_ASK|TPACPI_BRGHT_Q_EC), + diff --git a/queue-2.6.32/usb-fix-crash-in-uhci_scan_schedule.patch b/queue-2.6.32/usb-fix-crash-in-uhci_scan_schedule.patch new file mode 100644 index 00000000000..d3155431a8a --- /dev/null +++ b/queue-2.6.32/usb-fix-crash-in-uhci_scan_schedule.patch @@ -0,0 +1,59 @@ +From d23356da714595b888686d22cd19061323c09190 Mon Sep 17 00:00:00 2001 +From: Pete Zaitcev +Date: Fri, 8 Jan 2010 15:39:22 -0700 +Subject: USB: fix crash in uhci_scan_schedule + +From: Pete Zaitcev + +commit d23356da714595b888686d22cd19061323c09190 upstream. + +When hardware is removed on a Stratus, the system may crash like this: + +ACPI: PCI interrupt for device 0000:7c:00.1 disabled +Trying to free nonexistent resource <00000000a8000000-00000000afffffff> +Trying to free nonexistent resource <00000000a4800000-00000000a480ffff> +uhci_hcd 0000:7e:1d.0: remove, state 1 +usb usb2: USB disconnect, address 1 +usb 2-1: USB disconnect, address 2 +Unable to handle kernel paging request at 0000000000100100 RIP: + [] :uhci_hcd:uhci_scan_schedule+0xa2/0x89c + + #4 [ffff81011de17e50] uhci_scan_schedule at ffffffff88021918 + #5 [ffff81011de17ed0] uhci_irq at ffffffff88023cb8 + #6 [ffff81011de17f10] usb_hcd_irq at ffffffff801f1c1f + #7 [ffff81011de17f20] handle_IRQ_event at ffffffff8001123b + #8 [ffff81011de17f50] __do_IRQ at ffffffff800ba749 + +This occurs because an interrupt scans uhci->skelqh, which is +being freed. We do the right thing: disable the interrupts in the +device, and do not do any processing if the interrupt is shared +with other source, but it's possible that another CPU gets +delayed somewhere (e.g. loops) until we started freeing. + +The agreed-upon solution is to wait for interrupts to play out +before proceeding. No other bareers are neceesary. + +A backport of this patch was tested on a 2.6.18 based kernel. +Testing of 2.6.32-based kernels is under way, but it takes us +forever (months) to turn this around. So I think it's a good +patch and we should keep it. + +Tracked in RH bz#516851 + +Signed-Off-By: Pete Zaitcev +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/uhci-hcd.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/host/uhci-hcd.c ++++ b/drivers/usb/host/uhci-hcd.c +@@ -735,6 +735,7 @@ static void uhci_stop(struct usb_hcd *hc + uhci_hc_died(uhci); + uhci_scan_schedule(uhci); + spin_unlock_irq(&uhci->lock); ++ synchronize_irq(hcd->irq); + + del_timer_sync(&uhci->fsbr_timer); + release_uhci(uhci); diff --git a/queue-2.6.32/usb-fix-the-idproduct-value-for-usb-3.0-root-hubs.patch b/queue-2.6.32/usb-fix-the-idproduct-value-for-usb-3.0-root-hubs.patch new file mode 100644 index 00000000000..eda108c44d9 --- /dev/null +++ b/queue-2.6.32/usb-fix-the-idproduct-value-for-usb-3.0-root-hubs.patch @@ -0,0 +1,31 @@ +From cd780694920fbf869b23c8afb0bd083e7b0448c7 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 25 Feb 2010 13:19:37 -0500 +Subject: USB: fix the idProduct value for USB-3.0 root hubs + +From: Alan Stern + +commit cd780694920fbf869b23c8afb0bd083e7b0448c7 upstream. + +This patch (as1346) changes the idProduct value for USB-3.0 root hubs +from 0x0002 (which we already use for USB-2.0 root hubs) to 0x0003. + +Signed-off-by: Alan Stern +Acked-by: Sarah Sharp +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/hcd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -140,7 +140,7 @@ static const u8 usb3_rh_dev_descriptor[1 + 0x09, /* __u8 bMaxPacketSize0; 2^9 = 512 Bytes */ + + 0x6b, 0x1d, /* __le16 idVendor; Linux Foundation */ +- 0x02, 0x00, /* __le16 idProduct; device 0x0002 */ ++ 0x03, 0x00, /* __le16 idProduct; device 0x0003 */ + KERNEL_VER, KERNEL_REL, /* __le16 bcdDevice */ + + 0x03, /* __u8 iManufacturer; */ diff --git a/queue-2.6.32/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch b/queue-2.6.32/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch new file mode 100644 index 00000000000..39815413e20 --- /dev/null +++ b/queue-2.6.32/usb-ftdi_sio-isolate-all-device-ids-to-new-ftdi_sio_ids.h-header.patch @@ -0,0 +1,1986 @@ +From 31844d55800e1b93fe75c4d6188a4a44db2e1bbe Mon Sep 17 00:00:00 2001 +From: Andreas Mohr +Date: Wed, 16 Dec 2009 21:45:10 +0100 +Subject: USB: ftdi_sio: isolate all device IDs to new ftdi_sio_ids.h header + +From: Andreas Mohr + +commit 31844d55800e1b93fe75c4d6188a4a44db2e1bbe upstream. + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 + #include + #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 +- * (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) +- * and Mike Studer (K6EEP) . +- * Ian Abbott 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 +- */ +-#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 ++ * (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) ++ * and Mike Studer (K6EEP) . ++ * Ian Abbott 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 ++ */ ++#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/queue-2.6.32/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch b/queue-2.6.32/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch new file mode 100644 index 00000000000..50dbe6b3ef5 --- /dev/null +++ b/queue-2.6.32/usb-ftdi_sio-sort-pid-vid-entries-in-new-ftdi_sio_ids.h-header.patch @@ -0,0 +1,1718 @@ +From 4e092d110fe931db3878865db185be1c9df3e182 Mon Sep 17 00:00:00 2001 +From: Andreas Mohr +Date: Thu, 17 Dec 2009 11:56:09 +0100 +Subject: USB: ftdi_sio: sort PID/VID entries in new ftdi_sio_ids.h header + +From: Andreas Mohr + +commit 4e092d110fe931db3878865db185be1c9df3e182 upstream. + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 ++ * (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 +- * (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) ++ * and Mike Studer (K6EEP) . ++ * Ian Abbott 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) +- * and Mike Studer (K6EEP) . +- * Ian Abbott 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 + */ +-#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 +- */ +-#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/queue-2.6.32/usb-move-hcd-free_dev-call-into-usb_disconnect-to-fix-oops.patch b/queue-2.6.32/usb-move-hcd-free_dev-call-into-usb_disconnect-to-fix-oops.patch new file mode 100644 index 00000000000..03176f50223 --- /dev/null +++ b/queue-2.6.32/usb-move-hcd-free_dev-call-into-usb_disconnect-to-fix-oops.patch @@ -0,0 +1,94 @@ +From f7410ced7f931bb1ad79d1336412cf7b7a33cb14 Mon Sep 17 00:00:00 2001 +From: Herbert Xu +Date: Sun, 10 Jan 2010 20:15:03 +1100 +Subject: USB: Move hcd free_dev call into usb_disconnect to fix oops + +From: Herbert Xu + +commit f7410ced7f931bb1ad79d1336412cf7b7a33cb14 upstream. + +USB: Move hcd free_dev call into usb_disconnect + +I found a way to oops the kernel: + +1. Open a USB device through devio. +2. Remove the hcd module in the host kernel. +3. Close the devio file descriptor. + +The problem is that closing the file descriptor does usb_release_dev +as it is the last reference. usb_release_dev then tries to invoke +the hcd free_dev function (or rather dereferencing the hcd driver +struct). This causes an oops as the hcd driver has already been +unloaded so the struct is gone. + +This patch tries to fix this by bringing the free_dev call earlier +and into usb_disconnect. I have verified that repeating the +above steps no longer crashes with this patch applied. + +Signed-off-by: Herbert Xu +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/hcd.h | 2 +- + drivers/usb/core/hub.c | 12 ++++++++++++ + drivers/usb/core/usb.c | 3 --- + 3 files changed, 13 insertions(+), 4 deletions(-) + +--- a/drivers/usb/core/hcd.h ++++ b/drivers/usb/core/hcd.h +@@ -234,7 +234,7 @@ struct hc_driver { + /* xHCI specific functions */ + /* Called by usb_alloc_dev to alloc HC device structures */ + int (*alloc_dev)(struct usb_hcd *, struct usb_device *); +- /* Called by usb_release_dev to free HC device structures */ ++ /* Called by usb_disconnect to free HC device structures */ + void (*free_dev)(struct usb_hcd *, struct usb_device *); + + /* Bandwidth computation functions */ +--- a/drivers/usb/core/hub.c ++++ b/drivers/usb/core/hub.c +@@ -1508,6 +1508,15 @@ static inline void usb_stop_pm(struct us + + #endif + ++static void hub_free_dev(struct usb_device *udev) ++{ ++ struct usb_hcd *hcd = bus_to_hcd(udev->bus); ++ ++ /* Root hubs aren't real devices, so don't free HCD resources */ ++ if (hcd->driver->free_dev && udev->parent) ++ hcd->driver->free_dev(hcd, udev); ++} ++ + /** + * usb_disconnect - disconnect a device (usbcore-internal) + * @pdev: pointer to device being disconnected +@@ -1578,6 +1587,8 @@ void usb_disconnect(struct usb_device ** + + usb_stop_pm(udev); + ++ hub_free_dev(udev); ++ + put_device(&udev->dev); + } + +@@ -3130,6 +3141,7 @@ loop_disable: + loop: + usb_ep0_reinit(udev); + release_address(udev); ++ hub_free_dev(udev); + usb_put_dev(udev); + if ((status == -ENOTCONN) || (status == -ENOTSUPP)) + break; +--- a/drivers/usb/core/usb.c ++++ b/drivers/usb/core/usb.c +@@ -191,9 +191,6 @@ static void usb_release_dev(struct devic + hcd = bus_to_hcd(udev->bus); + + usb_destroy_configuration(udev); +- /* Root hubs aren't real devices, so don't free HCD resources */ +- if (hcd->driver->free_dev && udev->parent) +- hcd->driver->free_dev(hcd, udev); + usb_put_hcd(hcd); + kfree(udev->product); + kfree(udev->manufacturer); diff --git a/queue-2.6.32/usb-remove-debugging-message-for-uevent-constructions.patch b/queue-2.6.32/usb-remove-debugging-message-for-uevent-constructions.patch new file mode 100644 index 00000000000..62fe39df62a --- /dev/null +++ b/queue-2.6.32/usb-remove-debugging-message-for-uevent-constructions.patch @@ -0,0 +1,39 @@ +From cceffe9348f93188d7811bda95924d4bd3040d0f Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Mon, 8 Feb 2010 09:45:12 -0500 +Subject: USB: remove debugging message for uevent constructions + +From: Alan Stern + +commit cceffe9348f93188d7811bda95924d4bd3040d0f upstream. + +This patch (as1332) removes an unneeded and annoying debugging message +announcing all USB uevent constructions. + +Signed-off-by: Alan Stern +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/driver.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/drivers/usb/core/driver.c ++++ b/drivers/usb/core/driver.c +@@ -625,9 +625,6 @@ static int usb_uevent(struct device *dev + { + struct usb_device *usb_dev; + +- /* driver is often null here; dev_dbg() would oops */ +- pr_debug("usb %s: uevent\n", dev_name(dev)); +- + if (is_usb_device(dev)) { + usb_dev = to_usb_device(dev); + } else if (is_usb_interface(dev)) { +@@ -639,6 +636,7 @@ static int usb_uevent(struct device *dev + } + + if (usb_dev->devnum < 0) { ++ /* driver is often null here; dev_dbg() would oops */ + pr_debug("usb %s: already deleted?\n", dev_name(dev)); + return -ENODEV; + } diff --git a/queue-2.6.32/usb-xhci-fix-finding-extended-capabilities-registers.patch b/queue-2.6.32/usb-xhci-fix-finding-extended-capabilities-registers.patch new file mode 100644 index 00000000000..eb6d3519020 --- /dev/null +++ b/queue-2.6.32/usb-xhci-fix-finding-extended-capabilities-registers.patch @@ -0,0 +1,43 @@ +From 05197921ff3dad52d99fd1647974c57d9c28d40e Mon Sep 17 00:00:00 2001 +From: Edward Shao +Date: Thu, 11 Feb 2010 03:37:30 +0800 +Subject: USB: xhci: Fix finding extended capabilities registers + +From: Edward Shao + +commit 05197921ff3dad52d99fd1647974c57d9c28d40e upstream. + +According "5.3.6 Capability Parameters (HCCPARAMS)" of xHCI rev0.96 spec, +value of xECP register indicates a relative offset, in 32-bit words, +from Base to the beginning of the first extended capability. +The wrong calculation will cause BIOS handoff fail (not handoff from BIOS) +in some platform with BIOS USB legacy sup support. + +Signed-off-by: Edward Shao +Cc: Sarah Sharp +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci-ext-caps.h | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/usb/host/xhci-ext-caps.h ++++ b/drivers/usb/host/xhci-ext-caps.h +@@ -101,12 +101,15 @@ static inline int xhci_find_next_cap_off + + next = readl(base + ext_offset); + +- if (ext_offset == XHCI_HCC_PARAMS_OFFSET) ++ if (ext_offset == XHCI_HCC_PARAMS_OFFSET) { + /* Find the first extended capability */ + next = XHCI_HCC_EXT_CAPS(next); +- else ++ ext_offset = 0; ++ } else { + /* Find the next extended capability */ + next = XHCI_EXT_CAPS_NEXT(next); ++ } ++ + if (!next) + return 0; + /* diff --git a/queue-2.6.32/x86-add-imac9-1-to-pci_reboot_dmi_table.patch b/queue-2.6.32/x86-add-imac9-1-to-pci_reboot_dmi_table.patch new file mode 100644 index 00000000000..5449cafbea4 --- /dev/null +++ b/queue-2.6.32/x86-add-imac9-1-to-pci_reboot_dmi_table.patch @@ -0,0 +1,39 @@ +From 0a832320f1bae6a4169bf683e201378f2437cfc1 Mon Sep 17 00:00:00 2001 +From: Justin P. Mattock +Date: Tue, 16 Feb 2010 15:17:29 -0800 +Subject: x86: Add iMac9,1 to pci_reboot_dmi_table + +From: Justin P. Mattock + +commit 0a832320f1bae6a4169bf683e201378f2437cfc1 upstream. + +On the iMac9,1 /sbin/reboot results in a black mangled screen. Adding +this DMI entry gets the machine to reboot cleanly as it should. + +Signed-off-by: Justin P. Mattock +LKML-Reference: <1266362249-3337-1-git-send-email-justinmattock@gmail.com> +Signed-off-by: H. Peter Anvin +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/reboot.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/arch/x86/kernel/reboot.c ++++ b/arch/x86/kernel/reboot.c +@@ -461,6 +461,14 @@ static struct dmi_system_id __initdata p + DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"), + }, + }, ++ { /* Handle problems with rebooting on the iMac9,1. */ ++ .callback = set_pci_reboot, ++ .ident = "Apple iMac9,1", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"), ++ }, ++ }, + { } + }; + diff --git a/queue-2.6.32/x86-avoid-race-condition-in-pci_enable_msix.patch b/queue-2.6.32/x86-avoid-race-condition-in-pci_enable_msix.patch new file mode 100644 index 00000000000..b0f910940cc --- /dev/null +++ b/queue-2.6.32/x86-avoid-race-condition-in-pci_enable_msix.patch @@ -0,0 +1,215 @@ +From ced5b697a76d325e7a7ac7d382dbbb632c765093 Mon Sep 17 00:00:00 2001 +From: Brandon Phiilps +Date: Wed, 10 Feb 2010 01:20:06 -0800 +Subject: x86: Avoid race condition in pci_enable_msix() + +From: Brandon Phiilps + +commit ced5b697a76d325e7a7ac7d382dbbb632c765093 upstream. + +Keep chip_data in create_irq_nr and destroy_irq. + +When two drivers are setting up MSI-X at the same time via +pci_enable_msix() there is a race. See this dmesg excerpt: + +[ 85.170610] ixgbe 0000:02:00.1: irq 97 for MSI/MSI-X +[ 85.170611] alloc irq_desc for 99 on node -1 +[ 85.170613] igb 0000:08:00.1: irq 98 for MSI/MSI-X +[ 85.170614] alloc kstat_irqs on node -1 +[ 85.170616] alloc irq_2_iommu on node -1 +[ 85.170617] alloc irq_desc for 100 on node -1 +[ 85.170619] alloc kstat_irqs on node -1 +[ 85.170621] alloc irq_2_iommu on node -1 +[ 85.170625] ixgbe 0000:02:00.1: irq 99 for MSI/MSI-X +[ 85.170626] alloc irq_desc for 101 on node -1 +[ 85.170628] igb 0000:08:00.1: irq 100 for MSI/MSI-X +[ 85.170630] alloc kstat_irqs on node -1 +[ 85.170631] alloc irq_2_iommu on node -1 +[ 85.170635] alloc irq_desc for 102 on node -1 +[ 85.170636] alloc kstat_irqs on node -1 +[ 85.170639] alloc irq_2_iommu on node -1 +[ 85.170646] BUG: unable to handle kernel NULL pointer dereference +at 0000000000000088 + +As you can see igb and ixgbe are both alternating on create_irq_nr() +via pci_enable_msix() in their probe function. + +ixgbe: While looping through irq_desc_ptrs[] via create_irq_nr() ixgbe +choses irq_desc_ptrs[102] and exits the loop, drops vector_lock and +calls dynamic_irq_init. Then it sets irq_desc_ptrs[102]->chip_data = +NULL via dynamic_irq_init(). + +igb: Grabs the vector_lock now and starts looping over irq_desc_ptrs[] +via create_irq_nr(). It gets to irq_desc_ptrs[102] and does this: + + cfg_new = irq_desc_ptrs[102]->chip_data; + if (cfg_new->vector != 0) + continue; + +This hits the NULL deref. + +Another possible race exists via pci_disable_msix() in a driver or in +the number of error paths that call free_msi_irqs(): + +destroy_irq() +dynamic_irq_cleanup() which sets desc->chip_data = NULL +...race window... +desc->chip_data = cfg; + +Remove the save and restore code for cfg in create_irq_nr() and +destroy_irq() and take the desc->lock when checking the irq_cfg. + +Reported-and-analyzed-by: Brandon Philips +Signed-off-by: Yinghai Lu +LKML-Reference: <1265793639-15071-3-git-send-email-yinghai@kernel.org> +Signed-off-by: Brandon Phililps +Signed-off-by: H. Peter Anvin +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/apic/io_apic.c | 18 +++----------- + include/linux/irq.h | 2 + + kernel/irq/chip.c | 52 +++++++++++++++++++++++++++++++++-------- + 3 files changed, 50 insertions(+), 22 deletions(-) + +--- a/arch/x86/kernel/apic/io_apic.c ++++ b/arch/x86/kernel/apic/io_apic.c +@@ -3165,12 +3165,9 @@ unsigned int create_irq_nr(unsigned int + } + spin_unlock_irqrestore(&vector_lock, flags); + +- if (irq > 0) { +- dynamic_irq_init(irq); +- /* restore it, in case dynamic_irq_init clear it */ +- if (desc_new) +- desc_new->chip_data = cfg_new; +- } ++ if (irq > 0) ++ dynamic_irq_init_keep_chip_data(irq); ++ + return irq; + } + +@@ -3193,17 +3190,12 @@ void destroy_irq(unsigned int irq) + { + unsigned long flags; + struct irq_cfg *cfg; +- struct irq_desc *desc; + +- /* store it, in case dynamic_irq_cleanup clear it */ +- desc = irq_to_desc(irq); +- cfg = desc->chip_data; +- dynamic_irq_cleanup(irq); +- /* connect back irq_cfg */ +- desc->chip_data = cfg; ++ dynamic_irq_cleanup_keep_chip_data(irq); + + free_irte(irq); + spin_lock_irqsave(&vector_lock, flags); ++ cfg = irq_to_desc(irq)->chip_data; + __clear_irq_vector(irq, cfg); + spin_unlock_irqrestore(&vector_lock, flags); + } +--- a/include/linux/irq.h ++++ b/include/linux/irq.h +@@ -400,7 +400,9 @@ static inline int irq_has_action(unsigne + + /* Dynamic irq helper functions */ + extern void dynamic_irq_init(unsigned int irq); ++void dynamic_irq_init_keep_chip_data(unsigned int irq); + extern void dynamic_irq_cleanup(unsigned int irq); ++void dynamic_irq_cleanup_keep_chip_data(unsigned int irq); + + /* Set/get chip/data for an IRQ: */ + extern int set_irq_chip(unsigned int irq, struct irq_chip *chip); +--- a/kernel/irq/chip.c ++++ b/kernel/irq/chip.c +@@ -18,11 +18,7 @@ + + #include "internals.h" + +-/** +- * dynamic_irq_init - initialize a dynamically allocated irq +- * @irq: irq number to initialize +- */ +-void dynamic_irq_init(unsigned int irq) ++static void dynamic_irq_init_x(unsigned int irq, bool keep_chip_data) + { + struct irq_desc *desc; + unsigned long flags; +@@ -41,7 +37,8 @@ void dynamic_irq_init(unsigned int irq) + desc->depth = 1; + desc->msi_desc = NULL; + desc->handler_data = NULL; +- desc->chip_data = NULL; ++ if (!keep_chip_data) ++ desc->chip_data = NULL; + desc->action = NULL; + desc->irq_count = 0; + desc->irqs_unhandled = 0; +@@ -55,10 +52,26 @@ void dynamic_irq_init(unsigned int irq) + } + + /** +- * dynamic_irq_cleanup - cleanup a dynamically allocated irq ++ * dynamic_irq_init - initialize a dynamically allocated irq + * @irq: irq number to initialize + */ +-void dynamic_irq_cleanup(unsigned int irq) ++void dynamic_irq_init(unsigned int irq) ++{ ++ dynamic_irq_init_x(irq, false); ++} ++ ++/** ++ * dynamic_irq_init_keep_chip_data - initialize a dynamically allocated irq ++ * @irq: irq number to initialize ++ * ++ * does not set irq_to_desc(irq)->chip_data to NULL ++ */ ++void dynamic_irq_init_keep_chip_data(unsigned int irq) ++{ ++ dynamic_irq_init_x(irq, true); ++} ++ ++static void dynamic_irq_cleanup_x(unsigned int irq, bool keep_chip_data) + { + struct irq_desc *desc = irq_to_desc(irq); + unsigned long flags; +@@ -77,7 +90,8 @@ void dynamic_irq_cleanup(unsigned int ir + } + desc->msi_desc = NULL; + desc->handler_data = NULL; +- desc->chip_data = NULL; ++ if (!keep_chip_data) ++ desc->chip_data = NULL; + desc->handle_irq = handle_bad_irq; + desc->chip = &no_irq_chip; + desc->name = NULL; +@@ -85,6 +99,26 @@ void dynamic_irq_cleanup(unsigned int ir + spin_unlock_irqrestore(&desc->lock, flags); + } + ++/** ++ * dynamic_irq_cleanup - cleanup a dynamically allocated irq ++ * @irq: irq number to initialize ++ */ ++void dynamic_irq_cleanup(unsigned int irq) ++{ ++ dynamic_irq_cleanup_x(irq, false); ++} ++ ++/** ++ * dynamic_irq_cleanup_keep_chip_data - cleanup a dynamically allocated irq ++ * @irq: irq number to initialize ++ * ++ * does not set irq_to_desc(irq)->chip_data to NULL ++ */ ++void dynamic_irq_cleanup_keep_chip_data(unsigned int irq) ++{ ++ dynamic_irq_cleanup_x(irq, true); ++} ++ + + /** + * set_irq_chip - set the irq chip for an irq diff --git a/queue-2.6.32/x86-fix-sci-on-ioapic-0.patch b/queue-2.6.32/x86-fix-sci-on-ioapic-0.patch new file mode 100644 index 00000000000..5ff287c0b7a --- /dev/null +++ b/queue-2.6.32/x86-fix-sci-on-ioapic-0.patch @@ -0,0 +1,139 @@ +From 18dce6ba5c8c6bd0f3ab4efa4cbdd698dab5c40a Mon Sep 17 00:00:00 2001 +From: Yinghai Lu +Date: Wed, 10 Feb 2010 01:20:05 -0800 +Subject: x86: Fix SCI on IOAPIC != 0 + +From: Yinghai Lu + +commit 18dce6ba5c8c6bd0f3ab4efa4cbdd698dab5c40a upstream. + +Thomas Renninger reported on IBM x3330 + +booting a latest kernel on this machine results in: + +PCI: PCI BIOS revision 2.10 entry at 0xfd61c, last bus=1 +PCI: Using configuration type 1 for base access bio: create slab at 0 +ACPI: SCI (IRQ30) allocation failed +ACPI Exception: AE_NOT_ACQUIRED, Unable to install System Control Interrupt handler (20090903/evevent-161) +ACPI: Unable to start the ACPI Interpreter + +Later all kind of devices fail... + +and bisect it down to this commit: +commit b9c61b70075c87a8612624736faf4a2de5b1ed30 + + x86/pci: update pirq_enable_irq() to setup io apic routing + +it turns out we need to set irq routing for the sci on ioapic1 early. + +-v2: make it work without sparseirq too. +-v3: fix checkpatch.pl warning, and cc to stable + +Reported-by: Thomas Renninger +Bisected-by: Thomas Renninger +Tested-by: Thomas Renninger +Signed-off-by: Yinghai Lu +LKML-Reference: <1265793639-15071-2-git-send-email-yinghai@kernel.org> +Signed-off-by: H. Peter Anvin +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/include/asm/io_apic.h | 1 + arch/x86/kernel/acpi/boot.c | 9 ++++++- + arch/x86/kernel/apic/io_apic.c | 50 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 59 insertions(+), 1 deletion(-) + +--- a/arch/x86/include/asm/io_apic.h ++++ b/arch/x86/include/asm/io_apic.h +@@ -160,6 +160,7 @@ extern int io_apic_get_redir_entries(int + struct io_apic_irq_attr; + extern int io_apic_set_pci_routing(struct device *dev, int irq, + struct io_apic_irq_attr *irq_attr); ++void setup_IO_APIC_irq_extra(u32 gsi); + extern int (*ioapic_renumber_irq)(int ioapic, int irq); + extern void ioapic_init_mappings(void); + extern void ioapic_insert_resources(void); +--- a/arch/x86/kernel/acpi/boot.c ++++ b/arch/x86/kernel/acpi/boot.c +@@ -446,6 +446,12 @@ void __init acpi_pic_sci_set_trigger(uns + int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) + { + *irq = gsi; ++ ++#ifdef CONFIG_X86_IO_APIC ++ if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) ++ setup_IO_APIC_irq_extra(gsi); ++#endif ++ + return 0; + } + +@@ -473,7 +479,8 @@ int acpi_register_gsi(struct device *dev + plat_gsi = mp_register_gsi(dev, gsi, trigger, polarity); + } + #endif +- acpi_gsi_to_irq(plat_gsi, &irq); ++ irq = plat_gsi; ++ + return irq; + } + +--- a/arch/x86/kernel/apic/io_apic.c ++++ b/arch/x86/kernel/apic/io_apic.c +@@ -1550,6 +1550,56 @@ static void __init setup_IO_APIC_irqs(vo + } + + /* ++ * for the gsit that is not in first ioapic ++ * but could not use acpi_register_gsi() ++ * like some special sci in IBM x3330 ++ */ ++void setup_IO_APIC_irq_extra(u32 gsi) ++{ ++ int apic_id = 0, pin, idx, irq; ++ int node = cpu_to_node(boot_cpu_id); ++ struct irq_desc *desc; ++ struct irq_cfg *cfg; ++ ++ /* ++ * Convert 'gsi' to 'ioapic.pin'. ++ */ ++ apic_id = mp_find_ioapic(gsi); ++ if (apic_id < 0) ++ return; ++ ++ pin = mp_find_ioapic_pin(apic_id, gsi); ++ idx = find_irq_entry(apic_id, pin, mp_INT); ++ if (idx == -1) ++ return; ++ ++ irq = pin_2_irq(idx, apic_id, pin); ++#ifdef CONFIG_SPARSE_IRQ ++ desc = irq_to_desc(irq); ++ if (desc) ++ return; ++#endif ++ desc = irq_to_desc_alloc_node(irq, node); ++ if (!desc) { ++ printk(KERN_INFO "can not get irq_desc for %d\n", irq); ++ return; ++ } ++ ++ cfg = desc->chip_data; ++ add_pin_to_irq_node(cfg, node, apic_id, pin); ++ ++ if (test_bit(pin, mp_ioapic_routing[apic_id].pin_programmed)) { ++ pr_debug("Pin %d-%d already programmed\n", ++ mp_ioapics[apic_id].apicid, pin); ++ return; ++ } ++ set_bit(pin, mp_ioapic_routing[apic_id].pin_programmed); ++ ++ setup_IO_APIC_irq(apic_id, pin, irq, desc, ++ irq_trigger(idx), irq_polarity(idx)); ++} ++ ++/* + * Set up the timer pin, possibly with the 8259A-master behind. + */ + static void __init setup_timer_IRQ0_pin(unsigned int apic_id, unsigned int pin, diff --git a/queue-2.6.32/x86-ia32_aout-do-not-kill-argument-mapping.patch b/queue-2.6.32/x86-ia32_aout-do-not-kill-argument-mapping.patch new file mode 100644 index 00000000000..7c2ee1f3b92 --- /dev/null +++ b/queue-2.6.32/x86-ia32_aout-do-not-kill-argument-mapping.patch @@ -0,0 +1,42 @@ +From 318f6b228ba88a394ef560efc1bfe028ad5ae6b6 Mon Sep 17 00:00:00 2001 +From: Jiri Slaby +Date: Wed, 10 Feb 2010 20:55:16 +0100 +Subject: x86, ia32_aout: do not kill argument mapping + +From: Jiri Slaby + +commit 318f6b228ba88a394ef560efc1bfe028ad5ae6b6 upstream. + +Do not set current->mm->mmap to NULL in 32-bit emulation on 64-bit +load_aout_binary after flush_old_exec as it would destroy already +set brpm mapping with arguments. + +Introduced by b6a2fea39318e43fee84fa7b0b90d68bed92d2ba +mm: variable length argument support +where the argument mapping in bprm was added. + +[ hpa: this is a regression from 2.6.22... time to kill a.out? ] + +Signed-off-by: Jiri Slaby +LKML-Reference: <1265831716-7668-1-git-send-email-jslaby@suse.cz> +Cc: Ingo Molnar +Cc: Thomas Gleixner +Cc: Ollie Wild +Cc: x86@kernel.org +Signed-off-by: H. Peter Anvin +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/ia32/ia32_aout.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/arch/x86/ia32/ia32_aout.c ++++ b/arch/x86/ia32/ia32_aout.c +@@ -327,7 +327,6 @@ static int load_aout_binary(struct linux + current->mm->free_area_cache = TASK_UNMAPPED_BASE; + current->mm->cached_hole_size = 0; + +- current->mm->mmap = NULL; + install_exec_creds(bprm); + current->flags &= ~PF_FORKNOEXEC; + diff --git a/queue-2.6.32/x86-xen-disable-highmem-pte-allocation-even-when-config_highpte-y.patch b/queue-2.6.32/x86-xen-disable-highmem-pte-allocation-even-when-config_highpte-y.patch new file mode 100644 index 00000000000..c736c0aa68e --- /dev/null +++ b/queue-2.6.32/x86-xen-disable-highmem-pte-allocation-even-when-config_highpte-y.patch @@ -0,0 +1,79 @@ +From 817a824b75b1475f1b067c8cee318c7b4d66fcde Mon Sep 17 00:00:00 2001 +From: Ian Campbell +Date: Fri, 26 Feb 2010 17:16:00 +0000 +Subject: x86, xen: Disable highmem PTE allocation even when CONFIG_HIGHPTE=y +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Ian Campbell + +commit 817a824b75b1475f1b067c8cee318c7b4d66fcde upstream. + +There's a path in the pagefault code where the kernel deliberately +breaks its own locking rules by kmapping a high pte page without +holding the pagetable lock (in at least page_check_address). This +breaks Xen's ability to track the pinned/unpinned state of the +page. There does not appear to be a viable workaround for this +behaviour so simply disable HIGHPTE for all Xen guests. + +Signed-off-by: Ian Campbell +LKML-Reference: <1267204562-11844-1-git-send-email-ian.campbell@citrix.com> +Cc: Jeremy Fitzhardinge +Cc: Ingo Molnar +Cc: Pasi Kärkkäinen +Cc: +Signed-off-by: H. Peter Anvin +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/xen/enlighten.c | 7 +++++++ + arch/x86/xen/mmu.c | 11 ++++++----- + 2 files changed, 13 insertions(+), 5 deletions(-) + +--- a/arch/x86/xen/enlighten.c ++++ b/arch/x86/xen/enlighten.c +@@ -48,6 +48,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1092,6 +1093,12 @@ asmlinkage void __init xen_start_kernel( + + __supported_pte_mask |= _PAGE_IOMAP; + ++ /* ++ * Prevent page tables from being allocated in highmem, even ++ * if CONFIG_HIGHPTE is enabled. ++ */ ++ __userpte_alloc_gfp &= ~__GFP_HIGHMEM; ++ + #ifdef CONFIG_X86_64 + /* Work out if we support NX */ + check_efer(); +--- a/arch/x86/xen/mmu.c ++++ b/arch/x86/xen/mmu.c +@@ -1432,14 +1432,15 @@ static void *xen_kmap_atomic_pte(struct + { + pgprot_t prot = PAGE_KERNEL; + ++ /* ++ * We disable highmem allocations for page tables so we should never ++ * see any calls to kmap_atomic_pte on a highmem page. ++ */ ++ BUG_ON(PageHighMem(page)); ++ + if (PagePinned(page)) + prot = PAGE_KERNEL_RO; + +- if (0 && PageHighMem(page)) +- printk("mapping highpte %lx type %d prot %s\n", +- page_to_pfn(page), type, +- (unsigned long)pgprot_val(prot) & _PAGE_RW ? "WRITE" : "READ"); +- + return kmap_atomic_prot(page, type, prot); + } + #endif