jtag: add connect_type reset_config mode flag

This adds the ability to request to the adapter how we want to connect to
the target, eg. while srst is asserted or not.

This ability can very handy for connecting to unresponsive targets.
A prerequisite is that the target supports srst_nogate.

Change-Id: I0f7c9475160048e8a963e16077754f5403ac8325
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/976
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
This commit is contained in:
Spencer Oliver
2012-11-26 12:42:41 +00:00
committed by Freddie Chopin
parent 539a9cf208
commit c91dbd41ba
3 changed files with 41 additions and 7 deletions
+25 -3
View File
@@ -289,6 +289,22 @@ COMMAND_HANDLER(handle_reset_config_command)
if (m)
goto next;
/* connect_type - only valid when srst_nogate */
m = RESET_CNCT_UNDER_SRST;
if (strcmp(*CMD_ARGV, "connect_assert_srst") == 0)
tmp |= RESET_CNCT_UNDER_SRST;
else if (strcmp(*CMD_ARGV, "connect_deassert_srst") == 0)
/* connect normally - default */;
else
m = 0;
if (mask & m) {
LOG_ERROR("extra reset_config %s spec (%s)",
"connect_type", *CMD_ARGV);
return ERROR_COMMAND_SYNTAX_ERROR;
}
if (m)
goto next;
/* caller provided nonsense; fail */
LOG_ERROR("unknown reset_config flag (%s)", *CMD_ARGV);
return ERROR_COMMAND_SYNTAX_ERROR;
@@ -314,7 +330,7 @@ next:
/*
* Display the (now-)current reset mode
*/
char *modes[5];
char *modes[6];
/* minimal JTAG has neither SRST nor TRST (so that's the default) */
switch (new_cfg & (RESET_HAS_TRST | RESET_HAS_SRST)) {
@@ -368,14 +384,20 @@ next:
modes[4] = " srst_push_pull";
else
modes[4] = " srst_open_drain";
if (new_cfg & RESET_CNCT_UNDER_SRST)
modes[5] = " connect_assert_srst";
else
modes[5] = " connect_deassert_srst";
} else {
modes[2] = "";
modes[4] = "";
modes[5] = "";
}
command_print(CMD_CTX, "%s %s%s%s%s",
command_print(CMD_CTX, "%s %s%s%s%s%s",
modes[0], modes[1],
modes[2], modes[3], modes[4]);
modes[2], modes[3], modes[4], modes[5]);
return ERROR_OK;
}
+1
View File
@@ -266,6 +266,7 @@ enum reset_types {
RESET_TRST_OPEN_DRAIN = 0x10,
RESET_SRST_PUSH_PULL = 0x20,
RESET_SRST_NO_GATING = 0x40,
RESET_CNCT_UNDER_SRST = 0x80
};
enum reset_types jtag_get_reset_config(void);