X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=src%2Fftdi.h;h=b7c011377a42bb8d23f7eb48189f9d8e06e90fcb;hp=4132d8a0dd93a7454a5ec3e722608ec9b8cf19cb;hb=e375e6cb72af68379ae42c536728a992df0046e5;hpb=802a949e535f479b694ee04d49c071900314ce91 diff --git a/src/ftdi.h b/src/ftdi.h index 4132d8a..b7c0113 100644 --- a/src/ftdi.h +++ b/src/ftdi.h @@ -2,7 +2,7 @@ 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 ***************************************************************************/ @@ -19,7 +19,7 @@ #include -/* 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 */ @@ -199,7 +199,9 @@ struct ftdi_eeprom 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 */ @@ -247,12 +249,11 @@ struct ftdi_eeprom 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]; }; @@ -315,6 +316,53 @@ struct ftdi_context }; /** + 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 @@ -364,7 +412,9 @@ enum ftdi_cbus_func {/* FIXME: Recheck value, especially the last */ /** 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 @@ -478,6 +528,11 @@ extern "C" 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);