FreeCalypso > hg > fc-usbser-tools
changeset 14:67ecb394b24f
libftmini: starting with EEPROM read
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 07 Sep 2023 07:59:09 +0000 |
parents | c53dee063cdd |
children | e1629a7c8ae3 |
files | libftmini/Makefile libftmini/eeprom_func.h libftmini/eeprom_rd.c libftmini/ftdi_tune.h |
diffstat | 4 files changed, 51 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libftmini/Makefile Thu Sep 07 07:59:09 2023 +0000 @@ -0,0 +1,13 @@ +CC= gcc +CFLAGS= -O2 +OBJS= eeprom_rd.o +LIB= libftmini.a + +all: ${LIB} + +${LIB}: ${OBJS} + ar rcu $@ ${OBJS} + ranlib $@ + +clean: + rm -f *.[oa] errs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libftmini/eeprom_func.h Thu Sep 07 07:59:09 2023 +0000 @@ -0,0 +1,5 @@ +/* declarations for libftmini EEPROM operation functions */ + +u_short ftmini_read_eeprom_loc(usb_dev_handle *usbh, u_short addr); +void ftmini_write_eeprom_loc(usb_dev_handle *usbh, u_short addr, u_short val); +void ftmini_erase_eeprom(usb_dev_handle *usbh);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libftmini/eeprom_rd.c Thu Sep 07 07:59:09 2023 +0000 @@ -0,0 +1,26 @@ +/* elementary FTDI EEPROM read function */ + +#include <sys/types.h> +#include <stdio.h> +#include <stdlib.h> +#include <usb.h> +#include "ftdi_defs.h" +#include "ftdi_tune.h" +#include "eeprom_func.h" + +u_short ftmini_read_eeprom_loc(usb_dev_handle *usbh, u_short addr) +{ + u_char buf[2]; + int rc; + + rc = usb_control_msg(usbh, FTDI_DEVICE_IN_REQTYPE, + SIO_READ_EEPROM_REQUEST, 0, addr, (char *) buf, 2, + USB_READ_TIMEOUT); + if (rc != 2) { + fprintf(stderr, + "EEPROM read error: usb_control_msg() returned %d\n", + rc); + exit(1); + } + return buf[0] | (buf[1] << 8); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libftmini/ftdi_tune.h Thu Sep 07 07:59:09 2023 +0000 @@ -0,0 +1,7 @@ +/* + * libftdi-0.20 passes ftdi->usb_read_timeout as the last argument to + * usb_control_msg(); this setting is initialized to 5000 in ftdi_init() + * and never changed in practice. Replicate this magic definition. + */ + +#define USB_READ_TIMEOUT 5000