detach_errno = errno;
#endif
+#ifdef __WIN32__
// set configuration (needed especially for windows)
// tolerate EBUSY: one device with one configuration, but two interfaces
// and libftdi sessions to both interfaces (e.g. FT2232)
ftdi_error_return(-3, "unable to set usb configuration. Make sure ftdi_sio is unloaded!");
}
}
+#endif
if (usb_claim_interface(ftdi->usb_dev, ftdi->interface) != 0)
{
ftdi_error_return(-6, "ftdi_usb_reset failed");
}
- if (ftdi_set_baudrate (ftdi, 9600) != 0)
- {
- ftdi_usb_close_internal (ftdi);
- ftdi_error_return(-7, "set baudrate failed");
- }
-
// Try to guess chip type
// Bug in the BM type chips: bcdDevice is 0x200 for serial == 0
if (dev->descriptor.bcdDevice == 0x400 || (dev->descriptor.bcdDevice == 0x200
break;
}
+ if (ftdi_set_baudrate (ftdi, 9600) != 0)
+ {
+ ftdi_usb_close_internal (ftdi);
+ ftdi_error_return(-7, "set baudrate failed");
+ }
+
ftdi_error_return(0, "all fine");
}
}
// Split into "value" and "index" values
*value = (unsigned short)(encoded_divisor & 0xFFFF);
- if (ftdi->type == TYPE_2232C)
+ if (ftdi->type == TYPE_2232C || ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H)
{
*index = (unsigned short)(encoded_divisor >> 8);
*index &= 0xFF00;