/* 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",
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;
}
}
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);