1 enum { 2 /* used by devices which don't provide their own Vid */ 3 FTVid = 0x0403, 4 5 FTSheevaVid = 0x9E88, 6 FTSheevaDid = 0x9E8F, 7 FTOpenRDUltDid = 0x9E90, 8 9 FTSIODid = 0x8372, /* Product Id SIO appl'n of 8U100AX */ 10 FT8U232AMDid = 0x6001, /* Similar device to SIO above */ 11 FT8U232AMALTDid = 0x6006, /* FT's alternate Did for above*/ 12 FT8U2232CDid = 0x6010, /* Dual channel device */ 13 FTRELAISDid = 0xFA10, /* Relais device */ 14 15 /* NF reader */ 16 FTNFRICVid = 0x0DCD, 17 FTNFRICDid = 0x0001, 18 19 FTACTZWAVEDid = 0xF2D0, /* www.irtrans.de device */ 20 21 /* 22 * ACT Solutions HomePro ZWave interface 23 * http://www.act-solutions.com/HomePro.htm) 24 */ 25 FTIRTRANSDid = 0xFC60, 26 27 /* 28 * www.thoughttechnology.com/ TT-USB 29 */ 30 FTTTUSBDid = 0xFF20, 31 32 /* iPlus device */ 33 FTIPLUSDid = 0xD070, 34 35 /* www.crystalfontz.com devices */ 36 FTXF632Did = 0xFC08, /* 632: 16x2 Character Display */ 37 FTXF634Did = 0xFC09, /* 634: 20x4 Character Display */ 38 FTXF547Did = 0xFC0A, /* 547: Two line Display */ 39 FTXF633Did = 0xFC0B, /* 633: 16x2 Character Display with Keys */ 40 FTXF631Did = 0xFC0C, /* 631: 20x2 Character Display */ 41 FTXF635Did = 0xFC0D, /* 635: 20x4 Character Display */ 42 FTXF640Did = 0xFC0E, /* 640: Two line Display */ 43 FTXF642Did = 0xFC0F, /* 642: Two line Display */ 44 45 /* 46 * Video Networks Limited / Homechoice in the UK 47 * use an ftdi-based device for their 1Mb broadband 48 */ 49 FTVNHCPCUSBDDid = 0xfe38, 50 51 /* 52 * PCDJ use ftdi based dj-controllers 53 * DAC-2 device http://www.pcdjhardware.com/DAC2.asp 54 */ 55 FTPCDJDAC2Did = 0xFA88, 56 57 /* 58 * Matrix Orbital LCD displays, 59 * which are the FT232BM (similar to the 8U232AM) 60 */ 61 FTMTXORB0Did = 0xFA00, 62 FTMTXORB1Did = 0xFA01, 63 FTMTXORB2Did = 0xFA02, 64 FTMTXORB3Did = 0xFA03, 65 FTMTXORB4Did = 0xFA04, 66 FTMTXORB5Did = 0xFA05, 67 FTMTXORB6Did = 0xFA06, 68 69 /* Interbiometrics USB I/O Board */ 70 INTERBIOMVid = 0x1209, 71 INTERBIOMIOBRDDid = 0x1002, 72 INTERBIOMMINIIOBRDDid = 0x1006, 73 74 /* 75 * The following are the values for the Perle Systems 76 * UltraPort USB serial converters 77 */ 78 FTPERLEULTRAPORTDid = 0xF0C0, 79 80 /* 81 * Sealevel SeaLINK+ adapters. 82 */ 83 84 SEALEVELVid = 0x0c52, 85 86 SEALEVEL2101Did = 0x2101, /* SeaLINK+232 (2101/2105) */ 87 SEALEVEL2102Did = 0x2102, /* SeaLINK+485 (2102) */ 88 SEALEVEL2103Did = 0x2103, /* SeaLINK+232I (2103) */ 89 SEALEVEL2104Did = 0x2104, /* SeaLINK+485I (2104) */ 90 SEALEVEL22011Did = 0x2211, /* SeaPORT+2/232 (2201) Port 1 */ 91 SEALEVEL22012Did = 0x2221, /* SeaPORT+2/232 (2201) Port 2 */ 92 SEALEVEL22021Did = 0x2212, /* SeaPORT+2/485 (2202) Port 1 */ 93 SEALEVEL22022Did = 0x2222, /* SeaPORT+2/485 (2202) Port 2 */ 94 SEALEVEL22031Did = 0x2213, /* SeaPORT+2 (2203) Port 1 */ 95 SEALEVEL22032Did = 0x2223, /* SeaPORT+2 (2203) Port 2 */ 96 SEALEVEL24011Did = 0x2411, /* SeaPORT+4/232 (2401) Port 1 */ 97 SEALEVEL24012Did = 0x2421, /* SeaPORT+4/232 (2401) Port 2 */ 98 SEALEVEL24013Did = 0x2431, /* SeaPORT+4/232 (2401) Port 3 */ 99 SEALEVEL24014Did = 0x2441, /* SeaPORT+4/232 (2401) Port 4 */ 100 SEALEVEL24021Did = 0x2412, /* SeaPORT+4/485 (2402) Port 1 */ 101 SEALEVEL24022Did = 0x2422, /* SeaPORT+4/485 (2402) Port 2 */ 102 SEALEVEL24023Did = 0x2432, /* SeaPORT+4/485 (2402) Port 3 */ 103 SEALEVEL24024Did = 0x2442, /* SeaPORT+4/485 (2402) Port 4 */ 104 SEALEVEL24031Did = 0x2413, /* SeaPORT+4 (2403) Port 1 */ 105 SEALEVEL24032Did = 0x2423, /* SeaPORT+4 (2403) Port 2 */ 106 SEALEVEL24033Did = 0x2433, /* SeaPORT+4 (2403) Port 3 */ 107 SEALEVEL24034Did = 0x2443, /* SeaPORT+4 (2403) Port 4 */ 108 SEALEVEL28011Did = 0x2811, /* SeaLINK+8/232 (2801) Port 1 */ 109 SEALEVEL28012Did = 0x2821, /* SeaLINK+8/232 (2801) Port 2 */ 110 SEALEVEL28013Did = 0x2831, /* SeaLINK+8/232 (2801) Port 3 */ 111 SEALEVEL28014Did = 0x2841, /* SeaLINK+8/232 (2801) Port 4 */ 112 SEALEVEL28015Did = 0x2851, /* SeaLINK+8/232 (2801) Port 5 */ 113 SEALEVEL28016Did = 0x2861, /* SeaLINK+8/232 (2801) Port 6 */ 114 SEALEVEL28017Did = 0x2871, /* SeaLINK+8/232 (2801) Port 7 */ 115 SEALEVEL28018Did = 0x2881, /* SeaLINK+8/232 (2801) Port 8 */ 116 SEALEVEL28021Did = 0x2812, /* SeaLINK+8/485 (2802) Port 1 */ 117 SEALEVEL28022Did = 0x2822, /* SeaLINK+8/485 (2802) Port 2 */ 118 SEALEVEL28023Did = 0x2832, /* SeaLINK+8/485 (2802) Port 3 */ 119 SEALEVEL28024Did = 0x2842, /* SeaLINK+8/485 (2802) Port 4 */ 120 SEALEVEL28025Did = 0x2852, /* SeaLINK+8/485 (2802) Port 5 */ 121 SEALEVEL28026Did = 0x2862, /* SeaLINK+8/485 (2802) Port 6 */ 122 SEALEVEL28027Did = 0x2872, /* SeaLINK+8/485 (2802) Port 7 */ 123 SEALEVEL28028Did = 0x2882, /* SeaLINK+8/485 (2802) Port 8 */ 124 SEALEVEL28031Did = 0x2813, /* SeaLINK+8 (2803) Port 1 */ 125 SEALEVEL28032Did = 0x2823, /* SeaLINK+8 (2803) Port 2 */ 126 SEALEVEL28033Did = 0x2833, /* SeaLINK+8 (2803) Port 3 */ 127 SEALEVEL28034Did = 0x2843, /* SeaLINK+8 (2803) Port 4 */ 128 SEALEVEL28035Did = 0x2853, /* SeaLINK+8 (2803) Port 5 */ 129 SEALEVEL28036Did = 0x2863, /* SeaLINK+8 (2803) Port 6 */ 130 SEALEVEL28037Did = 0x2873, /* SeaLINK+8 (2803) Port 7 */ 131 SEALEVEL28038Did = 0x2883, /* SeaLINK+8 (2803) Port 8 */ 132 133 /* KOBIL Vendor ID chipcard terminals */ 134 KOBILVid = 0x0d46, 135 KOBILCONVB1Did = 0x2020, /* KOBIL Konverter for B1 */ 136 KOBILCONVKAANDid = 0x2021, /* KOBILKonverter for KAAN */ 137 138 /* Icom ID-1 digital transceiver */ 139 ICOMID1Vid = 0x0C26, 140 ICOMID1Did = 0x0004, 141 142 FTASKRDR400Did = 0xC991, /* ASK RDR 400 series card reader */ 143 FTDSS20Did = 0xFC82, /* DSS-20 Sync Station for Sony Ericsson P800 */ 144 145 /* 146 * Home Electronics (www.home-electro.com) USB gadgets 147 */ 148 FTHETIRA1Did = 0xFA78, /* Tira-1 IR transceiver */ 149 150 /* 151 * An infrared receiver and transmitter using the 8U232AM chip 152 * http://www.usbuirt.com 153 */ 154 FTUSBUIRTDid = 0xF850, 155 156 FTELVUR100Did = 0xFB58, /* USB-RS232-Umsetzer (UR 100) */ 157 FTELVUM100Did = 0xFB5A, /* USB-Modul UM 100 */ 158 FTELVUO100Did = 0xFB5B, /* USB-Modul UO 100 */ 159 FTELVALC8500Did = 0xF06E, /* ALC 8500 Expert */ 160 FTELVCLI7000Did = 0xFB59, /* Computer-Light-Interface */ 161 FTELVPPS7330Did = 0xFB5C, /* Processor-Power-Supply (PPS 7330) */ 162 FTELVTFM100Did = 0xFB5D, /* Temperartur-Feuchte Messgeraet (TFM 100) */ 163 FTELVUDF77Did = 0xFB5E, /* USB DCF Funkurh (UDF 77) */ 164 FTELVUIO88Did = 0xFB5F, /* USB-I/O Interface (UIO 88) */ 165 FTELVUAD8Did = 0xF068, /* USB-AD-Wandler (UAD 8) */ 166 FTELVUDA7Did = 0xF069, /* USB-DA-Wandler (UDA 7) */ 167 FTELVUSI2Did = 0xF06A, /* USB-Schrittmotoren-Interface (USI 2) */ 168 FTELVT1100Did = 0xF06B, /* Thermometer (T 1100) */ 169 FTELVPCD200Did = 0xF06C, /* PC-Datenlogger (PCD 200) */ 170 FTELVULA200Did = 0xF06D, /* USB-LCD-Ansteuerung (ULA 200) */ 171 FTELVFHZ1000PCDid= 0xF06F, /* FHZ 1000 PC */ 172 FTELVCSI8Did = 0xE0F0, /* Computer-Schalt-Interface (CSI 8) */ 173 FTELVEM1000DLDid= 0xE0F1, /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */ 174 FTELVPCK100Did = 0xE0F2, /* PC-Kabeltester (PCK 100) */ 175 FTELVRFP500Did = 0xE0F3, /* HF-Leistungsmesser (RFP 500) */ 176 FTELVFS20SIGDid = 0xE0F4, /* Signalgeber (FS 20 SIG) */ 177 FTELVWS300PCDid = 0xE0F6, /* PC-Wetterstation (WS 300 PC) */ 178 FTELVFHZ1300PCDid= 0xE0E8, /* FHZ 1300 PC */ 179 FTELVWS500Did = 0xE0E9, /* PC-Wetterstation (WS 500) */ 180 181 /* 182 * Definitions for ID TECH (http://www.idt-net.com) devices 183 */ 184 IDTECHVid = 0x0ACD, /* ID TECH Vendor ID */ 185 IDTECHIDT1221UDid= 0x0300, /* IDT1221U USB to RS-232 */ 186 187 /* 188 * Definitions for Omnidirectional Control Technology, Inc. devices 189 */ 190 OCTVid = 0x0B39, /* OCT vendor ID */ 191 192 /* 193 * Note: OCT US101 is also rebadged as Dick Smith Electronics 194 * (NZ) XH6381, Dick Smith Electronics (Aus) XH6451, and SIIG 195 * Inc. model US2308 hardware version 1. 196 */ 197 OCTUS101Did = 0x0421, /* OCT US101 USB to RS-232 */ 198 199 /* 200 * infrared receiver for access control with IR tags 201 */ 202 FTPIEGROUPDid = 0xF208, 203 204 /* 205 * Definitions for Artemis astronomical USB based cameras 206 * http://www.artemisccd.co.uk/ 207 */ 208 209 FTARTEMISDid = 0xDF28, /* All Artemis Cameras */ 210 211 FTATIKATK16Did = 0xDF30, /* ATIK ATK-16 Grayscale Camera */ 212 FTATIKATK16CDid = 0xDF32, /* ATIK ATK-16C Colour Camera */ 213 FTATIKATK16HRDid= 0xDF31, /* ATIK ATK-16HR Grayscale */ 214 FTATIKATK16HRCDid= 0xDF33, /* ATIK ATK-16HRC Colour Camera */ 215 216 /* 217 * Protego products 218 */ 219 PROTEGOSPECIAL1 = 0xFC70, /* special/unknown device */ 220 PROTEGOR2X0 = 0xFC71, /* R200-USB TRNG unit (R210, R220, and R230) */ 221 PROTEGOSPECIAL3 = 0xFC72, /* special/unknown device */ 222 PROTEGOSPECIAL4 = 0xFC73, /* special/unknown device */ 223 224 /* 225 * Gude Analog- und Digitalsysteme GmbH 226 */ 227 FTGUDEADSE808Did = 0xE808, 228 FTGUDEADSE809Did = 0xE809, 229 FTGUDEADSE80ADid = 0xE80A, 230 FTGUDEADSE80BDid = 0xE80B, 231 FTGUDEADSE80CDid = 0xE80C, 232 FTGUDEADSE80DDid = 0xE80D, 233 FTGUDEADSE80EDid = 0xE80E, 234 FTGUDEADSE80FDid = 0xE80F, 235 FTGUDEADSE888Did = 0xE888, /* Expert ISDN Control USB */ 236 FTGUDEADSE889Did = 0xE889, /* USB RS-232 OptoBridge */ 237 FTGUDEADSE88ADid = 0xE88A, 238 FTGUDEADSE88BDid = 0xE88B, 239 FTGUDEADSE88CDid = 0xE88C, 240 FTGUDEADSE88DDid = 0xE88D, 241 FTGUDEADSE88EDid = 0xE88E, 242 FTGUDEADSE88FDid = 0xE88F, 243 244 /* 245 * Linx Technologies 246 */ 247 LINXSDMUSBQSSDid= 0xF448, /* Linx SDM-USB-QS-S */ 248 LINXMASTERDEVEL2Did= 0xF449, /* Linx Master Development.0 */ 249 LINXFUTURE0Did = 0xF44A, /* Linx future device */ 250 LINXFUTURE1Did = 0xF44B, /* Linx future device */ 251 LINXFUTURE2Did = 0xF44C, /* Linx future device */ 252 253 /* 254 * CCS Inc. ICDU/ICDU40 - the FT232BM used in a in-circuit-debugger 255 * unit for PIC16's/PIC18's 256 */ 257 FTCCSICDU200Did = 0xF9D0, 258 FTCCSICDU401Did = 0xF9D1, 259 260 /* Inside Accesso contactless reader (http://www.insidefr.com) */ 261 INSIDEACCESSO = 0xFAD0, 262 263 /* 264 * Intrepid Control Systems (http://www.intrepidcs.com/) 265 * ValueCAN and NeoVI 266 */ 267 INTREDidVid = 0x093C, 268 INTREDidVALUECANDid= 0x0601, 269 INTREDidNEOVIDid= 0x0701, 270 271 /* 272 * Falcom Wireless Communications GmbH 273 */ 274 FALCOMVid = 0x0F94, 275 FALCOMTWISTDid = 0x0001, /* Falcom Twist USB GPRS modem */ 276 FALCOMSAMBADid = 0x0005, /* Falcom Samba USB GPRS modem */ 277 278 /* 279 * SUUNTO 280 */ 281 FTSUUNTOSPORTSDid= 0xF680, /* Suunto Sports instrument */ 282 283 /* 284 * B&B Electronics 285 */ 286 BANDBVid = 0x0856, /* B&B Electronics Vendor ID */ 287 BANDBUSOTL4Did = 0xAC01, /* USOTL4 Isolated RS-485 */ 288 BANDBUSTL4Did = 0xAC02, /* USTL4 RS-485 Converter */ 289 BANDBUSO9ML2Did = 0xAC03, /* USO9ML2 Isolated RS-232 */ 290 291 /* 292 * RM Michaelides CANview USB (http://www.rmcan.com) 293 * CAN fieldbus interface adapter 294 */ 295 FTRMCANVIEWDid = 0xfd60, 296 297 /* 298 * EVER Eco Pro UPS (http://www.ever.com.pl/) 299 */ 300 EVERECOPROCDSDid = 0xe520, /* RS-232 converter */ 301 302 /* 303 * 4N-GALAXY.DE PIDs for CAN-USB, USB-RS232, USB-RS422, USB-RS485, 304 * USB-TTY activ, USB-TTY passiv. Some PIDs are used by several devices 305 */ 306 FT4NGALAXYDE0Did = 0x8372, 307 FT4NGALAXYDE1Did = 0xF3C0, 308 FT4NGALAXYDE2Did = 0xF3C1, 309 310 /* 311 * Mobility Electronics products. 312 */ 313 MOBILITYVid = 0x1342, 314 MOBILITYUSBSERIALDid= 0x0202, /* EasiDock USB 200 serial */ 315 316 /* 317 * microHAM product IDs (http://www.microham.com) 318 */ 319 FTMHAMKWDid = 0xEEE8, /* USB-KW interface */ 320 FTMHAMYSDid = 0xEEE9, /* USB-YS interface */ 321 FTMHAMY6Did = 0xEEEA, /* USB-Y6 interface */ 322 FTMHAMY8Did = 0xEEEB, /* USB-Y8 interface */ 323 FTMHAMICDid = 0xEEEC, /* USB-IC interface */ 324 FTMHAMDB9Did = 0xEEED, /* USB-DB9 interface */ 325 FTMHAMRS232Did = 0xEEEE, /* USB-RS232 interface */ 326 FTMHAMY9Did = 0xEEEF, /* USB-Y9 interface */ 327 328 /* 329 * Active Robots product ids. 330 */ 331 FTACTIVEROBOTSDid = 0xE548, /* USB comms board */ 332 XSENSCONVERTER0Did = 0xD388, 333 XSENSCONVERTER1Did = 0xD389, 334 XSENSCONVERTER2Did = 0xD38A, 335 XSENSCONVERTER3Did = 0xD38B, 336 XSENSCONVERTER4Did = 0xD38C, 337 XSENSCONVERTER5Did = 0xD38D, 338 XSENSCONVERTER6Did = 0xD38E, 339 XSENSCONVERTER7Did = 0xD38F, 340 341 /* 342 * Xsens Technologies BV products (http://www.xsens.com). 343 */ 344 FTTERATRONIKVCPDid = 0xEC88, /* Teratronik device */ 345 FTTERATRONIKD2XXDid = 0xEC89, /* Teratronik device */ 346 347 /* 348 * Evolution Robotics products (http://www.evolution.com/). 349 */ 350 EVOLUTIONVid = 0xDEEE, 351 EVOLUTIONER1Did = 0x0300, /* ER1 Control Module */ 352 353 /* Pyramid Computer GmbH */ 354 FTPYRAMIDDid = 0xE6C8, /* Pyramid Appliance Display */ 355 356 /* 357 * Posiflex inc retail equipment (http://www.posiflex.com.tw) 358 */ 359 POSIFLEXVid = 0x0d3a, 360 POSIFLEXPP7000Did= 0x0300, /* PP-7000II thermal printer */ 361 362 /* 363 * Westrex International devices 364 */ 365 FTWESTREXMODEL777Did = 0xDC00, /* Model 777 */ 366 FTWESTREXMODEL8900FDid = 0xDC01, /* Model 8900F */ 367 368 /* 369 * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com) 370 */ 371 FTRRCIRKITSLOCOBUFFERDid= 0xc7d0, /* LocoBuffer USB */ 372 FTECLOCOM1WIREDid = 0xEA90, /* COM to 1-Wire USB */ 373 374 /* 375 * Papouch products (http://www.papouch.com/) 376 */ 377 PAPOUCHVid = 0x5050, 378 PAPOUCHTMUDid = 0x0400, /* TMU USB Thermometer */ 379 380 /* 381 * ACG Identification Technologies GmbH products http://www.acg.de/ 382 */ 383 FTACGHFDUALDid = 0xDD20, /* HF Dual ISO Reader (RFID) */ 384 /* 385 * new high speed devices 386 */ 387 FT4232HDid = 0x6011, /* FTDI FT4232H based device */ 388 389 /* 390 * Amontec JTAGkey (http://www.amontec.com/) 391 */ 392 AMONKEYDid = 0xCFF8, 393 }; 394 395 /* Commands */ 396 enum { 397 FTRESET = 0, /* Reset the port */ 398 FTSETMODEMCTRL, /* Set the modem control register */ 399 FTSETFLOWCTRL, /* Set flow control register */ 400 FTSETBAUDRATE, /* Set baud rate */ 401 FTSETDATA, /* Set the parameters, parity */ 402 FTGETMODEMSTATUS, /* Retrieve current value of modem ctl */ 403 FTSETEVENTCHAR, /* Set the event character */ 404 FTSETERRORCHAR, /* Set the error character */ 405 FTUNKNOWN, 406 FTSETLATENCYTIMER, /* Set the latency timer */ 407 FTGETLATENCYTIMER, /* Get the latency timer */ 408 FTSETBITMODE, /* Set bit mode */ 409 FTGETPINS, /* Read pins state */ 410 FTGETE2READ = 0x90, /* Read address from 128-byte I2C EEPROM */ 411 FTSETE2WRITE, /* Write to address on 128-byte I2C EEPROM */ 412 FTSETE2ERASE, /* Erase address on 128-byte I2C EEPROM */ 413 }; 414 415 /* Port Identifier Table, index for interfaces */ 416 enum { 417 PITDEFAULT = 0, /* SIOA */ 418 PITA, /* SIOA jtag if there is one */ 419 }; 420 421 enum { 422 Rftdireq = 1<<6, /* bit for type of request */ 423 }; 424 425 /* 426 * Commands Data size 427 * Sets have wLength = 0 428 * Gets have wValue = 0 429 */ 430 enum { 431 FTMODEMSTATUSSZ = 1, 432 FTLATENCYTIMERSZ= 1, 433 FTPINSSZ = 1, 434 FTE2READSZ = 2, 435 }; 436 437 /* 438 * bRequest: FTGETE2READ 439 * wIndex: Address of word to read 440 * Data: Will return a word (2 bytes) of data from E2Address 441 * Results put in the I2C 128 byte EEPROM string eeprom+(2*index) 442 */ 443 444 /* 445 * bRequest: FTSETE2WRITE 446 * wIndex: Address of word to read 447 * wValue: Value of the word 448 * Data: Will return a word (2 bytes) of data from E2Address 449 */ 450 451 /* 452 * bRequest: FTSETE2ERASE 453 * Erases the EEPROM 454 * wIndex: 0 455 */ 456 457 /* 458 * bRequest: FTRESET 459 * wValue: Ctl Val 460 * wIndex: Port 461 */ 462 enum { 463 FTRESETCTLVAL = 0, 464 FTRESETCTLVALPURGERX = 1, 465 FTRESETCTLVALPURGETX = 2, 466 }; 467 468 /* 469 * BmRequestType: SET 470 * bRequest: FTSETBAUDRATE 471 * wValue: BaudDivisor value - see below 472 * Bits 15 to 0 of the 17-bit divisor are placed in the request value. 473 * Bit 16 is placed in bit 0 of the request index. 474 */ 475 476 /* chip type */ 477 enum { 478 SIO = 1, 479 FT8U232AM = 2, 480 FT232BM = 3, 481 FT2232C = 4, 482 FTKINDR = 5, 483 FT2232H = 6, 484 FT4232H = 7, 485 }; 486 487 enum { 488 FTb300 = 0, 489 FTb600 = 1, 490 FTb1200 = 2, 491 FTb2400 = 3, 492 FTb4800 = 4, 493 FTb9600 = 5, 494 FTb19200 = 6, 495 FTb38400 = 7, 496 FTb57600 = 8, 497 FTb115200 = 9, 498 }; 499 500 /* 501 * bRequest: FTSETDATA 502 * wValue: Data characteristics 503 * bits 0-7 number of data bits 504 * wIndex: Port 505 */ 506 enum { 507 FTSETDATAParNONE = 0 << 8, 508 FTSETDATAParODD = 1 << 8, 509 FTSETDATAParEVEN = 2 << 8, 510 FTSETDATAParMARK = 3 << 8, 511 FTSETDATAParSPACE = 4 << 8, 512 FTSETDATASTOPBITS1 = 0 << 11, 513 FTSETDATASTOPBITS15 = 1 << 11, 514 FTSETDATASTOPBITS2 = 2 << 11, 515 FTSETBREAK = 1 << 14, 516 }; 517 518 /* 519 * bRequest: FTSETMODEMCTRL 520 * wValue: ControlValue (see below) 521 * wIndex: Port 522 */ 523 524 /* 525 * bRequest: FTSETFLOWCTRL 526 * wValue: Xoff/Xon 527 * wIndex: Protocol/Port - hIndex is protocol; lIndex is port 528 */ 529 enum { 530 FTDISABLEFLOWCTRL= 0, 531 FTRTSCTSHS = 1 << 8, 532 FTDTRDSRHS = 2 << 8, 533 FTXONXOFFHS = 4 << 8, 534 }; 535 536 /* 537 * bRequest: FTGETLATENCYTIMER 538 * wIndex: Port 539 * wLength: 0 540 * Data: latency (on return) 541 */ 542 543 /* 544 * bRequest: FTSETBITMODE 545 * wIndex: Port 546 * either it is big bang mode, in which case 547 * wValue: 1 byte L is the big bang mode BIG* 548 * or BM is 549 * wValue: 1 byte bitbang mode H, 1 byte bitmask for lines L 550 */ 551 enum { 552 BMSERIAL = 0, /* reset, turn off bit-bang mode */ 553 554 BIGBMNORMAL = 1, /* normal bit-bang mode */ 555 BIGBMSPI = 2, /* spi bit-bang mode */ 556 557 BMABM = 1<<8, /* async mode */ 558 BMMPSSE = 2<<8, 559 BMSYNCBB = 4<<8, /* sync bit-bang -- 2232x and R-type */ 560 BMMCU = 8<<8, /* MCU Host Bus -- 2232x */ 561 BMOPTO = 0x10<<8, /* opto-isolated<<8, 2232x */ 562 BMCBUS = 0x20<<8, /* CBUS pins of R-type chips */ 563 BMSYNCFF = 0x40<<8, /* Single Channel Sync FIFO, 2232H only */ 564 }; 565 566 /* 567 * bRequest: FTSETLATENCYTIMER 568 * wValue: Latency (milliseconds 1-255) 569 * wIndex: Port 570 */ 571 enum { 572 FTLATENCYDEFAULT = 2, 573 }; 574 575 /* 576 * BmRequestType: SET 577 * bRequest: FTSETEVENTCHAR 578 * wValue: EventChar 579 * wIndex: Port 580 * 0-7 lower bits event char 581 * 8 enable 582 */ 583 enum { 584 FTEVCHARENAB = 1<<8, 585 }; 586 587 /* 588 * BmRequestType: SET 589 * bRequest: FTSETERRORCHAR 590 * wValue: Error Char 591 * wIndex: Port 592 * 0-7 lower bits event char 593 * 8 enable 594 */ 595 enum { 596 FTERRCHARENAB = 1<<8, 597 }; 598 /* 599 * BmRequestType: GET 600 * bRequest: FTGETMODEMSTATUS 601 * wIndex: Port 602 * wLength: 1 603 * Data: Status 604 */ 605 enum { 606 FTCTSMASK = 0x10, 607 FTDSRMASK = 0x20, 608 FTRIMASK = 0x40, 609 FTRLSDMASK = 0x80, 610 }; 611 612 enum { 613 /* byte 0 of in data hdr */ 614 FTICTS = 1 << 4, 615 FTIDSR = 1 << 5, 616 FTIRI = 1 << 6, 617 FTIRLSD = 1 << 7, /* receive line signal detect */ 618 619 /* byte 1 of in data hdr */ 620 FTIDR = 1<<0, /* data ready */ 621 FTIOE = 1<<1, /* overrun error */ 622 FTIPE = 1<<2, /* parity error */ 623 FTIFE = 1<<3, /* framing error */ 624 FTIBI = 1<<4, /* break interrupt */ 625 FTITHRE = 1<<5, /* xmitter holding register */ 626 FTITEMT = 1<<6, /* xmitter empty */ 627 FTIFIFO = 1<<7, /* error in rcv fifo */ 628 629 /* byte 0 of out data hdr len does not include byte 0 */ 630 FTOLENMSK= 0x3F, 631 FTOPORT = 0x80, /* must be set */ 632 }; 633 634 extern Serialops ftops; 635 636 int ftmatch(Serial *ser, char *info); 637