X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=src%2Fftdi.h;h=22e1197609769b899a605463f14450c8a094595b;hp=b7c011377a42bb8d23f7eb48189f9d8e06e90fcb;hb=18199b76ecd68cee86b71111fe1a8af77e0631e3;hpb=8a987aa2e1335d9ef3ebbdf496a7b071317b40a3 diff --git a/src/ftdi.h b/src/ftdi.h index b7c0113..22e1197 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,12 @@ struct ftdi_eeprom int group3_schmitt; 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. */ int size; @@ -313,6 +341,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 +390,11 @@ enum ftdi_eeprom_value GROUP3_SCHMITT = 36, GROUP3_SLEW = 37, CHIP_SIZE = 38, - CHIP_TYPE = 39 + CHIP_TYPE = 39, + POWER_SAVE = 40, + CLOCK_POLARITY = 41, + DATA_ORDER = 42, + FLOW_CONTROL = 43 }; /** @@ -372,6 +407,10 @@ 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 +#define FT1284_FLOW_CONTROL 0x04 +#define POWER_SAVE_DISABLE_H 0x80 #define USE_SERIAL_NUM 0x08 enum ftdi_cbus_func {/* FIXME: Recheck value, especially the last */ @@ -411,6 +450,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