FreeCalypso > hg > fc-usbser-tools
annotate doc/FTDI-EEPROM-format @ 86:b7397959ae68
cp2102-decode-ee-desc: show bMaxPacketSize0 in decimal
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Wed, 27 Sep 2023 18:46:10 +0000 | 
| parents | 8b0a01b19fb9 | 
| children | 
| rev | line source | 
|---|---|
| 69 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 FTDI configuration EEPROM format | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 ================================ | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 Unfortunately FTDI never documented the format of their EEPROM configuration | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 structure - apparently they consider it a proprietary trade secret just like | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 the wire protocol spoken over USB between their chips and their closed-source | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 proprietary drivers. All FOSS community support for these chips is based on | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 reverse engineering, and that includes the EEPROM format. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 We (FreeCalypso) have not done any significant FTDI RE of our own - instead we | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 are taking the knowledge that already exists in the FOSS community (including | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 RE-based knowledge of FTDI EEPROM format) and using it to produce better tools. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 The present document summarizes the bits of knowledge we have collected | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 regarding FTDI's EEPROM configuration structure - this knowledge base is what | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 our generator and decoder tools are built on, as well as shipped EEPROM | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 programming in all physical hw products made by FreeCalypso. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 Word-based vs byte-based views | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 ============================== | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 Before FTDI started integrating the EEPROM inside their FT232R and FT-X chips, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 their original design used external serial EEPROMs of 93C46, 93C56 or 93C66 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 type. These EEPROMs are physically structured as an array of 16-bit words - or | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 more precisely, some EEPROM parts support both word and byte organization modes, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 selected by pin strapping, but FTDI chips require word-structured EEPROMs. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 Given this physical organization, we tend to view the EEPROM structure as an | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 array of 16-bit words. For some parts of the configuration structure, such as | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 16-bit ID words and UCS-2 strings, this word-based view is ideal - however, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 there are also times when the EEPROM structure needs to be viewed in terms of | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 bytes: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 * Some configuration parameters are given as bytes rather than words; | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 * Pointers from the fixed structure at the beginning of the EEPROM to string | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 descriptors in the "user" area use byte-based addressing. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 The correspondence order between bytes and words is little-endian. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 Fixed header structure | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 ====================== | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 The first 10 words (20 or 0x14 bytes) of the EEPROM follow the same basic | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 structure across all known-to-us FTDI chips: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 Word 0 (bytes 0x00 and 0x01): this word is best viewed as two separate bytes, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 and these bytes encode FTDI-specific functions detailed later in this document. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 Word 1 (bytes 0x02 and 0x03): USB vendor ID, called idVendor in the USB spec. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 Word 2 (bytes 0x04 and 0x05): USB product ID, called idProduct in the USB spec. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 Word 3 (bytes 0x06 and 0x07): originally allocated for the bcdDevice word in | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 the USB device descriptor, see Table 9-8 in the USB 2.0 specification. On older | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 FTDI chips such as FT2232D, the chip takes the value programmed in this EEPROM | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 word and actually reports this value in its device descriptor - thus if the | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 EEPROM is misprogrammed, all standard host software will be misled; see our | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 FTDI-chip-ID article. OTOH, FT232R ignores this word and always reports its | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 bcdDevice as 0x0600; in terms of FT232R EEPROM images captured in the wild, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 some have zero in this word while others have 0x0600. FT2232H behaves like | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 FT232R (ignores this EEPROM word), but I haven't seen any EEPROM images with | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 this word zeroed out - it appears that FTDI's official tools still insert the | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 correct bcdDevice value. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 Word 4 (bytes 0x08 and 0x09): this word is best viewed as two separate bytes. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 Both bytes go into the USB configuration descriptor: byte 0x08 is bmAttributes | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 and byte 0x09 is bMaxPower. See USB 2.0 specification Table 9-10 for the | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 detailed format. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 Word 5 (bytes 0x0A and 0x0B): this word is best viewed as two separate bytes, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 and these bytes encode FTDI-specific functions detailed later in this document. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 Word 6 (bytes 0x0C and 0x0D): originally allocated for the bcdUSB word in the | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 USB device descriptor, indicating the version of the USB spec which the device | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 claims to support. Starting with FT2232H this word has been repurposed for | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 other functions, as detailed in the chip-specific sections below. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 Word 7 (bytes 0x0E and 0x0F): pointer to the manufacturer ID string; format | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 explained later in the string descriptors section. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 Word 8 (bytes 0x10 and 0x11): pointer to the product ID string. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 Word 9 (bytes 0x12 and 0x13): pointer to the serial number string if one is | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 present, otherwise 0. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 FTDI-specific bytes in the fixed header | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 ======================================= | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 Bytes 00, 01, 0A and 0B in the structure covered above are FTDI-specific (don't | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 correspond to any fields in any of the standard USB descriptors), and many of | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 the functions controlled by these bytes differ significantly from one FTDI chip | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 type to the next. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 FT2232x bytes 00 and 01 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 ----------------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 On FT2232x chips bytes 00 and 01 configure channels A and B, respectively. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 The 3 least significant bits of each byte encode the channel mode as follows: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 0 = UART | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 1 = 245-style FIFO | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 2 = fast opto-isolated serial | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 4 = CPU-style FIFO | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 Bit 3 (mask 0x08) appears to have no function in the chip itself, but is used | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 by FTDI's Losedows drivers: for each of the two channels, FTDI's VCP driver is | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 selected if the bit is set and D2XX driver is selected if the bit is cleared. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 On FT2232C/D only (not on FT2232H), bit 4 (mask 0x10) enables high current drive | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 on the respective A/B channel. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 On FT2232H only, byte 01 bit 7 (mask 0x80) turns on a feature that is misnamed | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 "Suspend on DBus 7 Low" in FTDI's official programming tool. It is misnamed | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 because the actual pin in question is BCBUS7, not "DBUS7". When this function | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 is enabled via this bit, BCBUS7 becomes PWRSAV# input, which is sufficiently | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 documented in the FT2232H datasheet. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 ftee-gen2232c and ftee-gen2232h default for both bytes is 0x08. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 FT232R byte 00 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 -------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 This byte is conceptually similar to its counterpart on FT2232x, but not exactly | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 the same, and NOT compatible. FT232R byte 00 bit assignments are as follows: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 bit 0: 0 for FT232R, 1 for FT245R | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 bit 1: use external oscillator if set | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 bit 2: high current drive if set | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 bit 3: same VCP/D2XX nonsense as on other chips, but with reversed sense: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 0 means VCP, 1 means D2XX on this chip | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 ftee-gen232r default for this byte is 0x00. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 FT232R byte 01 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 -------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 This byte is unique to FT232R: it sets the maximum packet size the chip | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 advertises for its Data In endpoint, via wMaxPacketSize in the endpoint | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 descriptor. The standard value is 64 (0x40), and there does not seem to be | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 any need to change it. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 Byte 0A on all FTDI chips | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 ------------------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 This byte has the same bit assignments across all FTDI chips we work with, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 although newer chips don't support some of the older bits: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 bit 0: isochronous endpoint control on FT232BM and FT2232C/D | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 bit 1: isochronous endpoint control on FT232BM and FT2232C/D | 
| 71 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 151 bit 2: enable suspend mode pull-down on I/O pins (all chips) | 
| 69 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 bit 3: 1 means serial number string present, 0 means serial # string absent | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 bit 4: set bcdUSB in device descriptor to EEPROM value (only up to FT2232C/D) | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 bit 5: isochronous endpoint control on FT2232C/D | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 bit 6: isochronous endpoint control on FT2232C/D | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 See chip-specific sections below for the details on isochronous endpoint | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 control bits. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 ftee-gen* default for this byte is 0x00. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 Byte 0B: FT2232x | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 ---------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 This byte appears to be unused on FT2232C/D and on FT2232H. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 Byte 0B: FT232R | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 --------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 This byte controls UART signal inversion. Bits 0 through 7 (lsb through msb) | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 correspond to DBUS0 through DBUS7: if a given bit is set, the corresponding | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 DBUS/UART signal is inverted. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 FT232BM specifics | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 ================= | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 We don't have much support for this chip as it predates FreeCalypso involvement | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 in the business of FTDI chip tinkering - however, we know the following bits: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 * The fixed part of the EEPROM config structure is just the 10 words described | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 above, and the strings area begins at byte offset 0x14. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 * Isochronous endpoint control via byte 0A appears to be the same as for | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 Channel A of FT2232C/D, described below. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 FT2232C/D specifics | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 =================== | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 Words 0 through 9 (bytes up to 0x13) are as explained above. The only | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 additional FT2232C/D-specific word is 10: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 Byte 0x14 (low half of word 10) holds the EEPROM type: set to 0x46 for 93C46, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 0x56 for 93C56 or 0x66 for 93C66. It is not clear if the chip actually uses | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 this byte for anything: it seems to me that FTDI's EEPROM read engine has to | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 determine the required number of address bits (presumably by asking to read | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 address 0 and looking for the position of the dummy 0 bit from the EEPROM) | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 before it can proceed with incrementing addresses. (The address bit order | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 in the serial EEPROM interface is big-endian, hence one needs to know the | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 correct number of address bits in order to increment linearly.) | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 Byte 0x15 (high half of word 10) appears to be unused. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 The strings area of the EEPROM begins with word 11 or byte offset 0x16. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 Isochronous endpoint control | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 ---------------------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 The 4 data endpoints on this chip (In and Out for each channel) are of type | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 Bulk by default, but each of these 4 endpoints is independently selectable | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 between bulk and isochronous via these 4 bits in byte 0A: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 bit 0: make Channel A data In endpoint isochronous | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 bit 1: make Channel A data Out endpoint isochronous | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 bit 5: make Channel B data In endpoint isochronous | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 bit 6: make Channel B data Out endpoint isochronous | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 FT2232H specifics | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 ================= | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 On both FT2232H and FT4232H (which we don't support yet) EEPROM word 6 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 (originally allocated for bcdUSB override) is repurposed for I/O electrical | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 interface configuration. The 16-bit word is divided into four 4-bit groups, | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 mapped to pins as follows: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 Group # FT2232H pins FT4232H pins | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 -------------------------------------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 0 ADBUSx ADBUSx | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 1 ACBUSx BDBUSx | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 2 BDBUSx CDBUSx | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 3 BCBUSx DDBUSx | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 Within each group the 4 bits are assigned as follows: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 Bits Function | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 ---------------- | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 1:0 drive strength: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 00 = 4 mA | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 01 = 8 mA | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 10 = 12 mA | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 11 = 16 mA | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 2 set to 1 for slow slew rate | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 3 set to 1 for Schmitt trigger | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 Other EEPROM quirks on FT2232H: | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 * Words 10 and 11, used on FT232R (chronologically between FT2232C and FT2232H) | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 for CBUS configuration, appear to be reserved and unused on FT2232H. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 * Word 12 on FT2232H is same as word 10 on FT2232C/D: EEPROM type code, even | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 though it still isn't clear what the chip does with it, if anything. | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 | 
| 
065f68a94b6b
doc/FTDI-EEPROM-format: beginning of article
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 * The strings area of the EEPROM begins with word 13 or byte offset 0x1A. | 
| 70 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 253 | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 254 FT232R specifics | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 255 ================ | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 256 | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 257 Words 0 through 9 (bytes up to 0x13) are as explained above. The following | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 258 words 10 and 11 are specific to FT232R - they encode configured functions for | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 259 CBUSx pins as follows: | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 260 | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 261 word 10 bits 3:0 CBUS0 config | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 262 word 10 bits 7:4 CBUS1 config | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 263 word 10 bits 11:8 CBUS2 config | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 264 word 10 bits 15:12 CBUS3 config | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 265 word 11 bits 3:0 CBUS4 config | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 266 word 11 bits 15:4 reserved | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 267 | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 268 Please refer to libftdi source for the codes that go into individual 4-bit | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 269 fields for each CBUSx. | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 270 | 
| 
09da7db45dce
doc/FTDI-EEPROM-format: document FT232R specifics
 Mychaela Falconia <falcon@freecalypso.org> parents: 
