Also add the redbee-usb board which is the same as the econotag but
used INTERFACE_B.
---
src/jtag/drivers/ft2232.c | 48 +++++++++++++++++++++++---------------------
tcl/board/redbee-usb.cfg | 5 ++++
2 files changed, 30 insertions(+), 23 deletions(-)
create mode 100644 tcl/board/redbee-usb.cfg
diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c
index 2d7d415..f608e02 100644
--- a/src/jtag/drivers/ft2232.c
+++ b/src/jtag/drivers/ft2232.c
@@ -145,6 +145,7 @@ struct ft2232_layout {
int (*init)(void);
void (*reset)(int trst, int srst);
void (*blink)(void);
+ int interface;
};
/* init procedures for supported layouts */
@@ -186,26 +187,27 @@ static void ktlink_blink(void);
static const struct ft2232_layout ft2232_layouts[] =
{
- { "usbjtag", usbjtag_init, usbjtag_reset,
NULL },
- { "jtagkey", jtagkey_init, jtagkey_reset,
NULL },
- { "jtagkey_prototype_v1", jtagkey_init, jtagkey_reset,
NULL },
- { "oocdlink", jtagkey_init, jtagkey_reset,
NULL },
- { "signalyzer", usbjtag_init, usbjtag_reset,
NULL },
- { "evb_lm3s811", usbjtag_init, usbjtag_reset,
NULL },
- { "luminary_icdi", usbjtag_init, usbjtag_reset,
NULL },
- { "olimex-jtag", olimex_jtag_init, olimex_jtag_reset,
olimex_jtag_blink },
- { "flyswatter", flyswatter_init, flyswatter_reset,
flyswatter_jtag_blink },
- { "turtelizer2", turtle_init, turtle_reset,
turtle_jtag_blink },
- { "comstick", comstick_init, comstick_reset,
NULL },
- { "stm32stick", stm32stick_init, stm32stick_reset,
NULL },
- { "axm0432_jtag", axm0432_jtag_init,
axm0432_jtag_reset, NULL },
- { "sheevaplug", sheevaplug_init, sheevaplug_reset,
NULL },
- { "icebear", icebear_jtag_init,
icebear_jtag_reset, NULL },
- { "cortino", cortino_jtag_init, comstick_reset,
NULL },
- { "signalyzer-h", signalyzer_h_init,
signalyzer_h_reset, signalyzer_h_blink },
- { "ktlink", ktlink_init, ktlink_reset,
ktlink_blink },
- { "redbee-econotag", redbee_init,
axm0432_jtag_reset, NULL },
- { NULL, NULL, NULL,
NULL },
+ { "usbjtag", usbjtag_init, usbjtag_reset,
NULL, INTERFACE_A },
+ { "jtagkey", jtagkey_init, jtagkey_reset,
NULL, INTERFACE_A },
+ { "jtagkey_prototype_v1", jtagkey_init, jtagkey_reset,
NULL, INTERFACE_A },
+ { "oocdlink", jtagkey_init, jtagkey_reset,
NULL, INTERFACE_A },
+ { "signalyzer", usbjtag_init, usbjtag_reset,
NULL, INTERFACE_A },
+ { "evb_lm3s811", usbjtag_init, usbjtag_reset,
NULL, INTERFACE_A },
+ { "luminary_icdi", usbjtag_init, usbjtag_reset,
NULL, INTERFACE_A },
+ { "olimex-jtag", olimex_jtag_init, olimex_jtag_reset,
olimex_jtag_blink, INTERFACE_A},
+ { "flyswatter", flyswatter_init, flyswatter_reset,
flyswatter_jtag_blink, INTERFACE_A },
+ { "turtelizer2", turtle_init, turtle_reset,
turtle_jtag_blink, INTERFACE_A },
+ { "comstick", comstick_init, comstick_reset,
NULL, INTERFACE_A },
+ { "stm32stick", stm32stick_init, stm32stick_reset,
NULL, INTERFACE_A },
+ { "axm0432_jtag", axm0432_jtag_init,
axm0432_jtag_reset, NULL, INTERFACE_A },
+ { "sheevaplug", sheevaplug_init, sheevaplug_reset,
NULL, INTERFACE_A },
+ { "icebear", icebear_jtag_init,
icebear_jtag_reset, NULL, INTERFACE_A },
+ { "cortino", cortino_jtag_init, comstick_reset,
NULL, INTERFACE_A },
+ { "signalyzer-h", signalyzer_h_init,
signalyzer_h_reset, signalyzer_h_blink, INTERFACE_A },
+ { "ktlink", ktlink_init, ktlink_reset,
ktlink_blink, INTERFACE_A },
+ { "redbee-econotag", redbee_init, axm0432_jtag_reset,
NULL, INTERFACE_A },
+ { "redbee-usb", redbee_init, axm0432_jtag_reset, NULL,
INTERFACE_B },
+ { NULL, NULL, NULL,
NULL, INTERFACE_ANY },
};
static uint8_t nTRST, nTRSTnOE, nSRST, nSRSTnOE;
@@ -2005,7 +2007,7 @@ static int ft2232_purge_ftd2xx(void)
#endif /* BUILD_FT2232_FTD2XX == 1 */
#if BUILD_FT2232_LIBFTDI == 1
-static int ft2232_init_libftdi(uint16_t vid, uint16_t pid, int more, int*
try_more)
+static int ft2232_init_libftdi(uint16_t vid, uint16_t pid, int more, int*
try_more, int interface)
{
uint8_t latency_timer;
@@ -2015,7 +2017,7 @@ static int ft2232_init_libftdi(uint16_t vid, uint16_t
pid, int more, int* try_mo
if (ftdi_init(&ftdic) < 0)
return ERROR_JTAG_INIT_FAILED;
- if (ftdi_set_interface(&ftdic, INTERFACE_A) < 0)
+ if (ftdi_set_interface(&ftdic, interface) < 0)
{
LOG_ERROR("unable to select FT2232 channel A: %s",
ftdic.error_str);
return ERROR_JTAG_INIT_FAILED;
@@ -2140,7 +2142,7 @@ static int ft2232_init(void)
more, &try_more);
#elif BUILD_FT2232_LIBFTDI == 1
retval = ft2232_init_libftdi(ft2232_vid[i], ft2232_pid[i],
- more, &try_more);
+ more, &try_more,
cur_layout->interface);
#endif
if (retval >= 0)
break;
diff --git a/tcl/board/redbee-usb.cfg b/tcl/board/redbee-usb.cfg
new file mode 100644
index 0000000..2d1de92
--- /dev/null
+++ b/tcl/board/redbee-usb.cfg
@@ -0,0 +1,5 @@
+source [find target/mc13224v.cfg]
+
+interface ft2232
+ft2232_layout redbee-usb
+ft2232_vid_pid 0x0403 0x6010
--
1.5.6.5
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development