jlink: improve USB read during jlink_tap_execute
commitff120440d66962b33fc84b2363d2197172fd2a6e
authorPhilip Craig <phil@blackmoth.com.au>
Mon, 17 Jun 2013 03:56:33 +0000 (17 13:56 +1000)
committerSpencer Oliver <spen@spen-soft.co.uk>
Wed, 25 Sep 2013 15:28:07 +0000 (25 15:28 +0000)
tree484a02b5e150f56de00af3c73d7037f724b354f3
parent322f7dcceab2b1a7363c722d80571a5fd8637328
jlink: improve USB read during jlink_tap_execute

Previously, when doing EMU_CMD_HW_JTAG3 commands we would do two reads,
one to read the data, and one to read the result. However, we can just
do a single larger read instead.

The motivation for this change is a weird problem. If I run the Segger
software before running OpenOCD, then the first read always fails:
Error: usb_bulk_read failed (requested=1, result=0)
Error: jlink_tap_execute, wrong result -107 (expected 1)

Sniffing the USB traffic shows that the J-Link is returning an
overflow error, meaning it is expecting to return the full result
in a single read.

Change-Id: I75e020d3b3732c9a74ee3d31838fdf17a7fac24c
Signed-off-by: Philip Craig <phil@blackmoth.com.au>
Reviewed-on: http://openocd.zylin.com/1447
Tested-by: jenkins
Reviewed-by: Xiaofan <xiaofanc@gmail.com>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/jtag/drivers/jlink.c