X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=src%2Fftdi.c;h=8546319070a95ac97c195e84ab0a625ea0cfc22a;hb=519bbce162c907e93cef6fd372f3224387828034;hp=71a341a4b7f500abf460fe2a11d85e2a999596e8;hpb=6ae693b23c410578d6179dec7e61bd36b932c851;p=libftdi diff --git a/src/ftdi.c b/src/ftdi.c index 71a341a..8546319 100644 --- a/src/ftdi.c +++ b/src/ftdi.c @@ -3077,9 +3077,18 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi) /* FT230X has a user section in the MTP which is not part of the checksum */ i = 0x40; } - value = output[i*2]; - value += output[(i*2)+1] << 8; - + if ((ftdi->type == TYPE_230X) && (i >= 0x40) && (i < 0x50)) { + uint16_t data; + if (ftdi_read_eeprom_location(ftdi, i, &data)) { + fprintf(stderr, "Reading Factory Configuration Data failed\n"); + i = 0x50; + } + value = data; + } + else { + value = output[i*2]; + value += output[(i*2)+1] << 8; + } checksum = value^checksum; checksum = (checksum << 1) | (checksum >> 15); } @@ -4217,7 +4226,7 @@ int ftdi_erase_eeprom(struct ftdi_context *ftdi) if (ftdi == NULL || ftdi->usb_dev == NULL) ftdi_error_return(-2, "USB device unavailable"); - if (ftdi->type == TYPE_R) + if ((ftdi->type == TYPE_R) || (ftdi->type == TYPE_230X)) { ftdi->eeprom->chip = 0; return 0;