69diff
changeset | 271 The strings area of the EEPROM begins with word 12 or byte offset 0x18. | 
| 71 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 272 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 273 USB string descriptors | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 274 ====================== | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 275 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 276 The standard USB device descriptor returned by FTDI chips has iManufacturer set | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 277 to 1 and iProduct set to 2, indicating presence of string descriptors at these | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 278 indices. If byte 0A bit 3 is set, iSerialNumber is set to 3, otherwise | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 279 iSerialNumber is set to 0, indicating absence of serial number string. | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 280 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 281 The string descriptors themselves, returned upon the host asking for them at | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 282 these indices, are stored verbatim in the strings area of the EEPROM, i.e., in | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 283 the free space following the fixed configuration structure for each chip. | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 284 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 285 As defined in the USB spec, each string descriptor has the following structure: | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 286 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 287 1 byte: total number of bytes in the descriptor | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 288 1 byte: constant 0x03, meaning string descriptor | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 289 variable bytes: string body in UCS-2 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 290 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 291 The total number of bytes in a string descriptor is the number of UCS-2 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 292 characters times 2 plus 2; this number is written into the first byte of the | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 293 descriptor itself, in the least-significant half of the first 16-bit word. The | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 294 whole descriptor, consisting of this header word followed by UCS-2 character | 
| 81 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 295 words, can be placed at any EEPROM location within the "acceptable" area (see | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 296 below), and there is a pointer to each of the 3 possible string descriptors | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 297 from the fixed header structure at the beginning of the EEPROM. | 
| 71 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 298 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 299 Each of the 3 string pointers is one 16-bit word, structured as follows: | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 300 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 301 lower byte: EEPROM byte address where the descriptor starts | 
| 81 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 302 (see below regarding the most significant bit of this byte) | 
| 71 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 303 upper byte: total number of bytes in the descriptor, same as written | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 304 in the descriptor itself | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 305 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 306 String placement quirk | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 307 ---------------------- | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 308 | 
| 81 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 309 Common sense says that the most natural way to pack the needed strings into the | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 310 EEPROM is to put the manufacturer ID string right after the fixed config | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 311 structure, then the product ID string and then the serial number string, if | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 312 included. However, the EEPROM structure generated by FTDI's official tools is | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 313 slightly different: | 
| 71 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 314 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 315 * In the case of 93C56 or 93C66 EEPROMs, FTDI's official tools skip 64 words | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 316 (128 bytes) after the end of the chip-defined config structure and then place | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 317 the manufacturer ID string after this gap. The byte-address pointer to each | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 318 string descriptor always has its high bit set as a result of this quirk. | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 319 | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 320 * In the case of 1024-bit EEPROMs (93C46 or FT232R internal) nothing is skipped, | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 321 but the byte-address pointers to strings are written with the high bit set, | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 322 as if the EEPROM were of 93C56 type. | 
| 
0b37be8b23ca
doc/FTDI-EEPROM-format: document string descriptors
 Mychaela Falconia <falcon@freecalypso.org> parents: 
