From 90efc404f3cb9c3f6e7fdb8a2c22fb3e72e9072f Mon Sep 17 00:00:00 2001 From: Øyvind Harboe Date: Mon, 8 Feb 2010 15:40:53 +0100 Subject: zy1000: jtag_add_dr_scan() performance improvement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reduce overhead in jtag_add_dr_scan() a bit. Signed-off-by: Øyvind Harboe --- src/jtag/zy1000/zy1000.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/jtag/zy1000/zy1000.c') diff --git a/src/jtag/zy1000/zy1000.c b/src/jtag/zy1000/zy1000.c index 2c205b7a..ef4f4821 100644 --- a/src/jtag/zy1000/zy1000.c +++ b/src/jtag/zy1000/zy1000.c @@ -650,22 +650,29 @@ int interface_jtag_add_dr_scan(int num_fields, const struct scan_field *fields, for (j = 0; j < num_fields; j++) { + /* Find a range of fields to write to this tap */ if (tap == fields[j].tap) { found = 1; + int i; + for (i = j + 1; i < num_fields; i++) + { + if (tap != fields[j].tap) + { + break; + } + } + + scanFields(i - j, fields + j, TAP_DRSHIFT, pause); - scanFields(1, fields+j, TAP_DRSHIFT, pause); + j = i; } } + if (!found) { - struct scan_field tmp; - /* program the scan field to 1 bit length, and ignore it's value */ - tmp.num_bits = 1; - tmp.out_value = NULL; - tmp.in_value = NULL; - - scanFields(1, &tmp, TAP_DRSHIFT, pause); + /* Shift out a 0 for disabled tap's */ + shiftValueInner(TAP_DRSHIFT, pause?TAP_DRPAUSE:TAP_DRSHIFT, 1, 0); } else { -- cgit v1.2.3