diff options
author | Piotr Esden-Tempski <piotr@esden.net> | 2010-11-29 12:56:21 -0800 |
---|---|---|
committer | Øyvind Harboe <oyvind.harboe@zylin.com> | 2010-11-30 08:15:19 +0100 |
commit | 94e1445a864532440380a640e180df81b4db07ec (patch) | |
tree | a1d71219f38f3b97b079d909e29c7f1320e57c43 /src | |
parent | a9d0b3de44c2ecbe011d5b01d17c18b0e969cc53 (diff) | |
download | openocd+libswd-94e1445a864532440380a640e180df81b4db07ec.tar.gz openocd+libswd-94e1445a864532440380a640e180df81b4db07ec.tar.bz2 openocd+libswd-94e1445a864532440380a640e180df81b4db07ec.tar.xz openocd+libswd-94e1445a864532440380a640e180df81b4db07ec.zip |
Added support for the blinking leds on Floss-JTAG v0.3 and newer.
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/drivers/ft2232.c | 57 |
1 files changed, 57 insertions, 0 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 |