X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Farm-jtag-ew.c;h=4dc854ac13d77a929c8d8f33776a91ee052ecae4;hb=8dab0ecf2334330cd470f3fa483aadf78ee2a543;hp=3b4bfa7eea6ec7e46c88f1a9742225bd4f4a4465;hpb=004c7124c44819960da97de85f422f630f04d7ba;p=openocd.git diff --git a/src/jtag/arm-jtag-ew.c b/src/jtag/arm-jtag-ew.c index 3b4bfa7eea..4dc854ac13 100644 --- a/src/jtag/arm-jtag-ew.c +++ b/src/jtag/arm-jtag-ew.c @@ -24,6 +24,7 @@ #include "config.h" #endif +#define INCLUDE_JTAG_INTERFACE_H #include "jtag.h" #include @@ -72,7 +73,7 @@ static void armjtagew_end_state(tap_state_t state); static void armjtagew_state_move(void); static void armjtagew_path_move(int num_states, tap_state_t *path); static void armjtagew_runtest(int num_cycles); -static void armjtagew_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); +static void armjtagew_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); static void armjtagew_reset(int trst, int srst); //static void armjtagew_simple_command(u8 command); static int armjtagew_get_status(void); @@ -133,33 +134,18 @@ static int armjtagew_execute_queue(void) { switch (cmd->type) { - case JTAG_END_STATE: - DEBUG_JTAG_IO("end_state: %i", cmd->cmd.end_state->end_state); - - if (cmd->cmd.end_state->end_state != TAP_INVALID) - { - armjtagew_end_state(cmd->cmd.end_state->end_state); - } - break; - case JTAG_RUNTEST: DEBUG_JTAG_IO( "runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \ cmd->cmd.runtest->end_state); - if (cmd->cmd.runtest->end_state != TAP_INVALID) - { - armjtagew_end_state(cmd->cmd.runtest->end_state); - } + armjtagew_end_state(cmd->cmd.runtest->end_state); armjtagew_runtest(cmd->cmd.runtest->num_cycles); break; case JTAG_STATEMOVE: DEBUG_JTAG_IO("statemove end in %i", cmd->cmd.statemove->end_state); - if (cmd->cmd.statemove->end_state != TAP_INVALID) - { - armjtagew_end_state(cmd->cmd.statemove->end_state); - } + armjtagew_end_state(cmd->cmd.statemove->end_state); armjtagew_state_move(); break; @@ -174,10 +160,7 @@ static int armjtagew_execute_queue(void) case JTAG_SCAN: DEBUG_JTAG_IO("scan end in %i", cmd->cmd.scan->end_state); - if (cmd->cmd.scan->end_state != TAP_INVALID) - { - armjtagew_end_state(cmd->cmd.scan->end_state); - } + armjtagew_end_state(cmd->cmd.scan->end_state); scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer); DEBUG_JTAG_IO("scan input, length = %d", scan_size); @@ -333,8 +316,9 @@ static void armjtagew_state_move(void) int i; int tms = 0; u8 tms_scan = tap_get_tms_path(tap_get_state(), tap_get_end_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; armjtagew_tap_append_step(tms, 0); @@ -401,7 +385,7 @@ static void armjtagew_runtest(int num_cycles) } } -static void armjtagew_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command) +static void armjtagew_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command) { tap_state_t saved_end_state;