Hello list,
I am building an eeprom file for a FT245R chip using ftdi_eeprom version 0.17.
I was expecting the following configuration to give me a value of 0x09 in the byte at eeprom address 0x00.
…
cha_type=FIFO
cha_vcp=false
#high_current=false #or true
…
Setting cha_type to FIFO correctly changes bit 00.0 to 1 but neither cha_vpc (channel_a_driver) nor high_current cause any further changes to the byte value.
Programming with the official FTDI tools sets bit 00.3 when selecting V2XX driver, resulting in a value of 0x09 for the first byte of the FT245R eeprom.
Setting the values is supposed to happen in
http://developer.intra2net.com/git/?p=libftdi;a=blob;f=ftdi_eeprom/main.c;hb=HEAD
468 eeprom_set_value(ftdi, HIGH_CURRENT, cfg_getbool(cfg, "high_current"));
…
536 eeprom_set_value(ftdi, CHANNEL_A_DRIVER,
537 cfg_getbool(cfg, "cha_vcp") ? DRIVER_VCP : 0);
For type R the CHANNEL_A_DRIVER seems to get ignored
http://developer.intra2net.com/git/?p=libftdi;a=blob;f=src/ftdi.c;hb=HEAD but there is at least code to set the high current drive, but I think the comparison in line 3183 might not work
3181 case TYPE_R:
3182 output[0x00] = type2bit(eeprom->channel_a_type, TYPE_R);
3183 if (eeprom->high_current == HIGH_CURRENT_DRIVE_R)
3184 output[0x00] |= HIGH_CURRENT_DRIVE_R;
3185 if (eeprom->external_oscillator)
3186 output[0x00] |= 0x02;
3187 output[0x01] = 0x40; /* Hard coded Endpoint Size*/
http://developer.intra2net.com/git/?p=libftdi;a=blob;f=src/ftdi.h;hb=HEAD
473 #define HIGH_CURRENT_DRIVE_R 0x04
Am I missing something or is this a bug/missing feature?
Thanks,
Holger