aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>2013-06-05 23:44:42 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2013-07-01 08:37:27 +0000
commit3e90b63b1f54330de7ea3b6454ff5810ac861961 (patch)
tree4e11656f765bf90a542fd750c6594fea977c4dce
parent7641fb6ac6bc0736627a26dad9616fcb67cf59ab (diff)
Allow autoscan up to 64 bit IR lengths
Change-Id: Ib15ff67b57606fe6c7997f3f9bd90e096acd5f3d Signed-off-by: Evan Hunter <ehunter@broadcom.com> Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/832 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
-rw-r--r--src/jtag/core.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index 2f7effe3..b61280cc 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -1177,7 +1177,7 @@ static int jtag_validate_ircapture(void)
int total_ir_length = 0;
uint8_t *ir_test = NULL;
struct scan_field field;
- int val;
+ uint64_t val;
int chain_pos = 0;
int retval;
@@ -1236,8 +1236,8 @@ static int jtag_validate_ircapture(void)
*/
if (tap->ir_length == 0) {
tap->ir_length = 2;
- while ((val = buf_get_u32(ir_test, chain_pos, tap->ir_length + 1)) == 1
- && tap->ir_length <= 32) {
+ while ((val = buf_get_u64(ir_test, chain_pos, tap->ir_length + 1)) == 1
+ && tap->ir_length <= 64) {
tap->ir_length++;
}
LOG_WARNING("AUTO %s - use \"... -irlen %d\"",
@@ -1251,25 +1251,23 @@ static int jtag_validate_ircapture(void)
* this part of the JTAG spec, so their capture mask/value
* attributes might disable this test.
*/
- val = buf_get_u32(ir_test, chain_pos, tap->ir_length);
+ val = buf_get_u64(ir_test, chain_pos, tap->ir_length);
if ((val & tap->ir_capture_mask) != tap->ir_capture_value) {
- LOG_ERROR("%s: IR capture error; saw 0x%0*x not 0x%0*x",
+ LOG_ERROR("%s: IR capture error; saw 0x%0*" PRIx64 " not 0x%0*" PRIx32,
jtag_tap_name(tap),
- (tap->ir_length + 7) / tap->ir_length,
- val,
- (tap->ir_length + 7) / tap->ir_length,
- (unsigned) tap->ir_capture_value);
+ (tap->ir_length + 7) / tap->ir_length, val,
+ (tap->ir_length + 7) / tap->ir_length, tap->ir_capture_value);
retval = ERROR_JTAG_INIT_FAILED;
goto done;
}
- LOG_DEBUG("%s: IR capture 0x%0*x", jtag_tap_name(tap),
+ LOG_DEBUG("%s: IR capture 0x%0*" PRIx64, jtag_tap_name(tap),
(tap->ir_length + 7) / tap->ir_length, val);
chain_pos += tap->ir_length;
}
/* verify the '11' sentinel we wrote is returned at the end */
- val = buf_get_u32(ir_test, chain_pos, 2);
+ val = buf_get_u64(ir_test, chain_pos, 2);
if (val != 0x3) {
char *cbuf = buf_to_str(ir_test, total_ir_length, 16);