3 --- src/tap/cable/generic.c.orig 2009-04-17 20:24:10.000000000 +0000
4 +++ src/tap/cable/generic.c
5 @@ -202,7 +202,7 @@ generic_flush_using_transfer( cable_t *c
9 - int r, bits = 0, tdo = 0;
10 + int r, bits = 0, savbits;
13 printf("flush(%d)\n", cable->todo.num_items);
14 @@ -254,6 +254,7 @@ generic_flush_using_transfer( cable_t *c
16 printf("%d combined into one (%d bits)\n", n, bits);
20 if(bits == 0 || n <= 1)
22 @@ -309,17 +310,21 @@ generic_flush_using_transfer( cable_t *c
24 if(cable->todo.data[i].action == CABLE_CLOCK)
27 - for(k=0;k<cable->todo.data[i].arg.clock.n;k++)
30 + bits += cable->todo.data[i].arg.clock.n;
32 else if(cable->todo.data[i].action == CABLE_GET_TDO)
35 int c = cable_add_queue_item( cable, &(cable->done) );
37 printf("add result from transfer to %p.%d\n", &(cable->done), c);
39 cable->done.data[c].action = CABLE_GET_TDO;
43 + tdo = cable->driver->get_tdo(cable);
44 cable->done.data[c].arg.value.val = tdo;
46 else if(cable->todo.data[i].action == CABLE_TRANSFER)
47 @@ -340,7 +345,6 @@ generic_flush_using_transfer( cable_t *c
48 if(len > 0) memcpy(p, out+bits, len);
50 if(len>0) bits += len;
51 - if(bits>0) tdo = out[bits-1];
54 if(i >= cable->todo.max_items) i = 0;