changeset 21:af801ab43a33

fteeprom-erase: convert to new local libs
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 08 Sep 2023 23:47:50 +0000
parents 43b8e88dae02
children 4e5c8ac4d508
files fteeprom/Makefile fteeprom/fteeprom-erase.c
diffstat 2 files changed, 26 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/fteeprom/Makefile	Fri Sep 08 22:40:14 2023 +0000
+++ b/fteeprom/Makefile	Fri Sep 08 23:47:50 2023 +0000
@@ -22,8 +22,8 @@
 ftee-mkblank:	ftee-mkblank.c
 	${CC} ${CFLAGS} -o $@ $@.c
 
-fteeprom-erase:	fteeprom-erase.c
-	${CC} ${CFLAGS} -o $@ $@.c -lftdi
+fteeprom-erase:	fteeprom-erase.o ${LIBS}
+	${CC} ${CFLAGS} -o $@ $@.o ${LIBS} -lusb
 
 fteeprom-prog:	fteeprom-prog.o ${LIBS}
 	${CC} ${CFLAGS} -o $@ $@.o ${LIBS} -lusb
--- a/fteeprom/fteeprom-erase.c	Fri Sep 08 22:40:14 2023 +0000
+++ b/fteeprom/fteeprom-erase.c	Fri Sep 08 23:47:50 2023 +0000
@@ -1,27 +1,41 @@
+/*
+ * This program connects to an FTDI chip via libusb and commands that FTDI
+ * chip to erase its EEPROM in one fell swoop.  This operation is known
+ * to work on FT2232C/D chips with 5V-powered EEPROMs, but is NOT appropriate
+ * for FT232R.  This operation is also not recommended for external EEPROMs
+ * powered with 3.3V, as typically used with FT2232H.
+ *
+ * The present version has been converted to use our local libraries
+ * (libftmini and libuwrap) instead of libftdi - thus the external dependency
+ * is only libusb.
+ */
+
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <ftdi.h>
+#include <usb.h>
+#include "../libuwrap/find_dev.h"
+#include "../libuwrap/open_close.h"
+#include "../libftmini/eeprom_func.h"
 
 main(argc, argv)
 	char **argv;
 {
-	struct ftdi_context ftdi;
+	struct usb_device *dev;
+	usb_dev_handle *usbh;
 
 	if (argc != 2) {
 		fprintf(stderr, "usage: %s device-selector\n");
 		exit(1);
 	}
-	ftdi_init(&ftdi);
-	if (ftdi_usb_open_string(&ftdi, argv[1]) < 0) {
-		fprintf(stderr, "FTDI USB open failed: %s\n", ftdi.error_str);
+	dev = find_usbdev_by_desc_string(argv[1]);
+	if (!dev) {
+		fprintf(stderr, "error: specified USB device not found\n");
 		exit(1);
 	}
-	if (ftdi_erase_eeprom(&ftdi) < 0) {
-		fprintf(stderr, "EEPROM write error: %s\n", ftdi.error_str);
-		exit(1);
-	}
-	ftdi_usb_close(&ftdi);
+	usbh = usbwrap_open_dev(dev, 1);
+	ftmini_erase_eeprom(usbh);
+	usbwrap_close_dev(usbh);
 	exit(0);
 }