diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2010-07-09 18:34:31 -0400 |
---|---|---|
committer | David Brownell <db@helium.(none)> | 2010-07-09 18:34:31 -0400 |
commit | e8445c9c9f02e82ea417776fa27fbe793ae22f83 (patch) | |
tree | acf0e39eafd022f3d86168db1a355cd3ee5c8951 /src/jtag/transport.c | |
parent | ac5ad4ad8d0312259974d4aeb947a43fa815c3a8 (diff) |
transport selection tweaks
* Bugfix and simplify legacy jtag-only defaulting
* Make "dummy" declare its jtag-only nature
* likewise update ft2232
* warn if selection is _required_ (multi-transport adapters),
fixes the "only ft2232 works" bug for at least dummy, with
other drivers going the "legacy" path (submit patches).
Signed-off-by: David Brownell <db@helium.(none)>
Diffstat (limited to 'src/jtag/transport.c')
-rw-r--r-- | src/jtag/transport.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/jtag/transport.c b/src/jtag/transport.c index cce45fb7..d290bd2c 100644 --- a/src/jtag/transport.c +++ b/src/jtag/transport.c @@ -101,6 +101,10 @@ int allow_transports(struct command_context *ctx, const char **vector) * * REVISIT should we validate that? and insist there's * at least one non-NULL element in that list? + * + * ... allow removals, e.g. external strapping prevents use + * of one transport; C code should be definitive about what + * can be used when all goes well. */ if (allowed_transports != NULL || session) { LOG_ERROR("Can't modify the set of allowed transports."); @@ -116,6 +120,8 @@ int allow_transports(struct command_context *ctx, const char **vector) vector[0]); return transport_select(ctx, vector [0]); } else { + /* guard against user config errors */ + LOG_WARNING("must select a transport."); while (*vector) LOG_DEBUG("allow transport '%s'", *vector++); return ERROR_OK; @@ -304,13 +310,14 @@ COMMAND_HANDLER(handle_transport_select) /* Is this transport supported by our debug adapter? * Example, "JTAG-only" means SWD is not supported. * - * NOTE: requires adapter to have been set up, including - * declaring transport via C code or Tcl script. + * NOTE: requires adapter to have been set up, with + * transports declared via C. */ if (!allowed_transports) { LOG_ERROR("Debug adapter doesn't support any transports?"); return ERROR_FAIL; } + for (unsigned i = 0; allowed_transports[i]; i++) { if (strcmp(allowed_transports[i], CMD_ARGV[0]) == 0) |