ftdi.h - description
-------------------
begin : Fri Apr 4 2003
- copyright : (C) 2003 by Intra2net AG
+ copyright : (C) 2003-2011 by Intra2net AG and the libftdi developers
email : opensource@intra2net.com
***************************************************************************/
#include <libusb.h>
-/* Evne on 93xx66 at max 256 bytes are used (AN_121)*/
+/* Even on 93xx66 at max 256 bytes are used (AN_121)*/
#define FTDI_MAX_EEPROM_SIZE 256
/** FTDI chip type */
/** remote wakeup */
int remote_wakeup;
+ int is_not_pnp;
+
/* Suspend on DBUS7 Low */
int suspend_dbus7;
int use_serial;
/** usb version */
int usb_version;
- /** maximum power */
+ /** Use usb version on FT2232 devices*/
+ int use_usb_version;
+ /** maximum power */
int max_power;
/** manufacturer name */
int group3_drive;
int group3_schmitt;
int group3_slew;
-
/** eeprom size in bytes. This doesn't get stored in the eeprom
but is the only way to pass it to ftdi_eeprom_build. */
int size;
- /* EEPROM Type 46 for 93xx46, 56 for 93xx56 and 66 for 93xx66*/
+ /* EEPROM Type 0x46 for 93xx46, 0x56 for 93xx56 and 0x66 for 93xx66*/
int chip;
unsigned char buf[FTDI_MAX_EEPROM_SIZE];
};
};
/**
+ List all handled EEPROM values.
+ Append future new values only at the end to provide API/ABI stability*/
+enum ftdi_eeprom_value
+{
+ VENDOR_ID = 0,
+ PRODUCT_ID = 1,
+ SELF_POWERED = 2,
+ REMOTE_WAKEUP = 3,
+ IS_NOT_PNP = 4,
+ SUSPEND_DBUS7 = 5,
+ IN_IS_ISOCHRONOUS = 6,
+ OUT_IS_ISOCHRONOUS = 7,
+ SUSPEND_PULL_DOWNS = 8,
+ USE_SERIAL = 9,
+ USB_VERSION = 10,
+ USE_USB_VERSION = 11,
+ MAX_POWER = 12,
+ CHANNEL_A_TYPE = 13,
+ CHANNEL_B_TYPE = 14,
+ CHANNEL_A_DRIVER = 15,
+ CHANNEL_B_DRIVER = 16,
+ CBUS_FUNCTION_0 = 17,
+ CBUS_FUNCTION_1 = 18,
+ CBUS_FUNCTION_2 = 19,
+ CBUS_FUNCTION_3 = 20,
+ CBUS_FUNCTION_4 = 21,
+ HIGH_CURRENT = 22,
+ HIGH_CURRENT_A = 23,
+ HIGH_CURRENT_B = 24,
+ INVERT = 25,
+ GROUP0_DRIVE = 26,
+ GROUP0_SCHMITT = 27,
+ GROUP0_SLEW = 28,
+ GROUP1_DRIVE = 29,
+ GROUP1_SCHMITT = 30,
+ GROUP1_SLEW = 31,
+ GROUP2_DRIVE = 32,
+ GROUP2_SCHMITT = 33,
+ GROUP2_SLEW = 34,
+ GROUP3_DRIVE = 35,
+ GROUP3_SCHMITT = 36,
+ GROUP3_SLEW = 37,
+ CHIP_SIZE = 38,
+ CHIP_TYPE = 39
+};
+
+/**
\brief list of usb devices created by ftdi_usb_find_all()
*/
struct ftdi_device_list
/** Driver Type. */
#define DRIVER_VCP 0x08
-#define SUSPEND_DBUS7 0x80
+#define USE_USB_VERSION_BIT 0x10
+
+#define SUSPEND_DBUS7_BIT 0x80
/** High current drive. */
#define HIGH_CURRENT_DRIVE 0x10
int ftdi_set_event_char(struct ftdi_context *ftdi, unsigned char eventch, unsigned char enable);
int ftdi_set_error_char(struct ftdi_context *ftdi, unsigned char errorch, unsigned char enable);
- /* init and build eeprom from ftdi_eeprom structure */
- void ftdi_eeprom_initdefaults(struct ftdi_context *ftdi);
- void ftdi_eeprom_free(struct ftdi_context *ftdi);
+ /* init eeprom for the given FTDI type */
+ int ftdi_eeprom_initdefaults(struct ftdi_context *ftdi,
+ char * manufacturer, char *product,
+ char * serial);
int ftdi_eeprom_build(struct ftdi_context *ftdi);
int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose);
+ int ftdi_get_eeprom_value(struct ftdi_context *ftdi, enum ftdi_eeprom_value value_name, int* value);
+ int ftdi_set_eeprom_value(struct ftdi_context *ftdi, enum ftdi_eeprom_value value_name, int value);
+
+ int ftdi_get_eeprom_buf(struct ftdi_context *ftdi, unsigned char * buf, int size);
+
int ftdi_read_eeprom(struct ftdi_context *ftdi);
int ftdi_read_chipid(struct ftdi_context *ftdi, unsigned int *chipid);
int ftdi_write_eeprom(struct ftdi_context *ftdi);