X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fzy1000.c;h=6a4d759219372fe28ad9ca176382402a8fc30285;hb=89e9d86a565820edd56e4a3eecfc0163a6e97b32;hp=eac80041ac465feee2a66e262bf071db4b09074c;hpb=060f61ef244370ba2059b6113e081cb1f0106340;p=openocd.git diff --git a/src/jtag/zy1000.c b/src/jtag/zy1000.c index eac80041ac..6a4d759219 100644 --- a/src/jtag/zy1000.c +++ b/src/jtag/zy1000.c @@ -20,19 +20,15 @@ #include "config.h" #endif - -#include "log.h" -#include "jtag.h" -#include "bitbang.h" -#include "../target/embeddedice.h" - +#include "embeddedice.h" +#include "minidriver.h" +#include "interface.h" #include // low level i/o #include -#include -#define ZYLIN_VERSION "1.51" +#define ZYLIN_VERSION "1.52" #define ZYLIN_DATE __DATE__ #define ZYLIN_TIME __TIME__ #define ZYLIN_OPENOCD "$Revision$" @@ -120,7 +116,7 @@ static int zy1000_power_dropout(int *dropout) jtag_interface_t zy1000_interface = { .name = "ZY1000", - .execute_queue = bitbang_execute_queue, + .execute_queue = NULL, .speed = zy1000_speed, .register_commands = zy1000_register_commands, .init = zy1000_init, @@ -131,15 +127,6 @@ jtag_interface_t zy1000_interface = .srst_asserted = zy1000_srst_asserted, }; -bitbang_interface_t zy1000_bitbang = -{ - .read = zy1000_read, - .write = zy1000_write, - .reset = zy1000_reset -}; - - - static void zy1000_write(int tck, int tms, int tdi) { @@ -371,8 +358,6 @@ int zy1000_init(void) zy1000_reset(0, 0); zy1000_speed(jtag_speed); - bitbang_interface = &zy1000_bitbang; - return ERROR_OK; } @@ -384,7 +369,6 @@ int zy1000_quit(void) - int interface_jtag_execute_queue(void) { cyg_uint32 empty; @@ -443,11 +427,6 @@ static void shiftValueInnerFlip(const tap_state_t state, const tap_state_t endSt extern int jtag_check_value(u8 *captured, void *priv); -static void gotoEndState(void) -{ - setCurrentState(cmd_queue_end_state); -} - static __inline void scanFields(int num_fields, scan_field_t *fields, tap_state_t shiftState, tap_state_t end_state) { int i; @@ -526,7 +505,7 @@ int interface_jtag_add_end_state(tap_state_t state) } -int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state) +int interface_jtag_add_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state) { int j; @@ -587,7 +566,7 @@ int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, tap_state_t -int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state) +int interface_jtag_add_plain_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state) { scanFields(num_fields, fields, TAP_IRSHIFT, cmd_queue_end_state); @@ -596,7 +575,7 @@ int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, tap_s /*extern jtag_command_t **jtag_get_last_command_p(void);*/ -int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, tap_state_t state) +int interface_jtag_add_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state) { int j; @@ -640,7 +619,7 @@ int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, tap_state_t return ERROR_OK; } -int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, tap_state_t state) +int interface_jtag_add_plain_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state) { scanFields(num_fields, fields, TAP_DRSHIFT, cmd_queue_end_state); return ERROR_OK; @@ -691,8 +670,9 @@ static int zy1000_jtag_add_clocks(int num_cycles, tap_state_t state, tap_state_t /* test manual drive code on any target */ int tms; u8 tms_scan = tap_get_tms_path(t, state); + int tms_count = tap_get_tms_path_len(tap_get_state(), tap_get_end_state()); - for (i = 0; i < 7; i++) + for (i = 0; i < tms_count; i++) { tms = (tms_scan >> i) & 1; waitIdle(); @@ -722,7 +702,7 @@ int interface_jtag_add_sleep(u32 us) return ERROR_OK; } -int interface_jtag_add_pathmove(int num_states, tap_state_t *path) +int interface_jtag_add_pathmove(int num_states, const tap_state_t *path) { int state_count; int tms = 0;