Hello Uwe,

one more code piece to examine:

int ftdi_read_eeprom(struct ftdi_context *ftdi)
{
    int i;
    unsigned char *buf;

    if (ftdi == NULL || ftdi->usb_dev == NULL)
        ftdi_error_return(-2, "USB device unavailable");
    buf = ftdi->eeprom->buf;

    for (i = 0; i < FTDI_MAX_EEPROM_SIZE/2; i++)
    {
        if (libusb_control_transfer(
                ftdi->usb_dev, 
FTDI_DEVICE_IN_REQTYPE,SIO_READ_EEPROM_REQUEST, 0, i,
                buf+(i*2), 2, ftdi->usb_read_timeout) != 2)
            ftdi_error_return(-1, "reading eeprom failed");
...
}

This looks wrong for 93x46 eeproms / older chips
as FTDI_MAX_EEPROM_SIZE is 256 (0x100).

This used to be "eeprom->size/2". Any reason you changed that?

There's also (old) code to guess the eeprom size.
Maybe we shouldn't do that anyway.

Thomas

--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to [email protected]   

Reply via email to