From d080ea6cea53ebfc604382d88981c2446f684e4d Mon Sep 17 00:00:00 2001 From: "Sergey A. Borshch" Date: Tue, 5 Apr 2016 19:50:12 +0300 Subject: [PATCH] jlink: fix jlink regression introduced by ae8cdc commit MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 1) wrong last bit was shifted out in the end of IRSHIFT/DRSHIFT in jlink_execute_scan() 2) TDI buffer was not cleared in jlink_tap_init(), results in wrong data shifted out to the TDI and "Bad value '00000000' captured during DR or IR scan" error message. 3) sizeof(tdi_buffer) was used in memset() to clean tms buffer. It is the same as sizeof(tms_buffer), but shoud be fixed to make source code consistent Change-Id: I13f26d1c3e88eefc3856fe2b8542fb0ccea6acb1 Signed-off-by: Sergey A. Borshch Reviewed-on: http://openocd.zylin.com/3394 Tested-by: jenkins Reviewed-by: Harry Zhurov Reviewed-by: Anton Gusev Reviewed-by: Михаил Цивинский Reviewed-by: Andreas Färber Reviewed-by: Andreas Fritiofson --- src/jtag/drivers/jlink.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index cda51bc0..30090582 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -217,7 +217,7 @@ static void jlink_execute_scan(struct jtag_command *cmd) field->num_bits - 1, 1); tap_set_state(tap_state_transition(tap_get_state(), 1)); - jlink_clock_data(&last_bit, + jlink_clock_data(NULL, 0, &tms_bits, 1, @@ -1708,7 +1708,8 @@ static void jlink_tap_init(void) { tap_length = 0; pending_scan_results_length = 0; - memset(tms_buffer, 0, sizeof(tdi_buffer)); + memset(tms_buffer, 0, sizeof(tms_buffer)); + memset(tdi_buffer, 0, sizeof(tdi_buffer)); } static void jlink_clock_data(const uint8_t *out, unsigned out_offset, -- 2.39.5