X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=src%2Fftdi.h;h=dd442df34a07596d482b5145810465e39878ac10;hp=b7c011377a42bb8d23f7eb48189f9d8e06e90fcb;hb=837a71d6c580972b9638588a50cec5fbb035add6;hpb=8a987aa2e1335d9ef3ebbdf496a7b071317b40a3 diff --git a/src/ftdi.h b/src/ftdi.h index b7c0113..dd442df 100644 --- a/src/ftdi.h +++ b/src/ftdi.h @@ -23,7 +23,7 @@ #define FTDI_MAX_EEPROM_SIZE 256 /** FTDI chip type */ -enum ftdi_chip_type { TYPE_AM=0, TYPE_BM=1, TYPE_2232C=2, TYPE_R=3, TYPE_2232H=4, TYPE_4232H=5 }; +enum ftdi_chip_type { TYPE_AM=0, TYPE_BM=1, TYPE_2232C=2, TYPE_R=3, TYPE_2232H=4, TYPE_4232H=5, TYPE_232H=6 }; /** Parity mode for ftdi_set_line_property() */ enum ftdi_parity_type { NONE=0, ODD=1, EVEN=2, MARK=3, SPACE=4 }; /** Number of stop bits for ftdi_set_line_property() */ @@ -57,6 +57,13 @@ enum ftdi_interface INTERFACE_D = 4 }; +/** Automatic loading / unloading of kernel modules */ +enum ftdi_module_detach_mode +{ + AUTO_DETACH_SIO_MODULE = 0, + DONT_DETACH_SIO_MODULE = 1 +}; + /* Shifting commands IN MPSSE Mode*/ #define MPSSE_WRITE_NEG 0x01 /* Write TDI/DO on negative TCK/SK edge*/ #define MPSSE_BITMODE 0x02 /* Write bits, not bytes */ @@ -78,6 +85,21 @@ enum ftdi_interface #define LOOPBACK_START 0x84 #define LOOPBACK_END 0x85 #define TCK_DIVISOR 0x86 +/* H Type specific commands */ +#define DIS_DIV_5 0x8a +#define EN_DIV_5 0x8b +#define EN_3_PHASE 0x8c +#define DIS_3_PHASE 0x8d +#define CLK_BITS 0x8e +#define CLK_BYTES 0x8f +#define CLK_WAIT_HIGH 0x94 +#define CLK_WAIT_LOW 0x95 +#define EN_ADAPTIVE 0x96 +#define DIS_ADAPTIVE 0x97 +#define CLK_BYTES_OR_HIGH 0x9c +#define CLK_BYTES_OR_LOW 0x0d +/*FT232H specific commands */ +#define DRIVE_OPEN_COLLECTOR 0x9e /* Value Low */ /* Value HIGH */ /*rate is 12000000/((1+value)*2) */ #define DIV_VALUE(rate) (rate > 6000000)?0:((6000000/rate -1) > 0xffff)? 0xffff: (6000000/rate -1) @@ -250,6 +272,8 @@ struct ftdi_eeprom int group3_schmitt; int group3_slew; + int powersave; + /** 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; @@ -313,6 +337,9 @@ struct ftdi_context /** String representation of last error */ char *error_str; + + /** Defines behavior in case a kernel module is already attached to the device */ + enum ftdi_module_detach_mode module_detach_mode; }; /** @@ -359,7 +386,8 @@ enum ftdi_eeprom_value GROUP3_SCHMITT = 36, GROUP3_SLEW = 37, CHIP_SIZE = 38, - CHIP_TYPE = 39 + CHIP_TYPE = 39, + POWER_SAVE = 40 }; /** @@ -373,6 +401,8 @@ struct ftdi_device_list struct libusb_device *dev; }; +#define POWER_SAVE_DISABLE_H 0x80 + #define USE_SERIAL_NUM 0x08 enum ftdi_cbus_func {/* FIXME: Recheck value, especially the last */ CBUS_TXDEN = 0, CBUS_PWREN = 1, CBUS_RXLED = 2, CBUS_TXLED = 3, CBUS_TXRXLED = 4, @@ -411,6 +441,7 @@ enum ftdi_cbus_func {/* FIXME: Recheck value, especially the last */ /** Driver Type. */ #define DRIVER_VCP 0x08 +#define DRIVER_VCPH 0x10 /* FT232H has moved the VCP bit */ #define USE_USB_VERSION_BIT 0x10