libftdi-git Archives

Subject: port libftdi to libusb-1.0 branch, eeprom-new, updated. v0.17-134-g516ebfb

From: libftdi-git@xxxxxxxxxxxxxxxxxxxxxxx
To: libftdi-git@xxxxxxxxxxxxxxxxxxxxxxx
Date: Fri, 24 Sep 2010 15:02:59 +0200 (CEST)
The branch, eeprom-new has been updated
       via  516ebfb1a0b4a53d358d2cbb09f0b4a6ae46a34e (commit)
      from  fccd6562b4de965f7032f5e55a5668f4629ab313 (commit)


- Log -----------------------------------------------------------------
commit 516ebfb1a0b4a53d358d2cbb09f0b4a6ae46a34e
Author: Thomas Jarosch <thomas.jarosch@xxxxxxxxxxxxx>
Date:   Fri Sep 24 15:02:56 2010 +0200

    Adapt user area size calculation to official FTDI formula

-----------------------------------------------------------------------

Summary of changes:
 src/ftdi.c |   33 ++++++---------------------------
 1 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/src/ftdi.c b/src/ftdi.c
index 5cf2012..9c0d53d 100644
--- a/src/ftdi.c
+++ b/src/ftdi.c
@@ -2267,7 +2267,7 @@ int ftdi_eeprom_initdefaults(struct ftdi_context *ftdi, 
char * manufacturer,
 
     \param ftdi pointer to ftdi_context
 
-    \retval >0: free eeprom size
+    \retval >=0: size of eeprom user area in bytes
     \retval -1: eeprom size (128 bytes) exceeded by custom strings
     \retval -2: Invalid eeprom pointer
     \retval -3: Invalid cbus function setting
@@ -2280,7 +2280,7 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi)
     unsigned char i, j, eeprom_size_mask;
     unsigned short checksum, value;
     unsigned char manufacturer_size = 0, product_size = 0, serial_size = 0;
-    int size_check;
+    int user_area_size;
     struct ftdi_eeprom *eeprom;
     unsigned char * output;
 
@@ -2307,31 +2307,10 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi)
     if (eeprom->serial != NULL)
         serial_size = strlen(eeprom->serial);
 
-    size_check = 0x80;
-    switch(ftdi->type)
-    {
-    case TYPE_2232H:
-    case TYPE_4232H:
-        size_check -= 4;
-    case TYPE_R:
-        size_check -= 4;
-    case TYPE_2232C:
-        size_check -= 4;
-    case TYPE_AM:
-    case TYPE_BM:
-        size_check -= 0x14*2;
-    }
-
-    size_check -= manufacturer_size*2;
-    size_check -= product_size*2;
-    size_check -= serial_size*2;
-
-    /* Space for the string type and pointer bytes */
-    size_check -= -9;
-
     // eeprom size exceeded?
-    if (size_check < 0)
-        return (-1);
+    user_area_size = (48 - (manufacturer_size + product_size + serial_size)) * 
2;
+    if (user_area_size < 0)
+        ftdi_error_return(-1,"eeprom size exceeded");
 
     // empty eeprom
     memset (ftdi->eeprom->buf, 0, FTDI_MAX_EEPROM_SIZE);
@@ -2649,7 +2628,7 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi)
     output[eeprom->size-2] = checksum;
     output[eeprom->size-1] = checksum >> 8;
 
-    return size_check;
+    return user_area_size;
 }
 
 /**


hooks/post-receive
-- 
port libftdi to libusb-1.0

--
libftdi-git - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi-git+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread
  • port libftdi to libusb-1.0 branch, eeprom-new, updated. v0.17-134-g516ebfb, libftdi-git <=