From: Simon Qian Date: Tue, 16 Sep 2014 13:10:13 +0000 (+0800) Subject: vsllink: improve the performance when using swd X-Git-Tag: v0.9.0-rc1~267 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=b4f6338738ddd13a36922109347fc3d6fe0733c0;ds=sidebyside vsllink: improve the performance when using swd 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 --- 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(); } /****************************************************************************