aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdrien Grassein <adrien.grassein@gmail.com>2022-01-06 19:06:47 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2022-01-22 10:20:17 +0000
commit666ff828b2024235694e4a0b47bf360b6ce6bcd7 (patch)
tree6e8dc9b66ae7d70fcf09b3a8a1cacb55b3278d3d /src
parente3bda57982ed87bd4d5faace5ea669848f3fe556 (diff)
downloadriscv-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.c2
-rw-r--r--src/jtag/hla/hla_tcl.c2
-rw-r--r--src/jtag/jtag.h3
-rw-r--r--src/jtag/tcl.c6
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]",
},