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>
This commit is contained in:
Leonard Crestez 2018-08-10 17:09:41 +03:00 committed by Matthias Welwarsky
parent ca7ba6b58d
commit 84e3f63a8c
2 changed files with 24 additions and 3 deletions

View File

@ -3895,10 +3895,14 @@ devices do not set the ack bit until sometime later.
@section Other TAP commands @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 @deffn Command {jtag cget} dotted.name @option{-event} event_name
@deffnx Command {jtag configure} dotted.name @option{-event} event_name handler @deffnx Command {jtag configure} dotted.name @option{-event} event_name handler
At this writing this TAP attribute 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} (It is not a direct analogue of the @code{cget}/@code{configure}
mechanism for debugger targets.) mechanism for debugger targets.)
See the next section for information about the available events. See the next section for information about the available events.

View File

@ -307,11 +307,13 @@ static const struct command_registration jtag_command_handlers_to_move[] = {
enum jtag_tap_cfg_param { enum jtag_tap_cfg_param {
JCFG_EVENT JCFG_EVENT,
JCFG_IDCODE,
}; };
static Jim_Nvp nvp_config_opts[] = { static Jim_Nvp nvp_config_opts[] = {
{ .name = "-event", .value = JCFG_EVENT }, { .name = "-event", .value = JCFG_EVENT },
{ .name = "-idcode", .value = JCFG_IDCODE },
{ .name = NULL, .value = -1 } { .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) if (e != JIM_OK)
return e; return e;
break; 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: default:
Jim_SetResultFormatted(goi->interp, "unknown event: %s", n->name); Jim_SetResultFormatted(goi->interp, "unknown value: %s", n->name);
return JIM_ERR; return JIM_ERR;
} }
} }