ftdi.c - description
-------------------
begin : Fri Apr 4 2003
- copyright : (C) 2003-2013 by Intra2net AG and the libftdi developers
+ copyright : (C) 2003-2014 by Intra2net AG and the libftdi developers
email : opensource@intra2net.com
***************************************************************************/
*
* @return ftdi_version_info Library version information
**/
-struct ftdi_version_info ftdi_get_library_version()
+struct ftdi_version_info ftdi_get_library_version(void)
{
struct ftdi_version_info ver;
// Determine maximum packet size. Init with default value.
// New hi-speed devices from FTDI use a packet size of 512 bytes
// but could be connected to a normal speed USB hub -> 64 bytes packet size.
- if (ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H || ftdi->type == TYPE_232H || ftdi->type == TYPE_230X)
+ if (ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H || ftdi->type == TYPE_232H)
packet_size = 512;
else
packet_size = 64;
#define H_CLK 120000000
#define C_CLK 48000000
- if ((ftdi->type == TYPE_2232H) || (ftdi->type == TYPE_4232H) || (ftdi->type == TYPE_232H) || (ftdi->type == TYPE_230X))
+ if ((ftdi->type == TYPE_2232H) || (ftdi->type == TYPE_4232H) || (ftdi->type == TYPE_232H))
{
if(baudrate*10 > H_CLK /0x3fff)
{
}
// Split into "value" and "index" values
*value = (unsigned short)(encoded_divisor & 0xFFFF);
- if (ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H || ftdi->type == TYPE_232H || ftdi->type == TYPE_230X)
+ if (ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H || ftdi->type == TYPE_232H)
{
*index = (unsigned short)(encoded_divisor >> 8);
*index &= 0xFF00;
\retval <0: error code from usb_bulk_write()
\retval >0: number of bytes written
*/
-int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size)
+int ftdi_write_data(struct ftdi_context *ftdi, const unsigned char *buf, int size)
{
int offset = 0;
int actual_length;
if (offset+write_size > size)
write_size = size-offset;
- if (libusb_bulk_transfer(ftdi->usb_dev, ftdi->in_ep, buf+offset, write_size, &actual_length, ftdi->usb_write_timeout) < 0)
+ if (libusb_bulk_transfer(ftdi->usb_dev, ftdi->in_ep, (unsigned char *)buf+offset, write_size, &actual_length, ftdi->usb_write_timeout) < 0)
ftdi_error_return(-1, "usb bulk write failed");
offset += actual_length;
i = 0;
switch (ftdi->type)
{
- case TYPE_232H:
- i += 2;
case TYPE_2232H:
case TYPE_4232H:
i += 2;
case TYPE_BM:
i += 0x94;
break;
+ case TYPE_232H:
case TYPE_230X:
i = 0xa0;
break;
output[0x01] |= POWER_SAVE_DISABLE_H;
else
output[0x01] &= ~POWER_SAVE_DISABLE_H;
+
+ if (eeprom->suspend_pull_downs)
+ output[0x0a] |= 0x4;
+ else
+ output[0x0a] &= ~0x4;
+
if (eeprom->clock_polarity)
output[0x01] |= FT1284_CLK_IDLE_STATE;
else
}
if (ftdi_read_eeprom_location( ftdi, chip_type_location>>1, &chip_type))
- ftdi_error_return(-5, "Reading failed failed");
+ ftdi_error_return(-5, "Reading failed");
fprintf(stderr," loc 0x%04x val 0x%04x\n", chip_type_location,chip_type);
if ((chip_type & 0xff) != 0x66)
{
NULL, 0, ftdi->usb_write_timeout) != 0)
ftdi_error_return(-3, "Writing magic failed");
if (ftdi_read_eeprom_location( ftdi, 0x00, &eeprom_value))
- ftdi_error_return(-4, "Reading failed failed");
+ ftdi_error_return(-4, "Reading failed");
if (eeprom_value == MAGIC)
{
ftdi->eeprom->chip = 0x46;
else
{
if (ftdi_read_eeprom_location( ftdi, 0x40, &eeprom_value))
- ftdi_error_return(-4, "Reading failed failed");
+ ftdi_error_return(-4, "Reading failed");
if (eeprom_value == MAGIC)
ftdi->eeprom->chip = 0x56;
else
{
if (ftdi_read_eeprom_location( ftdi, 0xc0, &eeprom_value))
- ftdi_error_return(-4, "Reading failed failed");
+ ftdi_error_return(-4, "Reading failed");
if (eeprom_value == MAGIC)
ftdi->eeprom->chip = 0x66;
else