Here we try to document what we know about the EEPROM Structure.

Even with a 93xx66 EEPROM, at maximum 256 Bytes are used

All important things happen in the first
0x14(FT232/245), 0x16(FT2232CD), 0x18(FT232/245R) or 0x1a (FT2232H/4432H) bytes

Type   |  Use extra EEPROM space
FT2XXB |  No

Byte.BIT| TYPE_AM TYPE_BM   TYPE_2232C       TYPE_R          TYPE_2232H       TYPE_4232H
00.0    |      0       0   channel_a_type   232R/245R        channel_a_type   0
00.1    |      0       0   channel_a_type                    channel_a_type   0
00.2    |      0       0   channel_a_type   high_current     channel_a_type   0
00.3    |      0       0   channel_a_driver channel_a_driver channel_a_driver channel_a_driver
00.4    |      0       0   high_current_a   0                0                0
00.5    |      0       0   0                0                0                0
00.6    |      0       0   0                0                0                0
00.7    |      0       0   0                0                SUSPEND_DBUS7    channel_c_driver

On TYPE_R 00.0 is set for the FT245R and cleared for the FT232R
On TYPE_R 00.3 set mean D2XX, on other devices VCP

01.0    |      0       0   channel_b_type                    channel_b_type   0
01.1    |      0       0   channel_b_type                    channel_b_type   0
01.2    |      0       0   channel_b_type   0                channel_b_type   0
01.3    |      0       0   channel_b_driver 0                channel_b_driver channel_b_driver
01.4    |      0       0   high_current_b   0                0                0
01.5    |      0       0   0                0                0                0
01.6    |      0       0   0                                 0                0
01.7    |      0       0   0                0                0                channel_d_driver

Fixme: Missing 4232H validation

02     | Vendor ID (VID) LSB (all)
03     | Vendor ID (VID) MSB (all)
04     | Product ID (PID) LSB (all)
05     | Product ID (PID) MSB (all)
06     | Device release number LSB (not tested on TYPE_4232H)
07     | Device release number MSB (not tested on TYPE_4232H)
       |
08.4   | Battery powered
08.5   | Remote wakeup
08.6   | Self powered: 1, bus powered: 0
08.7   | Always 1
       |
09     | Max power (mA/2)
       |
Byte.BIT| TYPE_AM TYPE_BM            TYPE_2232C         TYPE_R       TYPE_2232H        TYPE_4232H
0a.0    | 0       IsoIn              IsoIn part A       0            0                 0
0a.1    | 0       IsoOut             IsoOut part A      0            0                 0
0a.2    | 0       suspend_pull_down  suspend_pull_down               suspend_pull_down suspend_pull_down
0a.3    | 0       use_serial                                         use_serial        use_serial
0a.4    | 0       change_usb_version change_usb_version
0a.5    | 0       0                  IsoIn part B       0            0                 0
0a.6    | 0       0                  IsoOut part B      0            0                 0
0a.7    | 0 - reserved

0b      | TYPE_R Bitmask Invert, 0 else
Byte.BIT| TYPE_4232H
0b.4    | channel_a_rs485enable
0b.5    | channel_b_rs485enable
0b.6    | channel_c_rs485enable
0b.7    | channel_d_rs485enable

Byte   | TYPE_AM TYPE_BM     TYPE_2232C   TYPE_R       TYPE_2232H       TYPE_4232H
0c     | 0       USB-VER-LSB USB-VER-LSB  0            ?                ?
0d     | 0       USB-VER-MSB USB-VER-MSB  0            ?                ?
(On several FT2232H different values were observed -> The value is unused
 if change USB version is not set, so it might contain garbage)

0e     | OFFSET Vendor
0f     | Len    VENDOR

10     | Offset Product
11     | Length Product

12     | Offset Serial
13     | Length Serial

Byte.BIT| TYPE_AM TYPE_BM   TYPE_2232C   TYPE_R       TYPE_2232H       TYPE_4232H
14.3:0  | UA      UA        CHIP         CBUS[0]      AL               A
14.7:0  | UA      UA        CHIP         CBUS[1]      AH               B
15.3:0  | UA      UA        0            CBUS[2]      BL               C
15.7:0  | UA      UA        0            CBUS[3]      BH               D
16.3:0  | UA      UA        UA           CBUS[4]      0                0
16.7:0  | UA      UA        UA           0            0                0

CHIP values:
0x46: EEPROM is a 93xx46
0x56: EEPROM is a 93xx56
0x66: EEPROM is a 93xx66

17        UA      UA        UA           0            0                0
18        UA      UA        UA           VENDOR       CHIP             CHIP
19        UA      UA        UA           VENDOR       0                0

1a        UA (all)


Additional fields after the serial string:
0x00, 0x00 - reserved for "legacy port name prefix"
0x00, 0x00 - reserved for plug and play options
(Observed values with PnP == 0:
0x02 0x03 0x01 0x00)

Note: The additional fields after the serial number string
collide with the official FTDI formula from AN_121 regarding
the start of the user area:
"Start Address = the address following the last byte of SerialNumber string."
