(*curdev)->next = NULL;
(*curdev)->dev = dev;
-
+ libusb_ref_device(dev);
curdev = &(*curdev)->next;
count++;
}
for (curdev = *devlist; curdev != NULL;)
{
next = curdev->next;
+ libusb_unref_device(curdev->dev);
free(curdev);
curdev = next;
}
\retval -7: set baudrate failed
\retval -8: get product description failed
\retval -9: get serial number failed
- \retval -11: libusb_init() failed
\retval -12: libusb_get_device_list() failed
\retval -13: libusb_get_device_descriptor() failed
*/
if (ftdi == NULL)
ftdi_error_return(-11, "ftdi context invalid");
- if (libusb_init(&ftdi->usb_ctx) < 0)
- ftdi_error_return(-11, "libusb_init() failed");
-
if (libusb_get_device_list(ftdi->usb_ctx, &devs) < 0)
ftdi_error_return(-12, "libusb_get_device_list() failed");
\note The description format may be extended in later versions.
\retval 0: all fine
- \retval -1: libusb_init() failed
\retval -2: libusb_get_device_list() failed
\retval -3: usb device not found
\retval -4: unable to open device
unsigned int bus_number, device_address;
int i = 0;
- if (libusb_init (&ftdi->usb_ctx) < 0)
- ftdi_error_return(-1, "libusb_init() failed");
-
if (libusb_get_device_list(ftdi->usb_ctx, &devs) < 0)
ftdi_error_return(-2, "libusb_get_device_list() failed");
break;
case TYPE_2232C:
- output[0x00] = (1<<(eeprom->channel_a_type)) & 0x7;
+ output[0x00] = (eeprom->channel_a_type)?((1<<(eeprom->channel_a_type)) & 0x7):0;
if ( eeprom->channel_a_driver == DRIVER_VCP)
output[0x00] |= DRIVER_VCP;
else
else
output[0x00] &= ~HIGH_CURRENT_DRIVE;
- output[0x01] = (1<<(eeprom->channel_b_type)) & 0x7;
+ output[0x01] = (eeprom->channel_b_type)?((1<<(eeprom->channel_b_type)) & 0x7):0;
if ( eeprom->channel_b_driver == DRIVER_VCP)
output[0x01] |= DRIVER_VCP;
else
output[0x16] = eeprom->cbus_function[4];
break;
case TYPE_2232H:
- output[0x00] = (1<<(eeprom->channel_a_type)) & 0x7;
+ output[0x00] = (eeprom->channel_a_type)?((1<<(eeprom->channel_a_type)) & 0x7):0;
if ( eeprom->channel_a_driver == DRIVER_VCP)
output[0x00] |= DRIVER_VCP;
else
output[0x00] &= ~DRIVER_VCP;
- output[0x01] = (1<<(eeprom->channel_b_type)) & 0x7;
+ output[0x01] = (eeprom->channel_b_type)?((1<<(eeprom->channel_b_type)) & 0x7):0;
if ( eeprom->channel_b_driver == DRIVER_VCP)
output[0x01] |= DRIVER_VCP;
else
fprintf(stderr,"FIXME: Build FT4232H specific EEPROM settings\n");
break;
case TYPE_232H:
- output[0x00] = (1<<(eeprom->channel_a_type)) & 0xf;
+ output[0x00] = (eeprom->channel_a_type)?((1<<(eeprom->channel_a_type)) & 0xf):0;
if ( eeprom->channel_a_driver == DRIVER_VCP)
output[0x00] |= DRIVER_VCPH;
else