1 Here we try to document what we know about the EEPROM Structure.
3 Even with a 93xx66 EEPROM, at maximum 256 Bytes are used
5 All important things happen in the first
6 0x14(FT232/245), 0x16(FT2232CD), 0x18(FT232/245R) or 0x1a (FT2232H/4432H) bytes
8 Type | Use extra EEPROM space
11 Byte.BIT| TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
12 00.0 | 0 0 channel_a_type channel_a_type channel_a_type
13 00.1 | 0 0 channel_a_type channel_a_type channel_a_type
14 00.2 | 0 0 channel_a_type high_current channel_a_type channel_a_type
15 00.3 | 0 0 channel_a_driver channel_a_driver channel_a_driver channel_a_driver
16 00.4 | 0 0 high_current_a 0 0 0
19 00.7 | 0 0 0 0 SUSPEND_DBUS7 0
21 On TYPE_R 00.3 set mean D2XX, on other devices VCP
23 01.0 | 0 0 channel_b_type channel_b_type channel_b_type
24 01.1 | 0 0 channel_b_type channel_b_type channel_b_type
25 01.2 | 0 0 channel_b_type 0 channel_b_type channel_b_type
26 01.3 | 0 0 channel_b_driver 0 channel_b_driver channel_b_driver
27 01.4 | 0 0 high_current_b 0 0 0
32 Fixme: Missing 4232H validation and channel_c_driver, channel_d_driver, channel_a|b|c|d_rs484enable
34 02 | Vendor ID (VID) LSB (all)
35 03 | Vendor ID (VID) MSB (all)
36 04 | Product ID (PID) LSB (all)
37 05 | Product ID (PID) MSB (all)
38 06 | Device release number LSB (not tested on TYPE_4232H)
39 07 | Device release number MSB (not tested on TYPE_4232H)
41 08.4 | Battery powered
43 08.6 | Self powered: 1, bus powered: 0
48 Byte.BIT| TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
49 0a.0 | 0 IsoIn IsoIn part A 0 0 0
50 0a.1 | 0 IsoOut IsoOut part A 0 0 0
51 0a.2 | 0 suspend_pull_down suspend_pull_down suspend_pull_down
52 0a.3 | 0 use_serial use_serial
53 0a.4 | 0 change_usb_version change_usb_version
54 0a.5 | 0 0 IsoIn part B 0 0 0
55 0a.6 | 0 0 IsoOut part B 0 0 0
59 0b | TYPE_R Bitmask Invert, 0 else
61 Byte | TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
62 0c | 0 USB-VER-LSB USB-VER-LSB 0 ? ?
63 0d | 0 USB-VER-MSB USB-VER-MSB 0 ? ?
64 (On several FT2232H different values were observed -> The value is unused
65 if change USB version is not set, so it might contain garbage)
76 Byte.BIT| TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
77 14.3:0 | UA UA CHIP CBUS[0] AL A
78 14.7:0 | UA UA CHIP CBUS[1] AH B
79 15.3:0 | UA UA 0 CBUS[2] BL C
80 15.7:0 | UA UA 0 CBUS[3] BH D
81 16.3:0 | UA UA UA CBUS[4] 0 0
82 16.7:0 | UA UA UA 0 0 0
85 0x46: EEPROM is a 93xx46
86 0x56: EEPROM is a 93xx56
87 0x66: EEPROM is a 93xx66
90 18 UA UA UA VENDOR CHIP CHIP
91 19 UA UA UA VENDOR 0 0
96 Additional fields after the serial string:
97 0x00, 0x00 - reserved for "legacy port name prefix"
98 0x00, 0x00 - reserved for plug and play options
99 (Observed values with PnP == 0:
102 Note: The additional fields after the serial number string
103 collide with the official FTDI formula from AN_121 regarding
104 the start of the user area:
105 "Start Address = the address following the last byte of SerialNumber string."