X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fdrivers%2Fopendous.c;h=efb6cf256d467e0fe04f87168c95881a275808e2;hp=b13cbe054a16e027257c43ac796eeffcf0b3e82c;hb=02192f6b8c63d740a551e371441d85d59930e65c;hpb=9b6de72c2ba149ac6f3e11d6d0dd3030bf7b19f9;ds=sidebyside diff --git a/src/jtag/drivers/opendous.c b/src/jtag/drivers/opendous.c index b13cbe054a..efb6cf256d 100644 --- a/src/jtag/drivers/opendous.c +++ b/src/jtag/drivers/opendous.c @@ -482,8 +482,9 @@ void opendous_tap_init(void) void opendous_tap_ensure_space(int scans, int bits) { int available_scans = MAX_PENDING_SCAN_RESULTS - pending_scan_results_length; + int available_bits = OPENDOUS_TAP_BUFFER_SIZE / 2 - tap_length; - if (scans > available_scans) + if ((scans > available_scans) || (bits > available_bits)) opendous_tap_execute(); } @@ -493,6 +494,8 @@ void opendous_tap_append_step(int tms, int tdi) unsigned char _tms = tms ? 1 : 0; unsigned char _tdi = tdi ? 1 : 0; + opendous_tap_ensure_space(0, 1); + int tap_index = tap_length / 4; int bits = (tap_length % 4) * 2;