diff options
-rw-r--r-- | src/jtag/drivers/ft2232.c | 57 | ||||
-rw-r--r-- | tcl/interface/flossjtag.cfg | 2 |
2 files changed, 58 insertions, 1 deletions
diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c index 7440f0c9..44391599 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 */ }, }; @@ -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 @@ -3205,6 +3243,25 @@ static void lisa_l_blink(void) buffer_write(high_direction); } +static void flossjtag_blink(void) +{ + /* + * Floss-JTAG has two LEDs connected to ACBUS3 and ACBUS4 + */ + if (high_output & 0x10) + { + high_output = 0x08; + } + else + { + high_output = 0x10; + } + + buffer_write(0x82); + buffer_write(high_output); + buffer_write(high_direction); +} + static int ft2232_quit(void) { #if BUILD_FT2232_FTD2XX == 1 diff --git a/tcl/interface/flossjtag.cfg b/tcl/interface/flossjtag.cfg index 491f39aa..9511dd22 100644 --- a/tcl/interface/flossjtag.cfg +++ b/tcl/interface/flossjtag.cfg @@ -16,5 +16,5 @@ interface ft2232 ft2232_vid_pid 0x0403 0x6010 ft2232_device_desc "FLOSS-JTAG" #ft2232_serial "FJ000001" -ft2232_layout "usbjtag" +ft2232_layout "flossjtag" ft2232_latency 2 |