70diff
changeset | 323 | 
| 81 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 324 My (Mother Mychaela's) first guess was that these quirks were just a matter of | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 325 FTDI's official tools being silly, and that those of us who write our own FOSS | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 326 tools can put our strings anywhere in the EEPROM, as long as the location we | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 327 pick doesn't conflict with something else. However, experiments with real | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 328 boards featuring an FT2232x chip and an EEPROM reveal that the chip is NOT happy | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 329 when the most significant bit of the byte-address pointer to a string descriptor | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 330 is cleared: it appears that the chip is returning some kind of garbage to the | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 331 USB host when asked for the string descriptor in this case. (I am using the | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 332 vague language of "appears that" because I am not currently able to allocate | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 333 the time to study the problem properly.) Thus it appears that all strings MUST | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 334 be located in the upper half of 93C56, and the quirk of setting the msb of byte | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 335 address for 93C46 is also required. | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 336 | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 337 Our ftee-gen* tools replicate both of these quirks, thus the resulting EEPROM | 
| 
8b0a01b19fb9
doc/FTDI-EEPROM-format: update for the discovery of
 Mychaela Falconia <falcon@freecalypso.org> parents: 
79diff
changeset | 338 structure is the same as what the chip vendor's official tools produce. | 
| 72 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 339 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 340 ftee-gen* tools: config file language | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 341 ===================================== | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 342 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 343 The format of EEPROM config files read by our ftee-gen* tools is line-based. | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 344 Each non-blank, non-comment line defines or tweaks one setting. The following | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 345 settings are common to all ftee-gen* chip variants: | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 346 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 347 Setting Format Meaning | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 348 ------------------------------- | 
| 79 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 349 ftdi-chip keyword Type of FTDI chip this config source was written for | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 350 eeprom keyword EEPROM size selector (not in ftee-gen232r) | 
| 72 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 351 vid hex USB vendor ID | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 352 pid hex USB product ID | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 353 manuf string Manufacturer ID string | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 354 product string Product ID string | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 355 byte00 hex Raw setting of byte 00 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 356 byte01 hex Raw setting of byte 01 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 357 byte08 hex Raw setting of byte 08 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 358 byte0A hex Raw setting of byte 0A | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 359 maxpower decimal bMaxPower declaration, number in mA | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 360 usbver hex bcdUSB word (ftee-gen2232c and ftee-gen232r only) | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 361 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 362 Additional settings for FT2232H (ftee-gen2232h): | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 363 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 364 group0 hex I/O electrical config for ADBUSx | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 365 group1 hex I/O electrical config for ACBUSx | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 366 group2 hex I/O electrical config for BDBUSx | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 367 group3 hex I/O electrical config for BCBUSx | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 368 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 369 Additional settings for FT232R (ftee-gen232r): | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 370 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 371 byte0B hex Raw setting of byte 0B | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 372 cbus0 hex CBUS0 config code | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 373 cbus1 hex CBUS1 config code | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 374 cbus2 hex CBUS2 config code | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 375 cbus3 hex CBUS3 config code | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 376 cbus4 hex CBUS4 config code | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 377 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 378 Only two settings are strictly mandatory: manuf and product strings. For all | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 379 other settings the EEPROM generator tool provides chip-matching defaults: | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 380 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 381 * ftee-gen2232[ch] defaults match the configuration attained by the chip | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 382 with a blank or missing EEPROM; | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 383 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 384 * ftee-gen232r defaults match FTDI's default factory programming of the | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 385 chip-internal EEPROM. | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 386 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 387 As one can see, the config language is very low-level, most bits are set in raw | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 388 hex. This design is justified by the paradigm of writing each config file once: | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 389 if you are designing a new board with an FTDI chip on it, and you need to change | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 390 some setting away from the FTDI chip's default, you research it once, figure out | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 391 the right bits, code the needed byte-level configuration in an EEPROM config | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 392 file, and then you just run a standard command line every time you need to | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 393 program a board. | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 394 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 395 The serial number string is never specified in the config file, instead it is | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 396 specified on the command line - this tool design is in accord with factory | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 397 production paradigm, where each EEPROM config is written once for a given board | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 398 design, and then a shell pipeline is executed for each board to be programmed. | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 399 | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 400 Byte 0A bit 3 is always overridden by the generator tool based on the serial | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 401 number command line argument: set if a serial number is given and cleared if | 
| 
6dc3aa777fd6
doc/FTDI-EEPROM-format: document config file language
 Mychaela Falconia <falcon@freecalypso.org> parents: 
71diff
changeset | 402 this argument is omitted. | 
| 79 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 403 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 404 FTDI chip type matching | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 405 ----------------------- | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 406 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 407 The design of FreeCalypso FTDI EEPROM tools calls for mostly manual matching | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 408 between EEPROM config files and generator tools: the operator is responsible | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 409 for selecting the correct tool (ftee-gen2232c, ftee-gen2232h or ftee-gen232r) | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 410 for the actual FTDI chip on the board of interest, and also responsible for | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 411 feeding correct EEPROM config files to this tool. However, now that we are | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 412 starting to give EEPROM programming instructions to end users in the form of | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 413 "please run this shell pipeline", there is a natural desire to reduce potential | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 414 for operator error: if someone takes an EEPROM config file written for one FTDI | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 415 chip and feeds it to an ftee-gen* tool for a different chip, it would be nice | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 416 for this invalid combination to be detected and rejected. | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 417 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 418 Toward this end, the following optional settings may be included in EEPROM | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 419 config source files: | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 420 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 421 ftdi-chip FT2232C # config valid only for ftee-gen2232c | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 422 ftdi-chip FT2232D # same as FT2232C | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 423 ftdi-chip FT2232H # config valid only for ftee-gen2232h | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 424 ftdi-chip FT2232x # config valid for ftee-gen2232c and ftee-gen2232h | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 425 ftdi-chip FT232R # config valid only for ftee-gen232r | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 426 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 427 EEPROM size selection | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 428 --------------------- | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 429 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 430 In the case of EEPROM generator tools for FTDI chips with external EEPROMs, | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 431 one of the following settings may be included in the config source: | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 432 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 433 eeprom 93C46 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 434 eeprom 93C56 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 435 eeprom 93C66 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 436 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 437 If one of these settings is included, the EEPROM size is fixed; if an EEPROM | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 438 size option (-s, -b or -B) is included on the command line, it must match the | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 439 config-set EEPROM size, otherwise the tool bails out with an error. If no | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 440 eeprom setting is included in the config file, then any EEPROM size may be | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 441 selected with command line options, and if no such options are included on the | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 442 command line either, then the final default is 93C46. | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 443 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 444 Preparing config files for boards | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 445 --------------------------------- | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 446 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 447 If you have a specific board design with an FTDI chip and are preparing an | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 448 EEPROM config file for your board, our recommendation is to include ftdi-chip | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 449 and eeprom lines in your config file, naming the specific FTDI chip and the | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 450 specific EEPROM size on your board. By doing so, you reduce the possibility | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 451 that someone will misprogram your EEPROM by selecting the wrong generator tool | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 452 or the wrong EEPROM size. | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 453 | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 454 The alternative approach of leaving these settings unspecified or underspecified | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 455 should be used for unfinished EEPROM config templates or examples, or configs | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 456 that can be sensibly loaded into many different boards that may vary in FT2232x | 
| 
f14d04e4d85d
doc/FTDI-EEPROM-format: document ftdi-chip and eeprom settings
 Mychaela Falconia <falcon@freecalypso.org> parents: 
72diff
changeset | 457 chip choice and EEPROM size. | 
