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:
committed by
Brendan Le Foll
parent
7ada55982d
commit
d5e5539be3
@@ -32,7 +32,7 @@ extern "C" {
|
|||||||
|
|
||||||
mraa_result_t mraa_ftdi_ft4222_init();
|
mraa_result_t mraa_ftdi_ft4222_init();
|
||||||
mraa_result_t mraa_ftdi_ft4222_get_version(unsigned int* versionChip, unsigned int* versionLib);
|
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
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -78,12 +78,14 @@ mraa_ftdi_ft4222_init()
|
|||||||
goto init_exit;
|
goto init_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
syslog(LOG_INFO, "FT_GetDeviceInfoList returned %d devices\n", numDevs);
|
syslog(LOG_NOTICE, "FT_GetDeviceInfoList returned %d devices\n", numDevs);
|
||||||
DWORD locationId;
|
DWORD locationId = 0;
|
||||||
int bus = 0;
|
for (i = 0; i < numDevs && locationId == 0; ++i) {
|
||||||
if (numDevs > bus && devInfo[bus].Type == FT_DEVICE_4222H_3) {
|
printf("%d: type = %d, location = %d\n", i, devInfo[i].Type, devInfo[i].LocId);
|
||||||
locationId = devInfo[bus].LocId;
|
if (devInfo[i].Type == FT_DEVICE_4222H_0 || devInfo[i].Type == FT_DEVICE_4222H_3)
|
||||||
} else {
|
locationId = devInfo[i].LocId;
|
||||||
|
}
|
||||||
|
if (locationId == 0) {
|
||||||
syslog(LOG_ERR, "FT_GetDeviceInfoList contains no valid devices\n");
|
syslog(LOG_ERR, "FT_GetDeviceInfoList contains no valid devices\n");
|
||||||
mraaStatus = MRAA_ERROR_NO_RESOURCES;
|
mraaStatus = MRAA_ERROR_NO_RESOURCES;
|
||||||
goto init_exit;
|
goto init_exit;
|
||||||
@@ -322,17 +324,14 @@ mraa_i2c_ft4222_create_func_table()
|
|||||||
}
|
}
|
||||||
|
|
||||||
mraa_board_t*
|
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));
|
mraa_board_t* sub_plat = (mraa_board_t*) calloc(1, sizeof(mraa_board_t));
|
||||||
if (sub_plat == NULL)
|
if (sub_plat == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
int pinIndex = 0;
|
int pinIndex = 0;
|
||||||
int numUsbGpio = 0;
|
int numUsbGpio = 0;
|
||||||
int numUsbPins = numUsbGpio + 2; // Add SDA and SCL
|
int numUsbPins = numUsbGpio + 2; // Add SDA and SCL
|
||||||
sub_plat->platform_type = MRAA_FTDI_FT4222;
|
|
||||||
sub_plat->platform_name = PLATFORM_NAME;
|
sub_plat->platform_name = PLATFORM_NAME;
|
||||||
sub_plat->phy_pin_count = numUsbPins;
|
sub_plat->phy_pin_count = numUsbPins;
|
||||||
sub_plat->gpio_count = numUsbGpio;
|
sub_plat->gpio_count = numUsbGpio;
|
||||||
@@ -372,7 +371,6 @@ mraa_ftdi_ft4222(mraa_board_t* board)
|
|||||||
// Set override functions
|
// Set override functions
|
||||||
sub_plat->adv_func = mraa_i2c_ft4222_create_func_table();
|
sub_plat->adv_func = mraa_i2c_ft4222_create_func_table();
|
||||||
|
|
||||||
board->sub_platform = sub_plat;
|
|
||||||
return sub_plat;
|
return sub_plat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
mraa_platform_t
|
mraa_platform_t
|
||||||
mraa_usb_platform_extender(mraa_board_t* board)
|
mraa_usb_platform_extender(mraa_board_t* board)
|
||||||
{
|
{
|
||||||
|
mraa_board_t* sub_plat = NULL;
|
||||||
mraa_platform_t platform_type = MRAA_UNKNOWN_PLATFORM;
|
mraa_platform_t platform_type = MRAA_UNKNOWN_PLATFORM;
|
||||||
#ifdef FTDI4222
|
#ifdef FTDI4222
|
||||||
if (mraa_ftdi_ft4222_init() == MRAA_SUCCESS) {
|
if (mraa_ftdi_ft4222_init() == MRAA_SUCCESS) {
|
||||||
@@ -47,13 +48,15 @@ mraa_usb_platform_extender(mraa_board_t* board)
|
|||||||
switch (platform_type) {
|
switch (platform_type) {
|
||||||
#ifdef FTDI4222
|
#ifdef FTDI4222
|
||||||
case MRAA_FTDI_FT4222:
|
case MRAA_FTDI_FT4222:
|
||||||
mraa_ftdi_ft4222(board);
|
sub_plat = mraa_ftdi_ft4222();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
syslog(LOG_ERR, "Unknown USB Platform Extender, currently not supported by MRAA");
|
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;
|
return platform_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user