X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fjtag.c;h=8bc19112ca5ee41e7d11dd8178dd9dfe9ca52404;hb=f84c78a2e1994ef8efcdd8768dc2a6b0ee363189;hp=d94bebe13e9670af1cd146b1a634546377d79670;hpb=63c4848d11e6487cc584fccd82471700d2d718a8;p=openocd.git diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index d94bebe13e..8bc19112ca 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -97,8 +97,9 @@ static bool hasKHz = false; #if BUILD_ECOSBOARD == 1 extern jtag_interface_t zy1000_interface; -#endif - +#elif defined(BUILD_MINIDRIVER_DUMMY) + extern jtag_interface_t minidummy_interface; +#else // standard drivers #if BUILD_PARPORT == 1 extern jtag_interface_t parport_interface; #endif @@ -154,11 +155,21 @@ static bool hasKHz = false; #if BUILD_ARMJTAGEW == 1 extern jtag_interface_t armjtagew_interface; #endif +#endif // standard drivers +/** + * The list of built-in JTAG interfaces, containing entries for those + * drivers that were enabled by the @c configure script. + * + * The list should be defined to contain either one minidriver interface + * or some number of standard driver interfaces, never both. + */ jtag_interface_t *jtag_interfaces[] = { #if BUILD_ECOSBOARD == 1 &zy1000_interface, -#endif +#elif defined(BUILD_MINIDRIVER_DUMMY) + &minidummy_interface, +#else // standard drivers #if BUILD_PARPORT == 1 &parport_interface, #endif @@ -201,6 +212,7 @@ jtag_interface_t *jtag_interfaces[] = { #if BUILD_ARMJTAGEW == 1 &armjtagew_interface, #endif +#endif // standard drivers NULL, }; @@ -221,7 +233,6 @@ static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx, ch static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -static int handle_endstate_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); static int handle_jtag_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); static int handle_runtest_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); @@ -242,10 +253,10 @@ int jtag_tap_count(void) return jtag_num_taps; } -int jtag_tap_count_enabled(void) +unsigned jtag_tap_count_enabled(void) { jtag_tap_t *t; - int n; + unsigned n; n = 0; t = jtag_all_taps(); @@ -1064,10 +1075,8 @@ static bool jtag_examine_chain_match_tap(const struct jtag_tap_s *tap) */ static int jtag_examine_chain(void) { - jtag_tap_t *tap; u8 idcode_buffer[JTAG_MAX_CHAIN_SIZE * 4]; - int bit_count; - int device_count = 0; + unsigned device_count = 0; jtag_examine_chain_execute(idcode_buffer, JTAG_MAX_CHAIN_SIZE); @@ -1075,14 +1084,14 @@ static int jtag_examine_chain(void) return ERROR_JTAG_INIT_FAILED; /* point at the 1st tap */ - tap = jtag_tap_next_enabled(NULL); + jtag_tap_t *tap = jtag_tap_next_enabled(NULL); if (tap == NULL) { LOG_ERROR("JTAG: No taps enabled?"); return ERROR_JTAG_INIT_FAILED; } - for (bit_count = 0; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;) + for (unsigned bit_count = 0; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;) { u32 idcode = buf_get_u32(idcode_buffer, bit_count, 32); if ((idcode & 1) == 0) @@ -1655,8 +1664,6 @@ int jtag_register_commands(struct command_context_s *cmd_ctx) register_command(cmd_ctx, NULL, "scan_chain", handle_scan_chain_command, COMMAND_EXEC, "print current scan chain configuration"); - register_command(cmd_ctx, NULL, "endstate", handle_endstate_command, - COMMAND_EXEC, "finish JTAG operations in "); register_command(cmd_ctx, NULL, "jtag_reset", handle_jtag_reset_command, COMMAND_EXEC, "toggle reset lines "); register_command(cmd_ctx, NULL, "runtest", handle_runtest_command, @@ -2135,7 +2142,6 @@ static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx, ch return ERROR_OK; } - static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int retval=ERROR_OK; @@ -2212,26 +2218,6 @@ static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, } -static int handle_endstate_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) -{ - if (argc < 1) - return ERROR_COMMAND_SYNTAX_ERROR; - - tap_state_t state = tap_state_by_name(args[0]); - if (state < 0) - { - command_print( cmd_ctx, "Invalid state name: %s\n", args[0] ); - return ERROR_COMMAND_SYNTAX_ERROR; - } - jtag_set_end_state(state); - jtag_execute_queue(); - - command_print(cmd_ctx, "current endstate: %s", - tap_state_name(cmd_queue_end_state)); - - return ERROR_OK; -} - static int handle_jtag_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int trst = -1;