Add description of EEPROM Structure as decoded by now. Please comment!
[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)
7 bytes
8
9 Type   |  Use Extra EEPROM Space
10 FT2XXB |  No
11
12 Byte.BIT| TYPE_AM TYPE_BM   TYPE_2232C       TYPE_R          TYPE_2232H       TYPE_4232H
13 00.0    |      0       0   channel_a_type                    channel_a_type   channel_a_type 
14 00.1    |      0       0   channel_a_type                    channel_a_type   channel_a_type
15 00.2    |      0       0   channel_a_type   high_current     channel_a_type   channel_a_type
16 00.3    |      0       0   channel_a_driver channel_a_driver channel_a_driver channel_a_driver
17 00.4    |      0       0   high_current_a   0                0                0 
18 00.5    |      0       0   0                0                0                0
19 00.6    |      0       0   0                0                0                0
20 00.7    |      0       0   0                0                SUSPEND_DBUS7    0
21
22 On TYPE_R 00.3 set mean D2XX, on other devices VCP
23
24 01.0    |      0       0   channel_b_type                    channel_b_type   channel_b_type
25 01.1    |      0       0   channel_b_type                    channel_b_type   channel_b_type
26 01.2    |      0       0   channel_b_type   0                channel_b_type   channel_b_type
27 01.3    |      0       0   channel_b_driver 0                channel_b_driver channel_b_driver
28 01.4    |      0       0   high_current_b   0                0                0 
29 01.5    |      0       0   0                0                0                0
30 01.6    |      0       0   0                                0                0
31 01.7    |      0       0   0                0                0                0
32
33 Fixme: Missing 4232H validation and channel_c_driver, channel_d_driver, channel_a|b|c|d_rs484enable 
34
35 02     | VID-LSB(all)
36 03     | VID-MSB(all)
37 04     | PID-LSB(all)
38 05     | PID-MSB(all)
39 06     | REL-LSB (not tested on TYPE_AM, TYPE_BM and TYPE_4232H)
40 07     | REL-MSB (not tested on TYPE_AM, TYPE_BM and TYPE_4232H)
41        |
42 08.4   | Self-Wakeup
43 08.5   | Remote-Wakeup
44 08.6   | Self-Powered
45 08.7   | Always 1
46        |
47 09     | MaxPower(maA/2)
48        |
49 Byte.BIT| TYPE_AM TYPE_BM            TYPE_2232C        TYPE_R       TYPE_2232H       TYPE_4232H
50 0a.0    | 0       IsoIn
51 0a.1    | 0       IsoOut
52 0a.2    | 0       suspend_pull_down suspend_pull_down               suspend_pull_down
53 0a.3    | 0       use_serial                                        use_serial
54 0a.4    | 0       change_usb_version change_usb_version  
55        |
56 0b     | TYPE_R Bitmask Invert, 0 else
57
58 Byte   | TYPE_AM TYPE_BM     TYPE_2232C   TYPE_R       TYPE_2232H       TYPE_4232H
59 0c     | ?       USB-VER-LSB USB-VER-LSB  0            ?                ?
60 0d     | ?       USB-VER-MSB USB-VER-MSB  0            ?                ?
61 On several FT2232H different values were observed
62
63
64 0e     | OFFSET Vendor
65 0f     | Len    VENDOR
66
67 10     | Offset Product
68 11     | Length Product
69
70 12     | Offset Serial
71 13     | Length Serial
72
73 Byte.BIT| TYPE_AM TYPE_BM   TYPE_2232C   TYPE_R       TYPE_2232H       TYPE_4232H
74 14.3:0  | UA      UA        CHIP         CBUS[0]      AL               A   
75 14.7:0  | UA      UA        CHIP         CBUS[1]      AH               B   
76 15.3:0  | UA      UA        0            CBUS[2]      BL               C   
77 15.7:0  | UA      UA        0            CBUS[3]      BH               D   
78 16.3:0  | UA      UA        UA           CBUS[4]      0                0   
79 16.7:0  | UA      UA        UA           0            0                0   
80  
81 17        UA      UA        UA           0            0                0
82 18        UA      UA        UA           VENDOR       CHIP             CHIP                
83 19        UA      UA        UA           VENDOR       0                0                
84
85 1a        UA(all)
86
87 Mprog doesn's seem to write this:
88 After last string
89 0x02 0x03 0x01 with PnP == 0