summaryrefslogtreecommitdiff
path: root/src/jtag
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-08-26 08:32:03 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-08-26 08:32:03 +0000
commit9a9ebfb924553e0f4837c4ef77b900f1f5d824f1 (patch)
tree760ffc1a95e45f3fe67fa021616ee8e308136dec /src/jtag
parent11856bcffc9a35c3844df71a3a9641f5cf8beb6b (diff)
downloadopenocd+libswd-9a9ebfb924553e0f4837c4ef77b900f1f5d824f1.tar.gz
openocd+libswd-9a9ebfb924553e0f4837c4ef77b900f1f5d824f1.tar.bz2
openocd+libswd-9a9ebfb924553e0f4837c4ef77b900f1f5d824f1.tar.xz
openocd+libswd-9a9ebfb924553e0f4837c4ef77b900f1f5d824f1.zip
reduce arm11 output noise
git-svn-id: svn://svn.berlios.de/openocd/trunk@2628 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/jtag')
-rw-r--r--src/jtag/core.c7
-rw-r--r--src/jtag/jtag.h3
2 files changed, 7 insertions, 3 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index d278c96b..8cb4da55 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -939,7 +939,7 @@ static bool jtag_examine_chain_match_tap(const struct jtag_tap_s *tap)
/* If none of the expected ids matched, log an error */
if (ii != tap->expected_ids_cnt)
{
- LOG_INFO("JTAG Tap/device matched");
+ LOG_DEBUG("JTAG Tap/device matched");
return true;
}
jtag_examine_chain_display(LOG_LVL_ERROR, "got",
@@ -978,11 +978,13 @@ int jtag_examine_chain(void)
for (unsigned bit_count = 0; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;)
{
uint32_t idcode = buf_get_u32(idcode_buffer, bit_count, 32);
+ tap->hasidcode = true;
if ((idcode & 1) == 0)
{
/* LSB must not be 0, this indicates a device in bypass */
LOG_WARNING("Tap/Device does not have IDCODE");
idcode = 0;
+ tap->hasidcode = false;
bit_count += 1;
}
@@ -1074,7 +1076,8 @@ int jtag_validate_chain(void)
}
val = buf_get_u32(ir_test, chain_pos, 2);
- if (val != 0x1)
+ /* Only fail this check if we have IDCODE for this device */
+ if ((val != 0x1)&&(tap->hasidcode))
{
char *cbuf = buf_to_str(ir_test, total_ir_length, 16);
LOG_ERROR("Could not validate JTAG scan chain, IR mismatch, scan returned 0x%s. tap=%s pos=%d expected 0x1 got %0x", cbuf, jtag_tap_name(tap), chain_pos, val);
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index 37a90b19..3e3686b8 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -144,7 +144,7 @@ typedef struct jtag_tap_event_action_s jtag_tap_event_action_t;
/* this is really: typedef jtag_tap_t */
/* But - the typedef is done in "types.h" */
-/* due to "forward decloration reasons" */
+/* due to "forward declaration reasons" */
struct jtag_tap_s
{
const char* chip;
@@ -161,6 +161,7 @@ struct jtag_tap_s
uint32_t ir_capture_mask;
uint8_t* expected_mask; /**< Capture-IR expected mask */
uint32_t idcode;
+ bool hasidcode; /* not all devices have idcode, we'll discover this during chain examination */
/**< device identification code */
/// Array of expected identification codes */