diff options
author | Adrien Grassein <adrien.grassein@gmail.com> | 2022-01-06 19:06:47 +0100 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2022-01-22 10:20:17 +0000 |
commit | 666ff828b2024235694e4a0b47bf360b6ce6bcd7 (patch) | |
tree | 6e8dc9b66ae7d70fcf09b3a8a1cacb55b3278d3d /src | |
parent | e3bda57982ed87bd4d5faace5ea669848f3fe556 (diff) | |
download | riscv-openocd-666ff828b2024235694e4a0b47bf360b6ce6bcd7.zip riscv-openocd-666ff828b2024235694e4a0b47bf360b6ce6bcd7.tar.gz riscv-openocd-666ff828b2024235694e4a0b47bf360b6ce6bcd7.tar.bz2 |
jtag: Add an option to ignore the bypass bit
Some CPU wrongly indicate the bypas bit in the codeid.
It's the case of the NanoXplore NG-ULTRA chip that export a
configurable (and potentially invalid) ID for one of
its component.
Add an option to ignore it.
Signed-off-by: Adrien Grassein <adrien.grassein@gmail.com>
Change-Id: Ic59743f23bfc4d4e23da0e8535fec8ca9e87ff1a
Reviewed-on: https://review.openocd.org/c/openocd/+/6802
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/core.c | 2 | ||||
-rw-r--r-- | src/jtag/hla/hla_tcl.c | 2 | ||||
-rw-r--r-- | src/jtag/jtag.h | 3 | ||||
-rw-r--r-- | src/jtag/tcl.c | 6 |
4 files changed, 12 insertions, 1 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c index 29ab6cc..bbc9877 100644 --- a/src/jtag/core.c +++ b/src/jtag/core.c @@ -1273,7 +1273,7 @@ static int jtag_examine_chain(void) jtag_tap_init(tap); } - if ((idcode & 1) == 0) { + if ((idcode & 1) == 0 && !tap->ignore_bypass) { /* Zero for LSB indicates a device in bypass */ LOG_INFO("TAP %s does not have valid IDCODE (idcode=0x%" PRIx32 ")", tap->dotted_name, idcode); diff --git a/src/jtag/hla/hla_tcl.c b/src/jtag/hla/hla_tcl.c index 5aa3301..6b206d2 100644 --- a/src/jtag/hla/hla_tcl.c +++ b/src/jtag/hla/hla_tcl.c @@ -59,6 +59,7 @@ static int jim_newtap_expected_id(struct jim_nvp *n, struct jim_getopt_info *goi #define NTAP_OPT_DISABLED 4 #define NTAP_OPT_EXPECTED_ID 5 #define NTAP_OPT_VERSION 6 +#define NTAP_OPT_BYPASS 7 static int jim_hl_newtap_cmd(struct jim_getopt_info *goi) { @@ -75,6 +76,7 @@ static int jim_hl_newtap_cmd(struct jim_getopt_info *goi) { .name = "-disable", .value = NTAP_OPT_DISABLED }, { .name = "-expected-id", .value = NTAP_OPT_EXPECTED_ID }, { .name = "-ignore-version", .value = NTAP_OPT_VERSION }, + { .name = "-ignore-bypass", .value = NTAP_OPT_BYPASS }, { .name = NULL, .value = -1}, }; diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index d7d7d97..def594e 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -135,6 +135,9 @@ struct jtag_tap { /** Flag saying whether to ignore version field in expected_ids[] */ bool ignore_version; + /** Flag saying whether to ignore the bypass bit in the code */ + bool ignore_bypass; + /** current instruction */ uint8_t *cur_instr; /** Bypass register selected */ diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index 566c406..e6e976d 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -470,6 +470,7 @@ static int jim_newtap_expected_id(struct jim_nvp *n, struct jim_getopt_info *goi #define NTAP_OPT_DISABLED 4 #define NTAP_OPT_EXPECTED_ID 5 #define NTAP_OPT_VERSION 6 +#define NTAP_OPT_BYPASS 7 static int jim_newtap_ir_param(struct jim_nvp *n, struct jim_getopt_info *goi, struct jtag_tap *tap) @@ -532,6 +533,7 @@ static int jim_newtap_cmd(struct jim_getopt_info *goi) { .name = "-disable", .value = NTAP_OPT_DISABLED }, { .name = "-expected-id", .value = NTAP_OPT_EXPECTED_ID }, { .name = "-ignore-version", .value = NTAP_OPT_VERSION }, + { .name = "-ignore-bypass", .value = NTAP_OPT_BYPASS }, { .name = NULL, .value = -1 }, }; @@ -617,6 +619,9 @@ static int jim_newtap_cmd(struct jim_getopt_info *goi) case NTAP_OPT_VERSION: tap->ignore_version = true; break; + case NTAP_OPT_BYPASS: + tap->ignore_bypass = true; + break; } /* switch (n->value) */ } /* while (goi->argc) */ @@ -887,6 +892,7 @@ static const struct command_registration jtag_subcommand_handlers[] = { "['-enable'|'-disable'] " "['-expected_id' number] " "['-ignore-version'] " + "['-ignore-bypass'] " "['-ircapture' number] " "['-mask' number]", }, |