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 Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development