diff options
Diffstat (limited to 'src/jtag/drivers/ft2232.c')
-rw-r--r-- | src/jtag/drivers/ft2232.c | 150 |
1 files changed, 86 insertions, 64 deletions
diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c index 3168f990..3cca26d9 100644 --- a/src/jtag/drivers/ft2232.c +++ b/src/jtag/drivers/ft2232.c @@ -99,6 +99,7 @@ /* FT2232 access library includes */ #if BUILD_FT2232_FTD2XX == 1 #include <ftd2xx.h> +#include "ftd2xx_common.h" enum ftdi_interface { @@ -515,7 +516,7 @@ static int ft2232_write(uint8_t* buf, int size, uint32_t* bytes_written) if ((status = FT_Write(ftdih, buf, size, &dw_bytes_written)) != FT_OK) { *bytes_written = dw_bytes_written; - LOG_ERROR("FT_Write returned: %" PRIu32, status); + LOG_ERROR("FT_Write returned: %s", ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } else @@ -558,7 +559,7 @@ static int ft2232_read(uint8_t* buf, uint32_t size, uint32_t* bytes_read) *bytes_read, &dw_bytes_read)) != FT_OK) { *bytes_read = 0; - LOG_ERROR("FT_Read returned: %" PRIu32, status); + LOG_ERROR("FT_Read returned: %s", ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } *bytes_read += dw_bytes_read; @@ -2215,11 +2216,13 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor if (more) { - LOG_WARNING("unable to open ftdi device (trying more): %" PRIu32, status); + LOG_WARNING("unable to open ftdi device (trying more): %s", + ftd2xx_status_string(status)); *try_more = 1; return ERROR_JTAG_INIT_FAILED; } - LOG_ERROR("unable to open ftdi device: %" PRIu32, status); + LOG_ERROR("unable to open ftdi device: %s", + ftd2xx_status_string(status)); status = FT_ListDevices(&num_devices, NULL, FT_LIST_NUMBER_ONLY); if (status == FT_OK) { @@ -2235,7 +2238,7 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor if (status == FT_OK) { - LOG_ERROR("ListDevices: %" PRIu32, num_devices); + LOG_ERROR("ListDevices: %" PRIu32, (uint32_t)num_devices); for (i = 0; i < num_devices; i++) LOG_ERROR("%" PRIu32 ": \"%s\"", i, desc_array[i]); } @@ -2254,7 +2257,8 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor if ((status = FT_SetLatencyTimer(ftdih, ft2232_latency)) != FT_OK) { - LOG_ERROR("unable to set latency timer: %" PRIu32, status); + LOG_ERROR("unable to set latency timer: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_INIT_FAILED; } @@ -2263,10 +2267,11 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor /* ftd2xx 1.04 (linux) has a bug when calling FT_GetLatencyTimer * so ignore errors if using this driver version */ DWORD dw_version; - + status = FT_GetDriverVersion(ftdih, &dw_version); - LOG_ERROR("unable to get latency timer: %" PRIu32, status); - + LOG_ERROR("unable to get latency timer: %s", + ftd2xx_status_string(status)); + if ((status == FT_OK) && (dw_version == 0x10004)) { LOG_ERROR("ftd2xx 1.04 detected - this has known issues " \ "with FT_GetLatencyTimer, upgrade to a newer version"); @@ -2282,19 +2287,22 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor if ((status = FT_SetTimeouts(ftdih, 5000, 5000)) != FT_OK) { - LOG_ERROR("unable to set timeouts: %" PRIu32, status); + LOG_ERROR("unable to set timeouts: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_INIT_FAILED; } if ((status = FT_SetBitMode(ftdih, 0x0b, 2)) != FT_OK) { - LOG_ERROR("unable to enable bit i/o mode: %" PRIu32, status); + LOG_ERROR("unable to enable bit i/o mode: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_INIT_FAILED; } if ((status = FT_GetDeviceInfo(ftdih, &ftdi_device, &deviceID, SerialNumber, Description, NULL)) != FT_OK) { - LOG_ERROR("unable to get FT_GetDeviceInfo: %" PRIu32, status); + LOG_ERROR("unable to get FT_GetDeviceInfo: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_INIT_FAILED; } else @@ -2304,8 +2312,8 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor unsigned no_of_known_types = ARRAY_SIZE(type_str) - 1; unsigned type_index = ((unsigned)ftdi_device <= no_of_known_types) ? ftdi_device : FT_DEVICE_UNKNOWN; - LOG_INFO("device: %" PRIu32 " \"%s\"", ftdi_device, type_str[type_index]); - LOG_INFO("deviceID: %" PRIu32, deviceID); + LOG_INFO("device: %" PRIu32 " \"%s\"", (uint32_t)ftdi_device, type_str[type_index]); + LOG_INFO("deviceID: %" PRIu32, (uint32_t)deviceID); LOG_INFO("SerialNumber: %s", SerialNumber); LOG_INFO("Description: %s", Description); } @@ -2319,7 +2327,8 @@ static int ft2232_purge_ftd2xx(void) if ((status = FT_Purge(ftdih, FT_PURGE_RX | FT_PURGE_TX)) != FT_OK) { - LOG_ERROR("error purging ftd2xx device: %" PRIu32, status); + LOG_ERROR("error purging ftd2xx device: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_INIT_FAILED; } @@ -3640,7 +3649,8 @@ static int signalyzer_h_led_set(unsigned char channel, unsigned char led, if ((status = signalyzer_h_ctrl_write(SIGNALYZER_DATA_BUFFER_ADDR, ((uint32_t)(channel << 8) | led))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3648,7 +3658,8 @@ static int signalyzer_h_led_set(unsigned char channel, unsigned char led, (SIGNALYZER_DATA_BUFFER_ADDR + 1), ((uint32_t)(on_time << 8) | off_time))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3656,14 +3667,16 @@ static int signalyzer_h_led_set(unsigned char channel, unsigned char led, (SIGNALYZER_DATA_BUFFER_ADDR + 2), ((uint32_t)cycles))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write(SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_LED_SET)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3752,7 +3765,8 @@ static int signalyzer_h_init(void) if ((status = signalyzer_h_ctrl_write(SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_VERSION)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3762,8 +3776,8 @@ static int signalyzer_h_init(void) (SIGNALYZER_DATA_BUFFER_ADDR + i), &read_buf[i])) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_read returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_read returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } } @@ -3776,21 +3790,24 @@ static int signalyzer_h_init(void) if ((status = signalyzer_h_ctrl_write(SIGNALYZER_DATA_BUFFER_ADDR, (uint32_t)(signalyzer_h_side << 8))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write(SIGNALYZER_DATA_BUFFER_ADDR + 1, 0x0404)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write(SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_GPIO_STATE)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3798,28 +3815,32 @@ static int signalyzer_h_init(void) if ((status = signalyzer_h_ctrl_write(SIGNALYZER_DATA_BUFFER_ADDR, ((uint32_t)(signalyzer_h_side << 8) | 0x01))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write( (SIGNALYZER_DATA_BUFFER_ADDR + 1), 0xA000)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write( (SIGNALYZER_DATA_BUFFER_ADDR + 2), 0x0008)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write(SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_I2C)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3828,7 +3849,8 @@ static int signalyzer_h_init(void) if ((status = signalyzer_h_ctrl_read(SIGNALYZER_COMMAND_ADDR, &read_buf[0])) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_read returned: %" PRIu32, status); + LOG_ERROR("signalyzer_h_ctrl_read returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3842,8 +3864,8 @@ static int signalyzer_h_init(void) (SIGNALYZER_DATA_BUFFER_ADDR + i), &read_buf[i])) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_read returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_read returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } } @@ -3907,16 +3929,16 @@ static int signalyzer_h_init(void) ((uint32_t)(signalyzer_h_side << 8) | 0x01))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write(SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_POWERCONTROL_SET)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3925,8 +3947,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR, (uint32_t)(signalyzer_h_side << 8))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3934,16 +3956,16 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR + 1, 0x0000)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } if ((status = signalyzer_h_ctrl_write(SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_GPIO_MODE)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3952,8 +3974,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR, (uint32_t)(signalyzer_h_side << 8))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3961,8 +3983,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR + 1, 0x4040)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -3970,8 +3992,8 @@ static int signalyzer_h_init(void) SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_GPIO_STATE)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } #endif @@ -4042,8 +4064,8 @@ static int signalyzer_h_init(void) ((uint32_t)(signalyzer_h_side << 8) | 0x01))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4051,8 +4073,8 @@ static int signalyzer_h_init(void) SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_POWERCONTROL_SET)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4063,8 +4085,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR, (uint32_t)(signalyzer_h_side << 8))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4072,8 +4094,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR + 1, 0x0060)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4081,8 +4103,8 @@ static int signalyzer_h_init(void) SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_GPIO_MODE)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4093,8 +4115,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR, (uint32_t)(signalyzer_h_side << 8))) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4102,8 +4124,8 @@ static int signalyzer_h_init(void) SIGNALYZER_DATA_BUFFER_ADDR + 1, 0x0000)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } @@ -4111,8 +4133,8 @@ static int signalyzer_h_init(void) SIGNALYZER_COMMAND_ADDR, SIGNALYZER_COMMAND_GPIO_STATE)) != FT_OK) { - LOG_ERROR("signalyzer_h_ctrl_write returned: %" PRIu32, - status); + LOG_ERROR("signalyzer_h_ctrl_write returned: %s", + ftd2xx_status_string(status)); return ERROR_JTAG_DEVICE_ERROR; } #endif |