Add Tincantools Flyswatter2 support

This is a successor to the Flyswatter cable and is very close to the original.
The new revision is based on FT2232H.

Change-Id: Icc6efcf0e4f9d8a10b65df8679b4973f6b375a9f
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Cc: David Anders <danders@tincantools.com>
Reviewed-on: http://openocd.zylin.com/193
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
__archive__
Marek Vasut 2011-11-11 23:38:36 +01:00 committed by Spencer Oliver
parent 67c3ad8c40
commit ffe969898f
2 changed files with 75 additions and 14 deletions

View File

@ -177,7 +177,8 @@ static int jtagkey_init(void);
static int lm3s811_jtag_init(void);
static int icdi_jtag_init(void);
static int olimex_jtag_init(void);
static int flyswatter_init(void);
static int flyswatter1_init(void);
static int flyswatter2_init(void);
static int minimodule_init(void);
static int turtle_init(void);
static int comstick_init(void);
@ -198,7 +199,8 @@ static int xds100v2_init(void);
static void ftx23_reset(int trst, int srst);
static void jtagkey_reset(int trst, int srst);
static void olimex_jtag_reset(int trst, int srst);
static void flyswatter_reset(int trst, int srst);
static void flyswatter1_reset(int trst, int srst);
static void flyswatter2_reset(int trst, int srst);
static void minimodule_reset(int trst, int srst);
static void turtle_reset(int trst, int srst);
static void comstick_reset(int trst, int srst);
@ -213,7 +215,8 @@ static void xds100v2_reset(int trst, int srst);
/* blink procedures for layouts that support a blinking led */
static void olimex_jtag_blink(void);
static void flyswatter_jtag_blink(void);
static void flyswatter1_jtag_blink(void);
static void flyswatter2_jtag_blink(void);
static void turtle_jtag_blink(void);
static void signalyzer_h_blink(void);
static void ktlink_blink(void);
@ -260,9 +263,14 @@ static const struct ft2232_layout ft2232_layouts[] =
.blink = olimex_jtag_blink
},
{ .name = "flyswatter",
.init = flyswatter_init,
.reset = flyswatter_reset,
.blink = flyswatter_jtag_blink
.init = flyswatter1_init,
.reset = flyswatter1_reset,
.blink = flyswatter1_jtag_blink
},
{ .name = "flyswatter2",
.init = flyswatter2_init,
.reset = flyswatter2_reset,
.blink = flyswatter2_jtag_blink
},
{ .name = "minimodule",
.init = minimodule_init,
@ -1571,6 +1579,16 @@ static void flyswatter_reset(int trst, int srst)
LOG_DEBUG("trst: %i, srst: %i, low_output: 0x%2.2x, low_direction: 0x%2.2x", trst, srst, low_output, low_direction);
}
static void flyswatter1_reset(int trst, int srst)
{
flyswatter_reset(trst, srst);
}
static void flyswatter2_reset(int trst, int srst)
{
flyswatter_reset(trst, !srst);
}
static void minimodule_reset(int trst, int srst)
{
if (srst == 1)
@ -2911,10 +2929,18 @@ static int olimex_jtag_init(void)
return ERROR_OK;
}
static int flyswatter_init(void)
static int flyswatter_init(int rev)
{
low_output = 0x18;
low_direction = 0xfb;
low_direction = 0x7b;
if ((rev < 0) || (rev > 3)) {
LOG_ERROR("bogus 'flyswatter' revision supplied (%i)", rev);
return ERROR_JTAG_INIT_FAILED;
}
if (rev == 1)
low_direction |= 1 << 7;
/* initialize low byte for jtag */
if (ft2232_set_data_bits_low_byte(low_output,low_direction) != ERROR_OK)
@ -2929,7 +2955,11 @@ static int flyswatter_init(void)
nSRSTnOE = 0x00; /* no output enable for nSRST */
high_output = 0x00;
high_direction = 0x0c;
if (rev == 1)
high_direction = 0x0c;
else
high_direction = 0x01;
/* turn red LED3 on, LED2 off */
high_output |= 0x08;
@ -2944,6 +2974,16 @@ static int flyswatter_init(void)
return ERROR_OK;
}
static int flyswatter1_init(void)
{
return flyswatter_init(1);
}
static int flyswatter2_init(void)
{
return flyswatter_init(2);
}
static int minimodule_init(void)
{
low_output = 0x18;//check if srst should be 1 or 0 initially. (0x08) (flyswatter was 0x18)
@ -3251,16 +3291,27 @@ static void olimex_jtag_blink(void)
buffer_write(high_direction);
}
static void flyswatter_jtag_blink(void)
static void flyswatter_jtag_blink(unsigned char led)
{
buffer_write(0x82);
buffer_write(high_output ^ led);
buffer_write(high_direction);
}
static void flyswatter1_jtag_blink(void)
{
/*
* Flyswatter has two LEDs connected to ACBUS2 and ACBUS3
*/
high_output ^= 0x0c;
flyswatter_jtag_blink(0xc);
}
buffer_write(0x82);
buffer_write(high_output);
buffer_write(high_direction);
static void flyswatter2_jtag_blink(void)
{
/*
* Flyswatter2 only has one LED connected to ACBUS2
*/
flyswatter_jtag_blink(0x4);
}
static void turtle_jtag_blink(void)

View File

@ -0,0 +1,10 @@
#
# TinCanTools Flyswatter 2
#
# http://www.tincantools.com/product.php?productid=16134
#
interface ft2232
ft2232_device_desc "Flyswatter2"
ft2232_layout "flyswatter2"
ft2232_vid_pid 0x0403 0x6010