Private
Public Access
2
0

usb: Updated ft4222 device detection

Signed-off-by: Henry Bruce <henry.bruce@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Henry Bruce
2015-07-02 17:54:22 -07:00
committed by Brendan Le Foll
parent 7ada55982d
commit d5e5539be3
3 changed files with 14 additions and 13 deletions

View File

@@ -32,7 +32,7 @@ extern "C" {
mraa_result_t mraa_ftdi_ft4222_init();
mraa_result_t mraa_ftdi_ft4222_get_version(unsigned int* versionChip, unsigned int* versionLib);
mraa_board_t* mraa_ftdi_ft4222(mraa_board_t* board);
mraa_board_t* mraa_ftdi_ft4222();
#ifdef __cplusplus

View File

@@ -78,12 +78,14 @@ mraa_ftdi_ft4222_init()
goto init_exit;
}
syslog(LOG_INFO, "FT_GetDeviceInfoList returned %d devices\n", numDevs);
DWORD locationId;
int bus = 0;
if (numDevs > bus && devInfo[bus].Type == FT_DEVICE_4222H_3) {
locationId = devInfo[bus].LocId;
} else {
syslog(LOG_NOTICE, "FT_GetDeviceInfoList returned %d devices\n", numDevs);
DWORD locationId = 0;
for (i = 0; i < numDevs && locationId == 0; ++i) {
printf("%d: type = %d, location = %d\n", i, devInfo[i].Type, devInfo[i].LocId);
if (devInfo[i].Type == FT_DEVICE_4222H_0 || devInfo[i].Type == FT_DEVICE_4222H_3)
locationId = devInfo[i].LocId;
}
if (locationId == 0) {
syslog(LOG_ERR, "FT_GetDeviceInfoList contains no valid devices\n");
mraaStatus = MRAA_ERROR_NO_RESOURCES;
goto init_exit;
@@ -322,17 +324,14 @@ mraa_i2c_ft4222_create_func_table()
}
mraa_board_t*
mraa_ftdi_ft4222(mraa_board_t* board)
mraa_ftdi_ft4222()
{
if (plat == NULL)
return NULL;
mraa_board_t* sub_plat = (mraa_board_t*) calloc(1, sizeof(mraa_board_t));
if (sub_plat == NULL)
return NULL;
int pinIndex = 0;
int numUsbGpio = 0;
int numUsbPins = numUsbGpio + 2; // Add SDA and SCL
sub_plat->platform_type = MRAA_FTDI_FT4222;
sub_plat->platform_name = PLATFORM_NAME;
sub_plat->phy_pin_count = numUsbPins;
sub_plat->gpio_count = numUsbGpio;
@@ -372,7 +371,6 @@ mraa_ftdi_ft4222(mraa_board_t* board)
// Set override functions
sub_plat->adv_func = mraa_i2c_ft4222_create_func_table();
board->sub_platform = sub_plat;
return sub_plat;
}

View File

@@ -34,6 +34,7 @@
mraa_platform_t
mraa_usb_platform_extender(mraa_board_t* board)
{
mraa_board_t* sub_plat = NULL;
mraa_platform_t platform_type = MRAA_UNKNOWN_PLATFORM;
#ifdef FTDI4222
if (mraa_ftdi_ft4222_init() == MRAA_SUCCESS) {
@@ -47,13 +48,15 @@ mraa_usb_platform_extender(mraa_board_t* board)
switch (platform_type) {
#ifdef FTDI4222
case MRAA_FTDI_FT4222:
mraa_ftdi_ft4222(board);
sub_plat = mraa_ftdi_ft4222();
break;
#endif
default:
syslog(LOG_ERR, "Unknown USB Platform Extender, currently not supported by MRAA");
}
sub_plat->platform_type = platform_type;
board->sub_platform = sub_plat;
return platform_type;
}