Update eeprom map as we work in word sizes
[libftdi] / doc / EEPROM-structure
1 Here we try to document what we know about the EEPROM Structure.
2
3 Even with a 93xx66 EEPROM, at maximum 256 Bytes are used
4
5 All important things happen in the first
6 0x14(FT232/245), 0x16(FT2232CD), 0x18(FT232/245R) or 0x1a (FT2232H/4432H) bytes
7
8 Type   |  Use extra EEPROM space
9 FT2XXB |  No
10
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
17 00.5    |      0       0   0                0                0                0
18 00.6    |      0       0   0                0                0                0
19 00.7    |      0       0   0                0                SUSPEND_DBUS7    0
20
21 On TYPE_R 00.3 set mean D2XX, on other devices VCP
22
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
28 01.5    |      0       0   0                0                0                0
29 01.6    |      0       0   0                                 0                0
30 01.7    |      0       0   0                0                0                0
31
32 Fixme: Missing 4232H validation and channel_c_driver, channel_d_driver, channel_a|b|c|d_rs484enable
33
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)
40        |
41 08.4   | Battery powered
42 08.5   | Remote wakeup
43 08.6   | Self powered: 1, bus powered: 0
44 08.7   | Always 1
45        |
46 09     | Max power (mA/2)
47        |
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
56 0a.7    | 0 - reserved
57
58        |
59 0b     | TYPE_R Bitmask Invert, 0 else
60
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)
66
67 0e     | OFFSET Vendor
68 0f     | Len    VENDOR
69
70 10     | Offset Product
71 11     | Length Product
72
73 12     | Offset Serial
74 13     | Length Serial
75
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
83
84 CHIP values:
85 0x46: EEPROM is a 93xx46
86 0x56: EEPROM is a 93xx56
87 0x66: EEPROM is a 93xx66
88
89 17        UA      UA        UA           0            0                0
90 18        UA      UA        UA           VENDOR       CHIP             CHIP
91 19        UA      UA        UA           VENDOR       0                0
92
93 1a        UA (all)
94
95
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:
100 0x02 0x03 0x01 0x00)
101
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."