aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeonard Crestez <leonard.crestez@nxp.com>2018-08-10 17:09:41 +0300
committerMatthias Welwarsky <matthias@welwarsky.de>2019-04-10 10:16:06 +0100
commit84e3f63a8ce170c3889a8cfe3ef885d8d7353844 (patch)
tree154db3a4e9a3139fd07fca1a4153667eabef2a2a
parentca7ba6b58d2246547f156944be5326cf51c476ac (diff)
downloadriscv-openocd-84e3f63a8ce170c3889a8cfe3ef885d8d7353844.zip
riscv-openocd-84e3f63a8ce170c3889a8cfe3ef885d8d7353844.tar.gz
riscv-openocd-84e3f63a8ce170c3889a8cfe3ef885d8d7353844.tar.bz2
jtag: tcl: Add cget -idcode
This can be used to dynamically distinguish between similar chips in tcl code. Change-Id: Ic4dfb61693e78616355173142dc7f9b9683a9f73 Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Reviewed-on: http://openocd.zylin.com/5033 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
-rw-r--r--doc/openocd.texi6
-rw-r--r--src/jtag/tcl.c21
2 files changed, 24 insertions, 3 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi
index feb4334..81a9135 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -3895,10 +3895,14 @@ devices do not set the ack bit until sometime later.
@section Other TAP commands
+@deffn Command {jtag cget} dotted.name @option{-idcode}
+Get the value of the IDCODE found in hardware.
+@end deffn
+
@deffn Command {jtag cget} dotted.name @option{-event} event_name
@deffnx Command {jtag configure} dotted.name @option{-event} event_name handler
At this writing this TAP attribute
-mechanism is used only for event handling.
+mechanism is limited and used mostly for event handling.
(It is not a direct analogue of the @code{cget}/@code{configure}
mechanism for debugger targets.)
See the next section for information about the available events.
diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c
index 7683014..71d220b 100644
--- a/src/jtag/tcl.c
+++ b/src/jtag/tcl.c
@@ -307,11 +307,13 @@ static const struct command_registration jtag_command_handlers_to_move[] = {
enum jtag_tap_cfg_param {
- JCFG_EVENT
+ JCFG_EVENT,
+ JCFG_IDCODE,
};
static Jim_Nvp nvp_config_opts[] = {
{ .name = "-event", .value = JCFG_EVENT },
+ { .name = "-idcode", .value = JCFG_IDCODE },
{ .name = NULL, .value = -1 }
};
@@ -404,8 +406,23 @@ static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, struct jtag_tap *tap)
if (e != JIM_OK)
return e;
break;
+ case JCFG_IDCODE:
+ if (goi->isconfigure) {
+ Jim_SetResultFormatted(goi->interp,
+ "not settable: %s", n->name);
+ return JIM_ERR;
+ } else {
+ if (goi->argc != 0) {
+ Jim_WrongNumArgs(goi->interp,
+ goi->argc, goi->argv,
+ "NO PARAMS");
+ return JIM_ERR;
+ }
+ }
+ Jim_SetResult(goi->interp, Jim_NewIntObj(goi->interp, tap->idcode));
+ break;
default:
- Jim_SetResultFormatted(goi->interp, "unknown event: %s", n->name);
+ Jim_SetResultFormatted(goi->interp, "unknown value: %s", n->name);
return JIM_ERR;
}
}