Release values in EEPROM structure are not user changable. Remove it from the ftdi_ee...
[libftdi] / src / ftdi.h
index e7de304..d42c8c2 100644 (file)
@@ -182,8 +182,9 @@ struct ftdi_eeprom
     int self_powered;
     /** remote wakeup */
     int remote_wakeup;
-    /** release */
-    int release;
+
+    /* Suspend on DBUS7 Low */
+    int suspend_dbus7;
 
     /** input in isochronous transfer mode */
     int in_is_isochronous;
@@ -194,8 +195,6 @@ struct ftdi_eeprom
 
     /** use serial */
     int use_serial;
-    /** fake usb version */
-    int change_usb_version;
     /** usb version */
     int usb_version;
     /** maximum power */
@@ -210,22 +209,44 @@ struct ftdi_eeprom
 
     /* 2232D/H(/FT4432H?) specific */
     /* Hardware type, 0 = RS232 Uart, 1 = 245 FIFO, 2 = CPU FIFO, 
-       3 = OPTO Isolate */
+       4 = OPTO Isolate */
     int channel_a_type;
     int channel_b_type;
     /*  Driver Type, 1 = VCP */
     int channel_a_driver;
     int channel_b_driver;
+
     /* Special function of FT232R devices (and possibly others as well) */
     /** CBUS pin function. See CBUS_xxx defines. */
     int cbus_function[5];
-    /** Select hight current drive. */
+    /** Select hight current drive on R devices. */
+    int high_current;
+    /** Select hight current drive on A channel (2232C */
     int high_current_a;
-    /** Select hight current drive on B port (2232C). */
+    /** Select hight current drive on B channel (2232C). */
     int high_current_b;
     /** Select inversion of data lines (bitmask). */
     int invert;
 
+    /*2232H/4432H Group specific values */
+    /* Group0 is AL on 2322H and A on 4232H
+       Group1 is AH on 2232H and B on 4232H
+       Group2 is BL on 2322H and C on 4232H
+       Group3 is BH on 2232H and C on 4232H*/
+    int group0_drive;
+    int group0_schmitt;
+    int group0_slew;
+    int group1_drive;
+    int group1_schmitt;
+    int group1_slew;
+    int group2_drive;
+    int group2_schmitt;
+    int group2_slew;
+    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;
@@ -301,33 +322,11 @@ struct ftdi_device_list
     struct libusb_device *dev;
 };
 
-/** TXDEN */
-#define CBUS_TXDEN 0
-/** PWREN# */
-#define CBUS_PWREN 1
-/** RXLED# */
-#define CBUS_RXLED 2
-/** TXLED#*/
-#define CBUS_TXLED 3
-/** RXLED# & TXLED# */
-#define CBUS_TXRXLED 4
-/** SLEEP# */
-#define CBUS_SLEEP 5
-/** 48 MHz clock */
-#define CBUS_CLK48 6
-/** 24 MHz clock */
-#define CBUS_CLK24 7
-/** 12 MHz clock */
-#define CBUS_CLK12 8
-/** 6 MHz clock */
-#define CBUS_CLK6 9
-/** Bitbang IO Mode*/
-#define CBUS_IOMODE 10
-/** Bitbang IO WR#*/
-#define CBUS_BB_WR 11
-/** Bitbang IO RD#*/
-#define CBUS_BB_RD 12
-
+#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,
+    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};
 
 /** Invert TXD# */
 #define INVERT_TXD 0x01
@@ -350,13 +349,23 @@ struct ftdi_device_list
 #define CHANNEL_IS_UART 0x0
 #define CHANNEL_IS_245  0x1
 #define CHANNEL_IS_CPU  0x2
-#define CHANNEL_IS_OPTO 0x3
+#define CHANNEL_IS_OPTO 0x4
+
+#define DRIVE_4MA  0
+#define DRIVE_8MA  1
+#define DRIVE_12MA 2
+#define DRIVE_16MA 3
+#define SLOW_SLEW  4
+#define IS_SCHMITT 8
 
 /** Driver Type. */
-#define DRIVER_VCP 0x04
+#define DRIVER_VCP 0x08
+
+#define SUSPEND_DBUS7 0x80
 
 /** High current drive. */
-#define HIGH_CURRENT_DRIVE 0x10
+#define HIGH_CURRENT_DRIVE   0x10
+#define HIGH_CURRENT_DRIVE_R 0x04
 
 /**
     \brief Progress Info for streaming read