adi_v5_jtag: implement DAP WAIT support
commita185eaad9d2fd25e3e53398a235e08f07f360e74
authorMatthias Welwarsky <matthias@welwarsky.de>
Fri, 11 Dec 2015 14:12:56 +0000 (11 15:12 +0100)
committerPaul Fertser <fercerpav@gmail.com>
Fri, 22 Jan 2016 11:05:31 +0000 (22 11:05 +0000)
treeacc5fa1b8f6da9195ad58da8f3e17ae64c777c97
parentae8cdc139e12a851107e8f882c5a166a21103ad4
adi_v5_jtag: implement DAP WAIT support

ADIv5 specifies that DP and AP accesses may generate a WAIT
response when the hardware is not able to complete a request for various
reasons in time before the next request is sent. Currently, the software
treats a WAIT response as a fatal error and aborts operation on the DAP.

This patch implements WAIT handling by keeping a journal of all
outstanding and completed accesses, including their response status.
At certain times (when dap_run() is called), the journal is inspected
for WAIT responses and all discarded accesses are replayed to complete
them. Special care is taken to not re-execute already successfully
completed operations.

Change-Id: I2790070388cf1ab2e8c9a042d74eb3ef776aa583
Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-on: http://openocd.zylin.com/3166
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
src/target/adi_v5_jtag.c
src/target/arm_adi_v5.c
src/target/arm_adi_v5.h