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)); |