int erase = 0;
int use_defaults = 0;
int large_chip = 0;
+ int do_write = 0;
int size;
+ unsigned short value;
if ((ftdi = ftdi_new()) == 0)
{
return EXIT_FAILURE;
}
- while ((i = getopt(argc, argv, "d::ev:p:P:S:")) != -1)
+ while ((i = getopt(argc, argv, "d::ev:p:l:P:S:w")) != -1)
{
switch (i)
{
case 'S':
serial = optarg;
break;
+ case 'w':
+ do_write = 1;
+ break;
default:
fprintf(stderr, "usage: %s [options]\n", *argv);
fprintf(stderr, "\t-d[num] Work with default valuesfor 128 Byte "
if(use_defaults)
{
- ftdi_eeprom_initdefaults(ftdi, "IKDA", "CPS-CONN", "0001");
- ftdi->eeprom->chip= (large_chip)?0x66:0;
+ ftdi_eeprom_initdefaults(ftdi, "IKDA", "FTDIJTAF", "0001");
+ ftdi->eeprom->max_power = 500;
f=(ftdi_eeprom_build(ftdi));
if (f < 0)
{
exit(-1);
}
}
+ else if(do_write)
+ {
+ ftdi_eeprom_initdefaults(ftdi, "IKDA", "FTDIJTAG", "0001");
+ ftdi->eeprom->max_power = 500;
+ f = ftdi_erase_eeprom(ftdi);
+ if (ftdi->eeprom->chip == -1)
+ fprintf(stderr, "No EEPROM\n");
+ else if (ftdi->eeprom->chip == 0)
+ fprintf(stderr, "Internal EEPROM\n");
+ else
+ fprintf(stderr, "Found 93x%02x\n",ftdi->eeprom->chip);
+ f=(ftdi_eeprom_build(ftdi));
+ if (f < 0)
+ {
+ fprintf(stderr, "Erase failed: %s",
+ ftdi_get_error_string(ftdi));
+ return -2;
+ }
+ f = ftdi_write_eeprom(ftdi);
+ {
+ fprintf(stderr, "ftdi_eeprom_decode: %d (%s)\n",
+ f, ftdi_get_error_string(ftdi));
+ exit(-1);
+ }
+ f = ftdi_read_eeprom(ftdi);
+ if (f < 0)
+ {
+ fprintf(stderr, "ftdi_read_eeprom: %d (%s)\n",
+ f, ftdi_get_error_string(ftdi));
+ exit(-1);
+ }
+ }
else
{
f = ftdi_read_eeprom(ftdi);
exit(-1);
}
}
+
+
fprintf(stderr, "Chip type %d ftdi_eeprom_size: %d\n", ftdi->type, ftdi->eeprom->size);
buf = ftdi->eeprom->buf;
if (ftdi->type == TYPE_R)
}
f = ftdi_eeprom_decode(ftdi, 1);
+ if (f < 0)
{
fprintf(stderr, "ftdi_eeprom_decode: %d (%s)\n",
f, ftdi_get_error_string(ftdi));
exit(-1);
}
-
ftdi_usb_close(ftdi);
ftdi_free(ftdi);
+ return 0;
}