jlink: fix jlink regression introduced by ae8cdc commit
authorSergey A. Borshch <sb-sf@users.sourceforge.net>
Tue, 5 Apr 2016 16:50:12 +0000 (19:50 +0300)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Sat, 13 Aug 2016 22:57:25 +0000 (23:57 +0100)
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 <sb-sf@users.sourceforge.net>
Reviewed-on: http://openocd.zylin.com/3394
Tested-by: jenkins
Reviewed-by: Harry Zhurov <harry.zhurov@gmail.com>
Reviewed-by: Anton Gusev
Reviewed-by: Михаил Цивинский <mtsivinsky@gmail.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/jtag/drivers/jlink.c

index cda51bc0ce8bd0d50305e9fe454a160cfb049282..30090582336029d8303f6f8bdba01763e032186f 100644 (file)
@@ -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,