|
From: oharboe at B. <oh...@ma...> - 2009-04-27 11:12:21
|
Author: oharboe
Date: 2009-04-27 11:12:18 +0200 (Mon, 27 Apr 2009)
New Revision: 1537
Modified:
trunk/src/jtag/jtag.c
Log:
Some devices such as AVR will return 0xffffffff instead of the TDI
data at the end of the chain. Added kludge to handle this.
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-04-27 08:29:28 UTC (rev 1536)
+++ trunk/src/jtag/jtag.c 2009-04-27 09:12:18 UTC (rev 1537)
@@ -1531,7 +1531,9 @@
u32 part;
u32 version;
- if (idcode == 0x000000FF)
+ /* some devices, such as AVR will output all 1's instead of TDI
+ input value at end of chain. */
+ if ((idcode == 0x000000FF)||(idcode == 0xFFFFFFFF))
{
int unexpected=0;
/* End of chain (invalid manufacturer ID)
@@ -1548,7 +1550,7 @@
for (bit_count += 32; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;bit_count += 32)
{
idcode = buf_get_u32(idcode_buffer, bit_count, 32);
- if (unexpected||(idcode != 0x000000FF))
+ if (unexpected||((idcode != 0x000000FF)&&(idcode != 0xFFFFFFFF)))
{
LOG_WARNING("Unexpected idcode after end of chain! %d 0x%08x", bit_count, idcode);
unexpected = 1;
@@ -3306,7 +3308,7 @@
tap_state_t last_state;
- // set startstate (and possibly last, if tap_bits == 0)
+ // set startstate (and possibly last, if tap_bits == 0)
last_state = next_state;
DEBUG_JTAG_IO("TAP/SM: START state: %s", tap_state_name(next_state));
|