X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=src%2Fftdi.h;h=4e3880ee74405e9ed589e5297aca66c7034cbb9d;hp=dd442df34a07596d482b5145810465e39878ac10;hb=b9c1e31765740e24a34112a3df58e95646b2316b;hpb=837a71d6c580972b9638588a50cec5fbb035add6 diff --git a/src/ftdi.h b/src/ftdi.h index dd442df..4e3880e 100644 --- a/src/ftdi.h +++ b/src/ftdi.h @@ -45,6 +45,7 @@ enum ftdi_mpsse_mode BITMODE_OPTO = 0x10, /**< Fast Opto-Isolated Serial Interface Mode, available on 2232x chips */ BITMODE_CBUS = 0x20, /**< Bitbang on CBUS pins of R-type chips, configure in EEPROM before */ BITMODE_SYNCFF = 0x40, /**< Single Channel Synchronous FIFO mode, available on 2232H chips */ + BITMODE_FT1284 = 0x80, /**< FT1284 mode, available on 232H chips */ }; /** Port interface for chips with multiple interfaces */ @@ -199,6 +200,10 @@ struct ftdi_eeprom int vendor_id; /** product id */ int product_id; + + /** Was the eeprom structure initialized for the actual + connected device? **/ + int initialized_for_connected_device; /** self powered */ int self_powered; @@ -242,9 +247,9 @@ struct ftdi_eeprom int channel_a_driver; int channel_b_driver; - /* Special function of FT232R devices (and possibly others as well) */ + /* Special function of FT232R/FT232H devices (and possibly others as well) */ /** CBUS pin function. See CBUS_xxx defines. */ - int cbus_function[5]; + int cbus_function[10]; /** Select hight current drive on R devices. */ int high_current; /** Select hight current drive on A channel (2232C */ @@ -273,6 +278,10 @@ struct ftdi_eeprom int group3_slew; int powersave; + + int clock_polarity; + int data_order; + int flow_control; /** eeprom size in bytes. This doesn't get stored in the eeprom but is the only way to pass it to ftdi_eeprom_build. */ @@ -369,25 +378,33 @@ enum ftdi_eeprom_value 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, - POWER_SAVE = 40 + CBUS_FUNCTION_5 = 22, + CBUS_FUNCTION_6 = 23, + CBUS_FUNCTION_7 = 24, + CBUS_FUNCTION_8 = 25, + CBUS_FUNCTION_9 = 26, + HIGH_CURRENT = 27, + HIGH_CURRENT_A = 28, + HIGH_CURRENT_B = 29, + INVERT = 30, + GROUP0_DRIVE = 31, + GROUP0_SCHMITT = 32, + GROUP0_SLEW = 33, + GROUP1_DRIVE = 34, + GROUP1_SCHMITT = 35, + GROUP1_SLEW = 36, + GROUP2_DRIVE = 37, + GROUP2_SCHMITT = 38, + GROUP2_SLEW = 39, + GROUP3_DRIVE = 40, + GROUP3_SCHMITT = 41, + GROUP3_SLEW = 42, + CHIP_SIZE = 43, + CHIP_TYPE = 44, + POWER_SAVE = 45, + CLOCK_POLARITY = 46, + DATA_ORDER = 47, + FLOW_CONTROL = 48 }; /** @@ -400,7 +417,9 @@ struct ftdi_device_list /** pointer to libusb's usb_device */ struct libusb_device *dev; }; - +#define FT1284_CLK_IDLE_STATE 0x01 +#define FT1284_DATA_LSB 0x02 /* DS_FT232H 1.3 amd ftd2xx.h 1.0.4 disagree here*/ +#define FT1284_FLOW_CONTROL 0x04 #define POWER_SAVE_DISABLE_H 0x80 #define USE_SERIAL_NUM 0x08 @@ -409,6 +428,11 @@ enum ftdi_cbus_func {/* FIXME: Recheck value, especially the last */ CBUS_SLEEP = 5, CBUS_CLK48 = 6, CBUS_CLK24 = 7, CBUS_CLK12 = 8, CBUS_CLK6 = 9, CBUS_IOMODE = 0xa, CBUS_BB_WR = 0xb, CBUS_BB_RD = 0xc, CBUS_BB = 0xd}; +enum ftdi_cbush_func {/* FIXME: Recheck value, especially the last */ + CBUSH_TRISTATE = 0, CBUSH_RXLED = 1, CBUSH_TXLED = 2, CBUSH_TXRXLED = 3, CBUSH_PWREN = 4, + CBUSH_SLEEP = 5, CBUSH_DRIVE_0 = 6, CBUSG_DRIVE1 = 7, CBUSH_IOMODE = 8, CBUSH_TXDEN = 9, + CBUSH_CLK30 = 0xa, CBUSH_CLK15 = 0xb, CBUSH_CLK7_5 = 0xc}; + /** Invert TXD# */ #define INVERT_TXD 0x01 /** Invert RXD# */ @@ -428,9 +452,10 @@ enum ftdi_cbus_func {/* FIXME: Recheck value, especially the last */ /** Interface Mode. */ #define CHANNEL_IS_UART 0x0 -#define CHANNEL_IS_245 0x1 -#define CHANNEL_IS_CPU 0x2 -#define CHANNEL_IS_OPTO 0x4 +#define CHANNEL_IS_FIFO 0x1 +#define CHANNEL_IS_OPTO 0x2 +#define CHANNEL_IS_CPU 0x4 +#define CHANNEL_IS_FT1284 0x8 #define DRIVE_4MA 0 #define DRIVE_8MA 1 @@ -563,6 +588,7 @@ extern "C" 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_set_eeprom_buf(struct ftdi_context *ftdi, const unsigned char * buf, int size); int ftdi_read_eeprom(struct ftdi_context *ftdi); int ftdi_read_chipid(struct ftdi_context *ftdi, unsigned int *chipid);