eeprom: Fix handling of high_current_drive parameter
[libftdi] / src / ftdi.c
index 9495fb5..e82514e 100644 (file)
@@ -1992,7 +1992,7 @@ int ftdi_write_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunk
 /**
     Reads data in chunks (see ftdi_read_data_set_chunksize()) from the chip.
 
-    Automatically strips the two modem status bytes transfered during every read.
+    Automatically strips the two modem status bytes transferred during every read.
 
     \param ftdi pointer to ftdi_context
     \param buf Buffer to store data in
@@ -3136,23 +3136,23 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi)
         case TYPE_2232C:
 
             output[0x00] = type2bit(eeprom->channel_a_type, TYPE_2232C);
-            if ( eeprom->channel_a_driver == DRIVER_VCP)
+            if (eeprom->channel_a_driver == DRIVER_VCP)
                 output[0x00] |= DRIVER_VCP;
             else
                 output[0x00] &= ~DRIVER_VCP;
 
-            if ( eeprom->high_current_a == HIGH_CURRENT_DRIVE)
+            if (eeprom->high_current_a)
                 output[0x00] |= HIGH_CURRENT_DRIVE;
             else
                 output[0x00] &= ~HIGH_CURRENT_DRIVE;
 
             output[0x01] = type2bit(eeprom->channel_b_type, TYPE_2232C);
-            if ( eeprom->channel_b_driver == DRIVER_VCP)
+            if (eeprom->channel_b_driver == DRIVER_VCP)
                 output[0x01] |= DRIVER_VCP;
             else
                 output[0x01] &= ~DRIVER_VCP;
 
-            if ( eeprom->high_current_b == HIGH_CURRENT_DRIVE)
+            if (eeprom->high_current_b)
                 output[0x01] |= HIGH_CURRENT_DRIVE;
             else
                 output[0x01] &= ~HIGH_CURRENT_DRIVE;
@@ -3180,8 +3180,10 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi)
             break;
         case TYPE_R:
             output[0x00] = type2bit(eeprom->channel_a_type, TYPE_R);
-            if (eeprom->high_current == HIGH_CURRENT_DRIVE_R)
+            if (eeprom->high_current)
                 output[0x00] |= HIGH_CURRENT_DRIVE_R;
+            if (eeprom->channel_a_driver == DRIVER_VCP)
+                output[0x00] |= DRIVER_VCP;
             if (eeprom->external_oscillator)
                 output[0x00] |= 0x02;
             output[0x01] = 0x40; /* Hard coded Endpoint Size*/