1/*
2 * Definitions for the FTDI USB Single Port Serial Converter -
3 * known as FTDI_SIO (Serial Input/Output application of the chipset)
4 *
5 * The example I have is known as the USC-1000 which is available from
6 * http://www.dse.co.nz - cat no XH4214 It looks similar to this:
7 * http://www.dansdata.com/usbser.htm but I can't be sure There are other
8 * USC-1000s which don't look like my device though so beware!
9 *
10 * The device is based on the FTDI FT8U100AX chip. It has a DB25 on one side,
11 * USB on the other.
12 *
13 * Thanx to FTDI (http://www.ftdi.co.uk) for so kindly providing details
14 * of the protocol required to talk to the device and ongoing assistence
15 * during development.
16 *
17 * Bill Ryder - bryder@sgi.com formerly of Silicon Graphics, Inc.- wrote the
18 * FTDI_SIO implementation.
19 *
20 * Philipp G�hring - pg@futureware.at - added the Device ID of the USB relais
21 * from Rudolf Gugler
22 *
23 */
24
25#define FTDI_VID	0x0403	/* Vendor Id */
26#define FTDI_SIO_PID	0x8372	/* Product Id SIO application of 8U100AX  */
27#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */
28#define FTDI_8U232AM_ALT_PID 0x6006 /* FTDI's alternate PID for above */
29#define FTDI_8U2232C_PID 0x6010 /* Dual channel device */
30#define FTDI_232RL_PID  0xFBFA  /* Product ID for FT232RL */
31#define FTDI_RELAIS_PID	0xFA10  /* Relais device from Rudolf Gugler */
32#define FTDI_NF_RIC_VID	0x0DCD	/* Vendor Id */
33#define FTDI_NF_RIC_PID	0x0001	/* Product Id */
34#define FTDI_USBX_707_PID 0xF857	/* ADSTech IR Blaster USBX-707 */
35
36
37/* www.canusb.com Lawicel CANUSB device */
38#define FTDI_CANUSB_PID 0xFFA8 /* Product Id */
39
40/* AlphaMicro Components AMC-232USB01 device */
41#define FTDI_AMC232_PID 0xFF00 /* Product Id */
42
43/* ACT Solutions HomePro ZWave interface (http://www.act-solutions.com/HomePro.htm) */
44#define FTDI_ACTZWAVE_PID	0xF2D0
45
46
47/* www.starting-point-systems.com �Chameleon device */
48#define FTDI_MICRO_CHAMELEON_PID	0xCAA0	/* Product Id */
49
50/* www.irtrans.de device */
51#define FTDI_IRTRANS_PID 0xFC60 /* Product Id */
52
53
54/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
55#define FTDI_TTUSB_PID 0xFF20 /* Product Id */
56
57/* iPlus device */
58#define FTDI_IPLUS_PID 0xD070 /* Product Id */
59#define FTDI_IPLUS2_PID 0xD071 /* Product Id */
60
61/* DMX4ALL DMX Interfaces */
62#define FTDI_DMX4ALL 0xC850
63
64/* OpenDCC (www.opendcc.de) product id */
65#define FTDI_OPENDCC_PID	0xBFD8
66
67/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
68/* they use the ftdi chipset for the USB interface and the vendor id is the same */
69#define FTDI_XF_632_PID 0xFC08	/* 632: 16x2 Character Display */
70#define FTDI_XF_634_PID 0xFC09	/* 634: 20x4 Character Display */
71#define FTDI_XF_547_PID 0xFC0A	/* 547: Two line Display */
72#define FTDI_XF_633_PID 0xFC0B	/* 633: 16x2 Character Display with Keys */
73#define FTDI_XF_631_PID 0xFC0C	/* 631: 20x2 Character Display */
74#define FTDI_XF_635_PID 0xFC0D	/* 635: 20x4 Character Display */
75#define FTDI_XF_640_PID 0xFC0E	/* 640: Two line Display */
76#define FTDI_XF_642_PID 0xFC0F	/* 642: Two line Display */
77
78/* Video Networks Limited / Homechoice in the UK use an ftdi-based device for their 1Mb */
79/* broadband internet service.  The following PID is exhibited by the usb device supplied */
80/* (the VID is the standard ftdi vid (FTDI_VID) */
81#define FTDI_VNHCPCUSB_D_PID 0xfe38 /* Product Id */
82
83/*
84 * PCDJ use ftdi based dj-controllers.  The following PID is for their DAC-2 device
85 * http://www.pcdjhardware.com/DAC2.asp (PID sent by Wouter Paesen)
86 * (the VID is the standard ftdi vid (FTDI_VID) */
87#define FTDI_PCDJ_DAC2_PID 0xFA88
88
89/*
90 * The following are the values for the Matrix Orbital LCD displays,
91 * which are the FT232BM ( similar to the 8U232AM )
92 */
93#define FTDI_MTXORB_0_PID      0xFA00  /* Matrix Orbital Product Id */
94#define FTDI_MTXORB_1_PID      0xFA01  /* Matrix Orbital Product Id */
95#define FTDI_MTXORB_2_PID      0xFA02  /* Matrix Orbital Product Id */
96#define FTDI_MTXORB_3_PID      0xFA03  /* Matrix Orbital Product Id */
97#define FTDI_MTXORB_4_PID      0xFA04  /* Matrix Orbital Product Id */
98#define FTDI_MTXORB_5_PID      0xFA05  /* Matrix Orbital Product Id */
99#define FTDI_MTXORB_6_PID      0xFA06  /* Matrix Orbital Product Id */
100
101/* Interbiometrics USB I/O Board */
102/* Developed for Interbiometrics by Rudolf Gugler */
103#define INTERBIOMETRICS_VID              0x1209
104#define INTERBIOMETRICS_IOBOARD_PID      0x1002
105#define INTERBIOMETRICS_MINI_IOBOARD_PID 0x1006
106
107/*
108 * The following are the values for the Perle Systems
109 * UltraPort USB serial converters
110 */
111#define FTDI_PERLE_ULTRAPORT_PID 0xF0C0	/* Perle UltraPort Product Id */
112
113/*
114 * The following are the values for the Sealevel SeaLINK+ adapters.
115 * (Original list sent by Tuan Hoang.  Ian Abbott renamed the macros and
116 * removed some PIDs that don't seem to match any existing products.)
117 */
118#define SEALEVEL_VID		0x0c52	/* Sealevel Vendor ID */
119#define SEALEVEL_2101_PID	0x2101	/* SeaLINK+232 (2101/2105) */
120#define SEALEVEL_2102_PID	0x2102	/* SeaLINK+485 (2102) */
121#define SEALEVEL_2103_PID	0x2103	/* SeaLINK+232I (2103) */
122#define SEALEVEL_2104_PID	0x2104	/* SeaLINK+485I (2104) */
123#define SEALEVEL_2106_PID	0x9020	/* SeaLINK+422 (2106) */
124#define SEALEVEL_2201_1_PID	0x2211	/* SeaPORT+2/232 (2201) Port 1 */
125#define SEALEVEL_2201_2_PID	0x2221	/* SeaPORT+2/232 (2201) Port 2 */
126#define SEALEVEL_2202_1_PID	0x2212	/* SeaPORT+2/485 (2202) Port 1 */
127#define SEALEVEL_2202_2_PID	0x2222	/* SeaPORT+2/485 (2202) Port 2 */
128#define SEALEVEL_2203_1_PID	0x2213	/* SeaPORT+2 (2203) Port 1 */
129#define SEALEVEL_2203_2_PID	0x2223	/* SeaPORT+2 (2203) Port 2 */
130#define SEALEVEL_2401_1_PID	0x2411	/* SeaPORT+4/232 (2401) Port 1 */
131#define SEALEVEL_2401_2_PID	0x2421	/* SeaPORT+4/232 (2401) Port 2 */
132#define SEALEVEL_2401_3_PID	0x2431	/* SeaPORT+4/232 (2401) Port 3 */
133#define SEALEVEL_2401_4_PID	0x2441	/* SeaPORT+4/232 (2401) Port 4 */
134#define SEALEVEL_2402_1_PID	0x2412	/* SeaPORT+4/485 (2402) Port 1 */
135#define SEALEVEL_2402_2_PID	0x2422	/* SeaPORT+4/485 (2402) Port 2 */
136#define SEALEVEL_2402_3_PID	0x2432	/* SeaPORT+4/485 (2402) Port 3 */
137#define SEALEVEL_2402_4_PID	0x2442	/* SeaPORT+4/485 (2402) Port 4 */
138#define SEALEVEL_2403_1_PID	0x2413	/* SeaPORT+4 (2403) Port 1 */
139#define SEALEVEL_2403_2_PID	0x2423	/* SeaPORT+4 (2403) Port 2 */
140#define SEALEVEL_2403_3_PID	0x2433	/* SeaPORT+4 (2403) Port 3 */
141#define SEALEVEL_2403_4_PID	0x2443	/* SeaPORT+4 (2403) Port 4 */
142#define SEALEVEL_2801_1_PID	0X2811	/* SeaLINK+8/232 (2801) Port 1 */
143#define SEALEVEL_2801_2_PID	0X2821	/* SeaLINK+8/232 (2801) Port 2 */
144#define SEALEVEL_2801_3_PID	0X2831	/* SeaLINK+8/232 (2801) Port 3 */
145#define SEALEVEL_2801_4_PID	0X2841	/* SeaLINK+8/232 (2801) Port 4 */
146#define SEALEVEL_2801_5_PID	0X2851	/* SeaLINK+8/232 (2801) Port 5 */
147#define SEALEVEL_2801_6_PID	0X2861	/* SeaLINK+8/232 (2801) Port 6 */
148#define SEALEVEL_2801_7_PID	0X2871	/* SeaLINK+8/232 (2801) Port 7 */
149#define SEALEVEL_2801_8_PID	0X2881	/* SeaLINK+8/232 (2801) Port 8 */
150#define SEALEVEL_2802_1_PID	0X2812	/* SeaLINK+8/485 (2802) Port 1 */
151#define SEALEVEL_2802_2_PID	0X2822	/* SeaLINK+8/485 (2802) Port 2 */
152#define SEALEVEL_2802_3_PID	0X2832	/* SeaLINK+8/485 (2802) Port 3 */
153#define SEALEVEL_2802_4_PID	0X2842	/* SeaLINK+8/485 (2802) Port 4 */
154#define SEALEVEL_2802_5_PID	0X2852	/* SeaLINK+8/485 (2802) Port 5 */
155#define SEALEVEL_2802_6_PID	0X2862	/* SeaLINK+8/485 (2802) Port 6 */
156#define SEALEVEL_2802_7_PID	0X2872	/* SeaLINK+8/485 (2802) Port 7 */
157#define SEALEVEL_2802_8_PID	0X2882	/* SeaLINK+8/485 (2802) Port 8 */
158#define SEALEVEL_2803_1_PID	0X2813	/* SeaLINK+8 (2803) Port 1 */
159#define SEALEVEL_2803_2_PID	0X2823 	/* SeaLINK+8 (2803) Port 2 */
160#define SEALEVEL_2803_3_PID	0X2833 	/* SeaLINK+8 (2803) Port 3 */
161#define SEALEVEL_2803_4_PID	0X2843 	/* SeaLINK+8 (2803) Port 4 */
162#define SEALEVEL_2803_5_PID	0X2853 	/* SeaLINK+8 (2803) Port 5 */
163#define SEALEVEL_2803_6_PID	0X2863 	/* SeaLINK+8 (2803) Port 6 */
164#define SEALEVEL_2803_7_PID	0X2873 	/* SeaLINK+8 (2803) Port 7 */
165#define SEALEVEL_2803_8_PID	0X2883 	/* SeaLINK+8 (2803) Port 8 */
166
167/*
168 * The following are the values for two KOBIL chipcard terminals.
169 */
170#define KOBIL_VID		0x0d46	/* KOBIL Vendor ID */
171#define KOBIL_CONV_B1_PID	0x2020	/* KOBIL Konverter for B1 */
172#define KOBIL_CONV_KAAN_PID	0x2021	/* KOBIL_Konverter for KAAN */
173
174/*
175 * Icom ID-1 digital transceiver
176 */
177
178#define ICOM_ID1_VID            0x0C26
179#define ICOM_ID1_PID            0x0004
180
181/*
182 * ASK.fr devices
183 */
184#define FTDI_ASK_RDR400_PID	0xC991	/* ASK RDR 400 series card reader */
185
186/*
187 * FTDI USB UART chips used in construction projects from the
188 * Elektor Electronics magazine (http://elektor-electronics.co.uk)
189 */
190#define ELEKTOR_VID		0x0C7D
191#define ELEKTOR_FT323R_PID	0x0005	/* RFID-Reader, issue 09-2006 */
192
193/*
194 * DSS-20 Sync Station for Sony Ericsson P800
195 */
196#define FTDI_DSS20_PID          0xFC82
197
198/*
199 * Home Electronics (www.home-electro.com) USB gadgets
200 */
201#define FTDI_HE_TIRA1_PID	0xFA78	/* Tira-1 IR transceiver */
202
203/* USB-UIRT - An infrared receiver and transmitter using the 8U232AM chip */
204/* http://home.earthlink.net/~jrhees/USBUIRT/index.htm */
205#define FTDI_USB_UIRT_PID	0xF850	/* Product Id */
206
207/* TNC-X USB-to-packet-radio adapter, versions prior to 3.0 (DLP module) */
208
209#define FTDI_TNC_X_PID		0xEBE0
210
211/*
212 * ELV USB devices submitted by Christian Abt of ELV (www.elv.de).
213 * All of these devices use FTDI's vendor ID (0x0403).
214 *
215 * The previously included PID for the UO 100 module was incorrect.
216 * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58).
217 *
218 * Armin Laeuger originally sent the PID for the UM 100 module.
219 */
220#define FTDI_ELV_UR100_PID	0xFB58	/* USB-RS232-Umsetzer (UR 100) */
221#define FTDI_ELV_UM100_PID	0xFB5A	/* USB-Modul UM 100 */
222#define FTDI_ELV_UO100_PID	0xFB5B	/* USB-Modul UO 100 */
223#define FTDI_ELV_ALC8500_PID	0xF06E	/* ALC 8500 Expert */
224/* Additional ELV PIDs that default to using the FTDI D2XX drivers on
225 * MS Windows, rather than the FTDI Virtual Com Port drivers.
226 * Maybe these will be easier to use with the libftdi/libusb user-space
227 * drivers, or possibly the Comedi drivers in some cases. */
228#define FTDI_ELV_CLI7000_PID	0xFB59	/* Computer-Light-Interface (CLI 7000) */
229#define FTDI_ELV_PPS7330_PID	0xFB5C	/* Processor-Power-Supply (PPS 7330) */
230#define FTDI_ELV_TFM100_PID	0xFB5D	/* Temperartur-Feuchte Messgeraet (TFM 100) */
231#define FTDI_ELV_UDF77_PID	0xFB5E	/* USB DCF Funkurh (UDF 77) */
232#define FTDI_ELV_UIO88_PID	0xFB5F	/* USB-I/O Interface (UIO 88) */
233#define FTDI_ELV_UAD8_PID	0xF068	/* USB-AD-Wandler (UAD 8) */
234#define FTDI_ELV_UDA7_PID	0xF069	/* USB-DA-Wandler (UDA 7) */
235#define FTDI_ELV_USI2_PID	0xF06A	/* USB-Schrittmotoren-Interface (USI 2) */
236#define FTDI_ELV_T1100_PID	0xF06B	/* Thermometer (T 1100) */
237#define FTDI_ELV_PCD200_PID	0xF06C	/* PC-Datenlogger (PCD 200) */
238#define FTDI_ELV_ULA200_PID	0xF06D	/* USB-LCD-Ansteuerung (ULA 200) */
239#define FTDI_ELV_FHZ1000PC_PID	0xF06F	/* FHZ 1000 PC */
240#define FTDI_ELV_CSI8_PID	0xE0F0	/* Computer-Schalt-Interface (CSI 8) */
241#define FTDI_ELV_EM1000DL_PID	0xE0F1	/* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */
242#define FTDI_ELV_PCK100_PID	0xE0F2	/* PC-Kabeltester (PCK 100) */
243#define FTDI_ELV_RFP500_PID	0xE0F3	/* HF-Leistungsmesser (RFP 500) */
244#define FTDI_ELV_FS20SIG_PID	0xE0F4	/* Signalgeber (FS 20 SIG) */
245#define FTDI_ELV_WS300PC_PID	0xE0F6	/* PC-Wetterstation (WS 300 PC) */
246#define FTDI_ELV_FHZ1300PC_PID	0xE0E8	/* FHZ 1300 PC */
247#define FTDI_ELV_WS500_PID	0xE0E9	/* PC-Wetterstation (WS 500) */
248
249/*
250 * Definitions for ID TECH (www.idt-net.com) devices
251 */
252#define IDTECH_VID		0x0ACD	/* ID TECH Vendor ID */
253#define IDTECH_IDT1221U_PID	0x0300	/* IDT1221U USB to RS-232 adapter */
254
255/*
256 * Definitions for Omnidirectional Control Technology, Inc. devices
257 */
258#define OCT_VID			0x0B39	/* OCT vendor ID */
259/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */
260/* Also rebadged as Dick Smith Electronics (Aus) XH6451 */
261/* Also rebadged as SIIG Inc. model US2308 hardware version 1 */
262#define OCT_US101_PID		0x0421	/* OCT US101 USB to RS-232 */
263
264/* an infrared receiver for user access control with IR tags */
265#define FTDI_PIEGROUP_PID	0xF208	/* Product Id */
266
267/*
268 * Definitions for Artemis astronomical USB based cameras
269 * Check it at http://www.artemisccd.co.uk/
270 */
271#define FTDI_ARTEMIS_PID	0xDF28	/* All Artemis Cameras */
272
273/*
274 * Definitions for ATIK Instruments astronomical USB based cameras
275 * Check it at http://www.atik-instruments.com/
276 */
277#define FTDI_ATIK_ATK16_PID	0xDF30	/* ATIK ATK-16 Grayscale Camera */
278#define FTDI_ATIK_ATK16C_PID	0xDF32	/* ATIK ATK-16C Colour Camera */
279#define FTDI_ATIK_ATK16HR_PID	0xDF31	/* ATIK ATK-16HR Grayscale Camera */
280#define FTDI_ATIK_ATK16HRC_PID	0xDF33	/* ATIK ATK-16HRC Colour Camera */
281
282/*
283 * Protego product ids
284 */
285#define PROTEGO_SPECIAL_1	0xFC70	/* special/unknown device */
286#define PROTEGO_R2X0		0xFC71	/* R200-USB TRNG unit (R210, R220, and R230) */
287#define PROTEGO_SPECIAL_3	0xFC72	/* special/unknown device */
288#define PROTEGO_SPECIAL_4	0xFC73	/* special/unknown device */
289
290/*
291 * Gude Analog- und Digitalsysteme GmbH
292 */
293#define FTDI_GUDEADS_E808_PID    0xE808
294#define FTDI_GUDEADS_E809_PID    0xE809
295#define FTDI_GUDEADS_E80A_PID    0xE80A
296#define FTDI_GUDEADS_E80B_PID    0xE80B
297#define FTDI_GUDEADS_E80C_PID    0xE80C
298#define FTDI_GUDEADS_E80D_PID    0xE80D
299#define FTDI_GUDEADS_E80E_PID    0xE80E
300#define FTDI_GUDEADS_E80F_PID    0xE80F
301#define FTDI_GUDEADS_E888_PID    0xE888  /* Expert ISDN Control USB */
302#define FTDI_GUDEADS_E889_PID    0xE889  /* USB RS-232 OptoBridge */
303#define FTDI_GUDEADS_E88A_PID    0xE88A
304#define FTDI_GUDEADS_E88B_PID    0xE88B
305#define FTDI_GUDEADS_E88C_PID    0xE88C
306#define FTDI_GUDEADS_E88D_PID    0xE88D
307#define FTDI_GUDEADS_E88E_PID    0xE88E
308#define FTDI_GUDEADS_E88F_PID    0xE88F
309
310/*
311 * Linx Technologies product ids
312 */
313#define LINX_SDMUSBQSS_PID	0xF448	/* Linx SDM-USB-QS-S */
314#define LINX_MASTERDEVEL2_PID   0xF449   /* Linx Master Development 2.0 */
315#define LINX_FUTURE_0_PID   0xF44A   /* Linx future device */
316#define LINX_FUTURE_1_PID   0xF44B   /* Linx future device */
317#define LINX_FUTURE_2_PID   0xF44C   /* Linx future device */
318
319/* CCS Inc. ICDU/ICDU40 product ID - the FT232BM is used in an in-circuit-debugger */
320/* unit for PIC16's/PIC18's */
321#define FTDI_CCSICDU20_0_PID    0xF9D0
322#define FTDI_CCSICDU40_1_PID    0xF9D1
323#define FTDI_CCSMACHX_2_PID     0xF9D2
324
325/* Inside Accesso contactless reader (http://www.insidefr.com) */
326#define INSIDE_ACCESSO		0xFAD0
327
328/*
329 * Intrepid Control Systems (http://www.intrepidcs.com/) ValueCAN and NeoVI
330 */
331#define INTREPID_VID		0x093C
332#define INTREPID_VALUECAN_PID	0x0601
333#define INTREPID_NEOVI_PID	0x0701
334
335/*
336 * Falcom Wireless Communications GmbH
337 */
338#define FALCOM_VID		0x0F94	/* Vendor Id */
339#define FALCOM_TWIST_PID	0x0001	/* Falcom Twist USB GPRS modem */
340#define FALCOM_SAMBA_PID	0x0005	/* Falcom Samba USB GPRS modem */
341
342/*
343 * SUUNTO product ids
344 */
345#define FTDI_SUUNTO_SPORTS_PID	0xF680	/* Suunto Sports instrument */
346
347/*
348 * TTi (Thurlby Thandar Instruments)
349 */
350#define TTI_VID			0x103E	/* Vendor Id */
351#define TTI_QL355P_PID		0x03E8	/* TTi QL355P power supply */
352
353/*
354 * Definitions for B&B Electronics products.
355 */
356#define BANDB_VID		0x0856	/* B&B Electronics Vendor ID */
357#define BANDB_USOTL4_PID	0xAC01	/* USOTL4 Isolated RS-485 Converter */
358#define BANDB_USTL4_PID		0xAC02	/* USTL4 RS-485 Converter */
359#define BANDB_USO9ML2_PID	0xAC03	/* USO9ML2 Isolated RS-232 Converter */
360
361/*
362 * RM Michaelides CANview USB (http://www.rmcan.com)
363 * CAN fieldbus interface adapter, added by port GmbH www.port.de)
364 * Ian Abbott changed the macro names for consistency.
365 */
366#define FTDI_RM_CANVIEW_PID	0xfd60	/* Product Id */
367
368/*
369 * EVER Eco Pro UPS (http://www.ever.com.pl/)
370 */
371
372#define	EVER_ECO_PRO_CDS	0xe520	/* RS-232 converter */
373
374/*
375 * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485,
376 * USB-TTY activ, USB-TTY passiv.  Some PIDs are used by several devices
377 * and I'm not entirely sure which are used by which.
378 */
379#define FTDI_4N_GALAXY_DE_1_PID	0xF3C0
380#define FTDI_4N_GALAXY_DE_2_PID	0xF3C1
381
382/*
383 * Mobility Electronics products.
384 */
385#define MOBILITY_VID			0x1342
386#define MOBILITY_USB_SERIAL_PID		0x0202	/* EasiDock USB 200 serial */
387
388/*
389 * microHAM product IDs (http://www.microham.com).
390 * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>
391 * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>.
392 * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file.
393 */
394#define FTDI_MHAM_KW_PID 0xEEE8		/* USB-KW interface */
395#define FTDI_MHAM_YS_PID 0xEEE9		/* USB-YS interface */
396#define FTDI_MHAM_Y6_PID 0xEEEA		/* USB-Y6 interface */
397#define FTDI_MHAM_Y8_PID 0xEEEB		/* USB-Y8 interface */
398#define FTDI_MHAM_IC_PID 0xEEEC		/* USB-IC interface */
399#define FTDI_MHAM_DB9_PID 0xEEED	/* USB-DB9 interface */
400#define FTDI_MHAM_RS232_PID 0xEEEE	/* USB-RS232 interface */
401#define FTDI_MHAM_Y9_PID 0xEEEF		/* USB-Y9 interface */
402
403/*
404 * Active Robots product ids.
405 */
406#define FTDI_ACTIVE_ROBOTS_PID	0xE548	/* USB comms board */
407
408/*
409 * Xsens Technologies BV products (http://www.xsens.com).
410 */
411#define XSENS_CONVERTER_0_PID	0xD388
412#define XSENS_CONVERTER_1_PID	0xD389
413#define XSENS_CONVERTER_2_PID	0xD38A
414#define XSENS_CONVERTER_3_PID	0xD38B
415#define XSENS_CONVERTER_4_PID	0xD38C
416#define XSENS_CONVERTER_5_PID	0xD38D
417#define XSENS_CONVERTER_6_PID	0xD38E
418#define XSENS_CONVERTER_7_PID	0xD38F
419
420/*
421 * Teratronik product ids.
422 * Submitted by O. W�lfelschneider.
423 */
424#define FTDI_TERATRONIK_VCP_PID	 0xEC88	/* Teratronik device (preferring VCP driver on windows) */
425#define FTDI_TERATRONIK_D2XX_PID 0xEC89	/* Teratronik device (preferring D2XX driver on windows) */
426
427/*
428 * Evolution Robotics products (http://www.evolution.com/).
429 * Submitted by Shawn M. Lavelle.
430 */
431#define EVOLUTION_VID		0xDEEE	/* Vendor ID */
432#define EVOLUTION_ER1_PID	0x0300	/* ER1 Control Module */
433
434/* Pyramid Computer GmbH */
435#define FTDI_PYRAMID_PID	0xE6C8	/* Pyramid Appliance Display */
436
437/*
438 * Posiflex inc retail equipment (http://www.posiflex.com.tw)
439 */
440#define POSIFLEX_VID		0x0d3a  /* Vendor ID */
441#define POSIFLEX_PP7000_PID	0x0300  /* PP-7000II thermal printer */
442
443/*
444 * Westrex International devices submitted by Cory Lee
445 */
446#define FTDI_WESTREX_MODEL_777_PID	0xDC00	/* Model 777 */
447#define FTDI_WESTREX_MODEL_8900F_PID	0xDC01	/* Model 8900F */
448
449/*
450 * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
451 */
452#define FTDI_RRCIRKITS_LOCOBUFFER_PID	0xc7d0	/* LocoBuffer USB */
453
454/*
455 * Eclo (http://www.eclo.pt/) product IDs.
456 * PID 0xEA90 submitted by Martin Grill.
457 */
458#define FTDI_ECLO_COM_1WIRE_PID	0xEA90	/* COM to 1-Wire USB adaptor */
459
460/*
461 * Papouch products (http://www.papouch.com/)
462 * Submitted by Folkert van Heusden
463 */
464
465#define PAPOUCH_VID			0x5050	/* Vendor ID */
466#define PAPOUCH_TMU_PID			0x0400	/* TMU USB Thermometer */
467
468/*
469 * ACG Identification Technologies GmbH products (http://www.acg.de/).
470 * Submitted by anton -at- goto10 -dot- org.
471 */
472#define FTDI_ACG_HFDUAL_PID		0xDD20	/* HF Dual ISO Reader (RFID) */
473
474/*
475 * Yost Engineering, Inc. products (www.yostengineering.com).
476 * PID 0xE050 submitted by Aaron Prose.
477 */
478#define FTDI_YEI_SERVOCENTER31_PID	0xE050	/* YEI ServoCenter3.1 USB */
479
480/*
481 * ThorLabs USB motor drivers
482 */
483#define FTDI_THORLABS_PID		0xfaf0 /* ThorLabs USB motor drivers */
484
485/*
486 * Testo products (http://www.testo.com/)
487 * Submitted by Colin Leroy
488 */
489#define TESTO_VID			0x128D
490#define TESTO_USB_INTERFACE_PID		0x0001
491
492/*
493 * Gamma Scout (http://gamma-scout.com/). Submitted by rsc@runtux.com.
494 */
495#define FTDI_GAMMA_SCOUT_PID		0xD678	/* Gamma Scout online */
496
497/*
498 * Tactrix OpenPort (ECU) devices.
499 * OpenPort 1.3M submitted by Donour Sizemore.
500 * OpenPort 1.3S and 1.3U submitted by Ian Abbott.
501 */
502#define FTDI_TACTRIX_OPENPORT_13M_PID	0xCC48	/* OpenPort 1.3 Mitsubishi */
503#define FTDI_TACTRIX_OPENPORT_13S_PID	0xCC49	/* OpenPort 1.3 Subaru */
504#define FTDI_TACTRIX_OPENPORT_13U_PID	0xCC4A	/* OpenPort 1.3 Universal */
505
506/*
507 * Telldus Technologies
508 */
509#define TELLDUS_VID			0x1781	/* Vendor ID */
510#define TELLDUS_TELLSTICK_PID		0x0C30	/* RF control dongle 433 MHz using FT232RL */
511
512/*
513 * IBS elektronik product ids
514 * Submitted by Thomas Schleusener
515 */
516#define FTDI_IBS_US485_PID	0xff38  /* IBS US485 (USB<-->RS422/485 interface) */
517#define FTDI_IBS_PICPRO_PID	0xff39  /* IBS PIC-Programmer */
518#define FTDI_IBS_PCMCIA_PID	0xff3a  /* IBS Card reader for PCMCIA SRAM-cards */
519#define FTDI_IBS_PK1_PID	0xff3b  /* IBS PK1 - Particel counter */
520#define FTDI_IBS_RS232MON_PID	0xff3c  /* IBS RS232 - Monitor */
521#define FTDI_IBS_APP70_PID	0xff3d  /* APP 70 (dust monitoring system) */
522#define FTDI_IBS_PEDO_PID	0xff3e  /* IBS PEDO-Modem (RF modem 868.35 MHz) */
523#define FTDI_IBS_PROD_PID	0xff3f  /* future device */
524
525/*
526 *  MaxStream devices	www.maxstream.net
527 */
528#define FTDI_MAXSTREAM_PID	0xEE18	/* Xbee PKG-U Module */
529
530/* Olimex */
531#define OLIMEX_VID			0x15BA
532#define OLIMEX_ARM_USB_OCD_PID		0x0003
533
534/* Commands */
535#define FTDI_SIO_RESET 		0 /* Reset the port */
536#define FTDI_SIO_MODEM_CTRL 	1 /* Set the modem control register */
537#define FTDI_SIO_SET_FLOW_CTRL	2 /* Set flow control register */
538#define FTDI_SIO_SET_BAUD_RATE	3 /* Set baud rate */
539#define FTDI_SIO_SET_DATA	4 /* Set the data characteristics of the port */
540#define FTDI_SIO_GET_MODEM_STATUS	5 /* Retrieve current value of modern status register */
541#define FTDI_SIO_SET_EVENT_CHAR	6 /* Set the event character */
542#define FTDI_SIO_SET_ERROR_CHAR	7 /* Set the error character */
543#define FTDI_SIO_SET_LATENCY_TIMER	9 /* Set the latency timer */
544#define FTDI_SIO_GET_LATENCY_TIMER	10 /* Get the latency timer */
545
546
547/*
548 *   BmRequestType:  1100 0000b
549 *   bRequest:       FTDI_E2_READ
550 *   wValue:         0
551 *   wIndex:         Address of word to read
552 *   wLength:        2
553 *   Data:           Will return a word of data from E2Address
554 *
555 */
556
557/* Port Identifier Table */
558#define PIT_DEFAULT 		0 /* SIOA */
559#define PIT_SIOA		1 /* SIOA */
560/* The device this driver is tested with one has only one port */
561#define PIT_SIOB		2 /* SIOB */
562#define PIT_PARALLEL		3 /* Parallel */
563
564/* FTDI_SIO_RESET */
565#define FTDI_SIO_RESET_REQUEST FTDI_SIO_RESET
566#define FTDI_SIO_RESET_REQUEST_TYPE 0x40
567#define FTDI_SIO_RESET_SIO 0
568#define FTDI_SIO_RESET_PURGE_RX 1
569#define FTDI_SIO_RESET_PURGE_TX 2
570
571/*
572 * BmRequestType:  0100 0000B
573 * bRequest:       FTDI_SIO_RESET
574 * wValue:         Control Value
575 *                   0 = Reset SIO
576 *                   1 = Purge RX buffer
577 *                   2 = Purge TX buffer
578 * wIndex:         Port
579 * wLength:        0
580 * Data:           None
581 *
582 * The Reset SIO command has this effect:
583 *
584 *    Sets flow control set to 'none'
585 *    Event char = $0D
586 *    Event trigger = disabled
587 *    Purge RX buffer
588 *    Purge TX buffer
589 *    Clear DTR
590 *    Clear RTS
591 *    baud and data format not reset
592 *
593 * The Purge RX and TX buffer commands affect nothing except the buffers
594 *
595   */
596
597/* FTDI_SIO_SET_BAUDRATE */
598#define FTDI_SIO_SET_BAUDRATE_REQUEST_TYPE 0x40
599#define FTDI_SIO_SET_BAUDRATE_REQUEST 3
600
601
602typedef enum {
603	SIO = 1,
604	FT8U232AM = 2,
605	FT232BM = 3,
606	FT2232C = 4,
607	FT232RL = 5,
608} ftdi_chip_type_t;
609
610typedef enum {
611 ftdi_sio_b300 = 0,
612 ftdi_sio_b600 = 1,
613 ftdi_sio_b1200 = 2,
614 ftdi_sio_b2400 = 3,
615 ftdi_sio_b4800 = 4,
616 ftdi_sio_b9600 = 5,
617 ftdi_sio_b19200 = 6,
618 ftdi_sio_b38400 = 7,
619 ftdi_sio_b57600 = 8,
620 ftdi_sio_b115200 = 9
621} FTDI_SIO_baudrate_t ;
622
623/*
624 * The ftdi_8U232AM_xxMHz_byyy constants have been removed. The encoded divisor values
625 * are calculated internally.
626 */
627
628#define FTDI_SIO_SET_DATA_REQUEST FTDI_SIO_SET_DATA
629#define FTDI_SIO_SET_DATA_REQUEST_TYPE 0x40
630#define FTDI_SIO_SET_DATA_PARITY_NONE (0x0 << 8 )
631#define FTDI_SIO_SET_DATA_PARITY_ODD (0x1 << 8 )
632#define FTDI_SIO_SET_DATA_PARITY_EVEN (0x2 << 8 )
633#define FTDI_SIO_SET_DATA_PARITY_MARK (0x3 << 8 )
634#define FTDI_SIO_SET_DATA_PARITY_SPACE (0x4 << 8 )
635#define FTDI_SIO_SET_DATA_STOP_BITS_1 (0x0 << 11 )
636#define FTDI_SIO_SET_DATA_STOP_BITS_15 (0x1 << 11 )
637#define FTDI_SIO_SET_DATA_STOP_BITS_2 (0x2 << 11 )
638#define FTDI_SIO_SET_BREAK (0x1 << 14)
639/* FTDI_SIO_SET_DATA */
640
641/*
642 * BmRequestType:  0100 0000B
643 * bRequest:       FTDI_SIO_SET_DATA
644 * wValue:         Data characteristics (see below)
645 * wIndex:         Port
646 * wLength:        0
647 * Data:           No
648 *
649 * Data characteristics
650 *
651 *   B0..7   Number of data bits
652 *   B8..10  Parity
653 *           0 = None
654 *           1 = Odd
655 *           2 = Even
656 *           3 = Mark
657 *           4 = Space
658 *   B11..13 Stop Bits
659 *           0 = 1
660 *           1 = 1.5
661 *           2 = 2
662 *   B14
663 *           1 = TX ON (break)
664 *           0 = TX OFF (normal state)
665 *   B15 Reserved
666 *
667 */
668
669
670
671/* FTDI_SIO_MODEM_CTRL */
672#define FTDI_SIO_SET_MODEM_CTRL_REQUEST_TYPE 0x40
673#define FTDI_SIO_SET_MODEM_CTRL_REQUEST FTDI_SIO_MODEM_CTRL
674
675/*
676 * BmRequestType:   0100 0000B
677 * bRequest:        FTDI_SIO_MODEM_CTRL
678 * wValue:          ControlValue (see below)
679 * wIndex:          Port
680 * wLength:         0
681 * Data:            None
682 *
683 * NOTE: If the device is in RTS/CTS flow control, the RTS set by this
684 * command will be IGNORED without an error being returned
685 * Also - you can not set DTR and RTS with one control message
686 */
687
688#define FTDI_SIO_SET_DTR_MASK 0x1
689#define FTDI_SIO_SET_DTR_HIGH ( 1 | ( FTDI_SIO_SET_DTR_MASK  << 8))
690#define FTDI_SIO_SET_DTR_LOW  ( 0 | ( FTDI_SIO_SET_DTR_MASK  << 8))
691#define FTDI_SIO_SET_RTS_MASK 0x2
692#define FTDI_SIO_SET_RTS_HIGH ( 2 | ( FTDI_SIO_SET_RTS_MASK << 8 ))
693#define FTDI_SIO_SET_RTS_LOW ( 0 | ( FTDI_SIO_SET_RTS_MASK << 8 ))
694
695/*
696 * ControlValue
697 * B0    DTR state
698 *          0 = reset
699 *          1 = set
700 * B1    RTS state
701 *          0 = reset
702 *          1 = set
703 * B2..7 Reserved
704 * B8    DTR state enable
705 *          0 = ignore
706 *          1 = use DTR state
707 * B9    RTS state enable
708 *          0 = ignore
709 *          1 = use RTS state
710 * B10..15 Reserved
711 */
712
713/* FTDI_SIO_SET_FLOW_CTRL */
714#define FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE 0x40
715#define FTDI_SIO_SET_FLOW_CTRL_REQUEST FTDI_SIO_SET_FLOW_CTRL
716#define FTDI_SIO_DISABLE_FLOW_CTRL 0x0
717#define FTDI_SIO_RTS_CTS_HS (0x1 << 8)
718#define FTDI_SIO_DTR_DSR_HS (0x2 << 8)
719#define FTDI_SIO_XON_XOFF_HS (0x4 << 8)
720/*
721 *   BmRequestType:  0100 0000b
722 *   bRequest:       FTDI_SIO_SET_FLOW_CTRL
723 *   wValue:         Xoff/Xon
724 *   wIndex:         Protocol/Port - hIndex is protocl / lIndex is port
725 *   wLength:        0
726 *   Data:           None
727 *
728 * hIndex protocol is:
729 *   B0 Output handshaking using RTS/CTS
730 *       0 = disabled
731 *       1 = enabled
732 *   B1 Output handshaking using DTR/DSR
733 *       0 = disabled
734 *       1 = enabled
735 *   B2 Xon/Xoff handshaking
736 *       0 = disabled
737 *       1 = enabled
738 *
739 * A value of zero in the hIndex field disables handshaking
740 *
741 * If Xon/Xoff handshaking is specified, the hValue field should contain the XOFF character
742 * and the lValue field contains the XON character.
743 */
744
745/*
746 * FTDI_SIO_GET_LATENCY_TIMER
747 *
748 * Set the timeout interval. The FTDI collects data from the slave
749 * device, transmitting it to the host when either A) 62 bytes are
750 * received, or B) the timeout interval has elapsed and the buffer
751 * contains at least 1 byte.  Setting this value to a small number
752 * can dramatically improve performance for applications which send
753 * small packets, since the default value is 16ms.
754 */
755#define  FTDI_SIO_GET_LATENCY_TIMER_REQUEST FTDI_SIO_GET_LATENCY_TIMER
756#define  FTDI_SIO_GET_LATENCY_TIMER_REQUEST_TYPE 0xC0
757
758/*
759 *  BmRequestType:   1100 0000b
760 *  bRequest:        FTDI_SIO_GET_LATENCY_TIMER
761 *  wValue:          0
762 *  wIndex:          Port
763 *  wLength:         0
764 *  Data:            latency (on return)
765 */
766
767/*
768 * FTDI_SIO_SET_LATENCY_TIMER
769 *
770 * Set the timeout interval. The FTDI collects data from the slave
771 * device, transmitting it to the host when either A) 62 bytes are
772 * received, or B) the timeout interval has elapsed and the buffer
773 * contains at least 1 byte.  Setting this value to a small number
774 * can dramatically improve performance for applications which send
775 * small packets, since the default value is 16ms.
776 */
777#define  FTDI_SIO_SET_LATENCY_TIMER_REQUEST FTDI_SIO_SET_LATENCY_TIMER
778#define  FTDI_SIO_SET_LATENCY_TIMER_REQUEST_TYPE 0x40
779
780/*
781 *  BmRequestType:   0100 0000b
782 *  bRequest:        FTDI_SIO_SET_LATENCY_TIMER
783 *  wValue:          Latency (milliseconds)
784 *  wIndex:          Port
785 *  wLength:         0
786 *  Data:            None
787 *
788 * wValue:
789 *   B0..7   Latency timer
790 *   B8..15  0
791 *
792 */
793
794/*
795 * FTDI_SIO_SET_EVENT_CHAR
796 *
797 * Set the special event character for the specified communications port.
798 * If the device sees this character it will immediately return the
799 * data read so far - rather than wait 40ms or until 62 bytes are read
800 * which is what normally happens.
801 */
802
803
804#define  FTDI_SIO_SET_EVENT_CHAR_REQUEST FTDI_SIO_SET_EVENT_CHAR
805#define  FTDI_SIO_SET_EVENT_CHAR_REQUEST_TYPE 0x40
806
807
808/*
809 *  BmRequestType:   0100 0000b
810 *  bRequest:        FTDI_SIO_SET_EVENT_CHAR
811 *  wValue:          EventChar
812 *  wIndex:          Port
813 *  wLength:         0
814 *  Data:            None
815 *
816 * wValue:
817 *   B0..7   Event Character
818 *   B8      Event Character Processing
819 *             0 = disabled
820 *             1 = enabled
821 *   B9..15  Reserved
822 *
823 */
824
825/* FTDI_SIO_SET_ERROR_CHAR */
826
827/* Set the parity error replacement character for the specified communications port */
828
829/*
830 *  BmRequestType:  0100 0000b
831 *  bRequest:       FTDI_SIO_SET_EVENT_CHAR
832 *  wValue:         Error Char
833 *  wIndex:         Port
834 *  wLength:        0
835 *  Data:           None
836 *
837 *Error Char
838 *  B0..7  Error Character
839 *  B8     Error Character Processing
840 *           0 = disabled
841 *           1 = enabled
842 *  B9..15 Reserved
843 *
844 */
845
846/* FTDI_SIO_GET_MODEM_STATUS */
847/* Retrieve the current value of the modem status register */
848
849#define FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE 0xc0
850#define FTDI_SIO_GET_MODEM_STATUS_REQUEST FTDI_SIO_GET_MODEM_STATUS
851#define FTDI_SIO_CTS_MASK 0x10
852#define FTDI_SIO_DSR_MASK 0x20
853#define FTDI_SIO_RI_MASK  0x40
854#define FTDI_SIO_RLSD_MASK 0x80
855/*
856 *   BmRequestType:   1100 0000b
857 *   bRequest:        FTDI_SIO_GET_MODEM_STATUS
858 *   wValue:          zero
859 *   wIndex:          Port
860 *   wLength:         1
861 *   Data:            Status
862 *
863 * One byte of data is returned
864 * B0..3 0
865 * B4    CTS
866 *         0 = inactive
867 *         1 = active
868 * B5    DSR
869 *         0 = inactive
870 *         1 = active
871 * B6    Ring Indicator (RI)
872 *         0 = inactive
873 *         1 = active
874 * B7    Receive Line Signal Detect (RLSD)
875 *         0 = inactive
876 *         1 = active
877 */
878
879
880
881/* Descriptors returned by the device
882 *
883 *  Device Descriptor
884 *
885 * Offset	Field		Size	Value	Description
886 * 0	bLength		1	0x12	Size of descriptor in bytes
887 * 1	bDescriptorType	1	0x01	DEVICE Descriptor Type
888 * 2	bcdUSB		2	0x0110	USB Spec Release Number
889 * 4	bDeviceClass	1	0x00	Class Code
890 * 5	bDeviceSubClass	1	0x00	SubClass Code
891 * 6	bDeviceProtocol	1	0x00	Protocol Code
892 * 7	bMaxPacketSize0 1	0x08	Maximum packet size for endpoint 0
893 * 8	idVendor	2	0x0403	Vendor ID
894 * 10	idProduct	2	0x8372	Product ID (FTDI_SIO_PID)
895 * 12	bcdDevice	2	0x0001	Device release number
896 * 14	iManufacturer	1	0x01	Index of man. string desc
897 * 15	iProduct	1	0x02	Index of prod string desc
898 * 16	iSerialNumber	1	0x02	Index of serial nmr string desc
899 * 17	bNumConfigurations 1    0x01	Number of possible configurations
900 *
901 * Configuration Descriptor
902 *
903 * Offset	Field			Size	Value
904 * 0	bLength			1	0x09	Size of descriptor in bytes
905 * 1	bDescriptorType		1	0x02	CONFIGURATION Descriptor Type
906 * 2	wTotalLength		2	0x0020	Total length of data
907 * 4	bNumInterfaces		1	0x01	Number of interfaces supported
908 * 5	bConfigurationValue	1	0x01	Argument for SetCOnfiguration() req
909 * 6	iConfiguration		1	0x02	Index of config string descriptor
910 * 7	bmAttributes		1	0x20	Config characteristics Remote Wakeup
911 * 8	MaxPower		1	0x1E	Max power consumption
912 *
913 * Interface Descriptor
914 *
915 * Offset	Field			Size	Value
916 * 0	bLength			1	0x09	Size of descriptor in bytes
917 * 1	bDescriptorType		1	0x04	INTERFACE Descriptor Type
918 * 2	bInterfaceNumber	1	0x00	Number of interface
919 * 3	bAlternateSetting	1	0x00	Value used to select alternate
920 * 4	bNumEndpoints		1	0x02	Number of endpoints
921 * 5	bInterfaceClass		1	0xFF	Class Code
922 * 6	bInterfaceSubClass	1	0xFF	Subclass Code
923 * 7	bInterfaceProtocol	1	0xFF	Protocol Code
924 * 8	iInterface		1	0x02	Index of interface string description
925 *
926 * IN Endpoint Descriptor
927 *
928 * Offset	Field			Size	Value
929 * 0	bLength			1	0x07	Size of descriptor in bytes
930 * 1	bDescriptorType		1	0x05	ENDPOINT descriptor type
931 * 2	bEndpointAddress	1	0x82	Address of endpoint
932 * 3	bmAttributes		1	0x02	Endpoint attributes - Bulk
933 * 4	bNumEndpoints		2	0x0040	maximum packet size
934 * 5	bInterval		1	0x00	Interval for polling endpoint
935 *
936 * OUT Endpoint Descriptor
937 *
938 * Offset	Field			Size	Value
939 * 0	bLength			1	0x07	Size of descriptor in bytes
940 * 1	bDescriptorType		1	0x05	ENDPOINT descriptor type
941 * 2	bEndpointAddress	1	0x02	Address of endpoint
942 * 3	bmAttributes		1	0x02	Endpoint attributes - Bulk
943 * 4	bNumEndpoints		2	0x0040	maximum packet size
944 * 5	bInterval		1	0x00	Interval for polling endpoint
945 *
946 * DATA FORMAT
947 *
948 * IN Endpoint
949 *
950 * The device reserves the first two bytes of data on this endpoint to contain the current
951 * values of the modem and line status registers. In the absence of data, the device
952 * generates a message consisting of these two status bytes every 40 ms
953 *
954 * Byte 0: Modem Status
955 *
956 * Offset	Description
957 * B0	Reserved - must be 1
958 * B1	Reserved - must be 0
959 * B2	Reserved - must be 0
960 * B3	Reserved - must be 0
961 * B4	Clear to Send (CTS)
962 * B5	Data Set Ready (DSR)
963 * B6	Ring Indicator (RI)
964 * B7	Receive Line Signal Detect (RLSD)
965 *
966 * Byte 1: Line Status
967 *
968 * Offset	Description
969 * B0	Data Ready (DR)
970 * B1	Overrun Error (OE)
971 * B2	Parity Error (PE)
972 * B3	Framing Error (FE)
973 * B4	Break Interrupt (BI)
974 * B5	Transmitter Holding Register (THRE)
975 * B6	Transmitter Empty (TEMT)
976 * B7	Error in RCVR FIFO
977 *
978 */
979#define FTDI_RS0_CTS	(1 << 4)
980#define FTDI_RS0_DSR	(1 << 5)
981#define FTDI_RS0_RI	(1 << 6)
982#define FTDI_RS0_RLSD	(1 << 7)
983
984#define FTDI_RS_DR  1
985#define FTDI_RS_OE (1<<1)
986#define FTDI_RS_PE (1<<2)
987#define FTDI_RS_FE (1<<3)
988#define FTDI_RS_BI (1<<4)
989#define FTDI_RS_THRE (1<<5)
990#define FTDI_RS_TEMT (1<<6)
991#define FTDI_RS_FIFO  (1<<7)
992
993/*
994 * OUT Endpoint
995 *
996 * This device reserves the first bytes of data on this endpoint contain the length
997 * and port identifier of the message. For the FTDI USB Serial converter the port
998 * identifier is always 1.
999 *
1000 * Byte 0: Line Status
1001 *
1002 * Offset	Description
1003 * B0	Reserved - must be 1
1004 * B1	Reserved - must be 0
1005 * B2..7	Length of message - (not including Byte 0)
1006 *
1007 */
1008