Fix small typo
[libftdi] / src / ftdi.h
index 94d16dc..b7c0113 100644 (file)
@@ -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 <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 */
@@ -183,6 +183,8 @@ struct ftdi_eeprom
     /** remote wakeup */
     int remote_wakeup;
 
+    int is_not_pnp;
+
     /* Suspend on DBUS7 Low */
     int suspend_dbus7;
 
@@ -197,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 */
@@ -245,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];
 };
@@ -313,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
@@ -362,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
@@ -476,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);