Added support for the Lisa/L jtag LEDs.

This commit is contained in:
Piotr Esden-Tempski 2010-08-03 22:04:46 -07:00 committed by Øyvind Harboe
parent 52ba344a09
commit dce422516a
1 changed files with 56 additions and 1 deletions

View File

@ -188,6 +188,7 @@ static int signalyzer_init(void);
static int signalyzer_h_init(void);
static int ktlink_init(void);
static int redbee_init(void);
static int lisa_l_init(void);
/* reset procedures for supported layouts */
static void ftx23_reset(int trst, int srst);
@ -210,6 +211,7 @@ static void flyswatter_jtag_blink(void);
static void turtle_jtag_blink(void);
static void signalyzer_h_blink(void);
static void ktlink_blink(void);
static void lisa_l_blink(void);
/* common transport support options */
@ -304,8 +306,9 @@ static const struct ft2232_layout ft2232_layouts[] =
.channel = INTERFACE_B,
},
{ .name = "lisa-l",
.init = usbjtag_init,
.init = lisa_l_init,
.reset = ftx23_reset,
.blink = lisa_l_blink,
.channel = INTERFACE_B,
},
{ .name = NULL, /* END OF TABLE */ },
@ -3098,6 +3101,39 @@ static int cortino_jtag_init(void)
return ERROR_OK;
}
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;
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 'lisa_l' 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
@ -3150,6 +3186,25 @@ static void turtle_jtag_blink(void)
buffer_write(high_direction);
}
static void lisa_l_blink(void)
{
/*
* Lisa/L has two LEDs connected to BCBUS3 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