X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fdrivers%2Fft2232.c;h=54f7c260269107610c7dd3f00146980b0cbe2a6e;hb=0535531d2753f1b86454bb6ffad6ffbdd56c66d0;hp=7440f0c951c1cdd55e10dbf9175bc9da1cab8c27;hpb=dce422516ab1e28bb8045c9c081c73562dd1f163;p=openocd.git diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c index 7440f0c951..54f7c26026 100644 --- a/src/jtag/drivers/ft2232.c +++ b/src/jtag/drivers/ft2232.c @@ -189,6 +189,7 @@ static int signalyzer_h_init(void); static int ktlink_init(void); static int redbee_init(void); static int lisa_l_init(void); +static int flossjtag_init(void); /* reset procedures for supported layouts */ static void ftx23_reset(int trst, int srst); @@ -212,6 +213,7 @@ static void turtle_jtag_blink(void); static void signalyzer_h_blink(void); static void ktlink_blink(void); static void lisa_l_blink(void); +static void flossjtag_blink(void); /* common transport support options */ @@ -311,6 +313,11 @@ static const struct ft2232_layout ft2232_layouts[] = .blink = lisa_l_blink, .channel = INTERFACE_B, }, + { .name = "flossjtag", + .init = flossjtag_init, + .reset = ftx23_reset, + .blink = flossjtag_blink, + }, { .name = NULL, /* END OF TABLE */ }, }; @@ -2121,7 +2128,7 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor } else { /* drat, give the user a meaningfull message. * telling the use we tried *BOTH* methods. */ - LOG_WARNING("Unable to open FTDI Device tried: '%s' and '%s'\n", + LOG_WARNING("Unable to open FTDI Device tried: '%s' and '%s'", ft2232_device_desc, ft2232_device_desc_A); } @@ -2154,7 +2161,7 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor if (status == FT_OK) { - LOG_ERROR("ListDevices: %lu\n", num_devices); + LOG_ERROR("ListDevices: %lu", num_devices); for (i = 0; i < num_devices; i++) LOG_ERROR("%" PRIu32 ": \"%s\"", i, desc_array[i]); } @@ -2166,7 +2173,7 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor } else { - LOG_ERROR("ListDevices: NONE\n"); + LOG_ERROR("ListDevices: NONE"); } return ERROR_JTAG_INIT_FAILED; } @@ -2388,7 +2395,11 @@ static int ft2232_init(void) return ERROR_JTAG_INIT_FAILED; } - ft2232_speed(jtag_get_speed()); + int jtag_speed_var; + retval = jtag_get_speed(&jtag_speed_var); + if (retval != ERROR_OK) + return retval; + ft2232_speed(jtag_speed_var); buf[0] = 0x85; /* Disconnect TDI/DO to TDO/DI for Loopback */ if ((retval = ft2232_write(buf, 1, &bytes_written)) != ERROR_OK) @@ -3106,10 +3117,6 @@ static int lisa_l_init(void) uint8_t buf[3]; uint32_t bytes_written; - /* - * NOTE: This is now _specific_ to the "usbjtag" layout. - * Don't try cram any more layouts into this. - */ ftx232_dbus_init(); nTRST = 0x10; @@ -3134,6 +3141,37 @@ static int lisa_l_init(void) return ftx232_dbus_write(); } + +static int flossjtag_init(void) +{ + uint8_t buf[3]; + uint32_t bytes_written; + + ftx232_dbus_init(); + + nTRST = 0x10; + nTRSTnOE = 0x10; + nSRST = 0x40; + nSRSTnOE = 0x40; + + high_output = 0x00; + high_direction = 0x18; + + /* initialize high port */ + buf[0] = 0x82; /* command "set data bits high byte" */ + buf[1] = high_output; + buf[2] = high_direction; + LOG_DEBUG("%2.2x %2.2x %2.2x", buf[0], buf[1], buf[2]); + + if (ft2232_write(buf, sizeof(buf), &bytes_written) != ERROR_OK) + { + LOG_ERROR("couldn't initialize FT2232 with 'Floss-JTAG' layout"); + return ERROR_JTAG_INIT_FAILED; + } + + return ftx232_dbus_write(); +} + static void olimex_jtag_blink(void) { /* Olimex ARM-USB-OCD has a LED connected to ACBUS3 @@ -3189,7 +3227,26 @@ static void turtle_jtag_blink(void) static void lisa_l_blink(void) { /* - * Lisa/L has two LEDs connected to BCBUS3 and ACBUS4 + * Lisa/L has two LEDs connected to BCBUS3 and BCBUS4 + */ + if (high_output & 0x10) + { + high_output = 0x08; + } + else + { + high_output = 0x10; + } + + buffer_write(0x82); + buffer_write(high_output); + buffer_write(high_direction); +} + +static void flossjtag_blink(void) +{ + /* + * Floss-JTAG has two LEDs connected to ACBUS3 and ACBUS4 */ if (high_output & 0x10) {