From b4f6338738ddd13a36922109347fc3d6fe0733c0 Mon Sep 17 00:00:00 2001 From: Simon Qian Date: Tue, 16 Sep 2014 21:10:13 +0800 Subject: [PATCH] vsllink: improve the performance when using swd MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Versaloon firmware has been updated for reporting errors if fail on swd transactions. Change-Id: I49ac0ad034cc9ad83cc4e43953579811d1243063 Signed-off-by: Simon Qian Reviewed-on: http://openocd.zylin.com/2302 Reviewed-by: Fatih Aşıcı Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/jtag/drivers/vsllink.c | 54 +++----------------------------------- 1 file changed, 4 insertions(+), 50 deletions(-) diff --git a/src/jtag/drivers/vsllink.c b/src/jtag/drivers/vsllink.c index fcac28820a..844f6f2766 100644 --- a/src/jtag/drivers/vsllink.c +++ b/src/jtag/drivers/vsllink.c @@ -97,7 +97,6 @@ static uint8_t *tdi_buffer; static uint8_t *tdo_buffer; static bool swd_mode; -static int queued_retval; static struct vsllink *vsllink_handle; @@ -758,7 +757,6 @@ static int_least32_t vsllink_swd_frequency(struct adiv5_dap *dap, LOG_DEBUG("SWD delay: %d, retry count: %d", delay, retry_count); versaloon_interface.adaptors.swd.config(0, 2, retry_count, delay); - queued_retval = versaloon_interface.adaptors.peripheral_commit(); } return hz; @@ -788,68 +786,24 @@ static int vsllink_swd_switch_seq(struct adiv5_dap *dap, return ERROR_FAIL; } - return versaloon_interface.adaptors.peripheral_commit(); + return ERROR_OK; } static void vsllink_swd_read_reg(struct adiv5_dap *dap, uint8_t cmd, uint32_t *value) { - if (queued_retval != ERROR_OK) - return; - - int retval; - uint32_t val = 0; - uint8_t ack; - - versaloon_interface.adaptors.swd.transact(0, cmd, &val, &ack); - retval = versaloon_interface.adaptors.peripheral_commit(); - - if (retval != ERROR_OK) { - queued_retval = ERROR_FAIL; - return; - } - - if (ack != 0x01) { - queued_retval = ack; - return; - } - - if (value) - *value = val; - - queued_retval = retval; + versaloon_interface.adaptors.swd.transact(0, cmd, value, NULL); } static void vsllink_swd_write_reg(struct adiv5_dap *dap, uint8_t cmd, uint32_t value) { - if (queued_retval != ERROR_OK) - return; - - int retval; - uint8_t ack; - - versaloon_interface.adaptors.swd.transact(0, cmd, &value, &ack); - retval = versaloon_interface.adaptors.peripheral_commit(); - - if (retval != ERROR_OK) { - queued_retval = ERROR_FAIL; - return; - } - - if (ack != 0x01) { - queued_retval = ack; - return; - } - - queued_retval = retval; + versaloon_interface.adaptors.swd.transact(0, cmd, &value, NULL); } static int vsllink_swd_run_queue(struct adiv5_dap *dap) { - int retval = queued_retval; - queued_retval = ERROR_OK; - return retval; + return versaloon_interface.adaptors.peripheral_commit(); } /**************************************************************************** -- 2.30.2