/* See Segger's public documentation:
* Reference manual for J-Link USB Protocol
* Document RM08001-R6 Date: June 16, 2009
+ * (Or newer, with some SWD information).
+
+http://www.segger.com/cms/admin/uploads/productDocs/RM08001_JLinkUSBProtocol.pdf
*/
#define VID 0x1366
switch (cmd->type)
{
case JTAG_RUNTEST: jlink_execute_runtest(cmd); break;
- case JTAG_STATEMOVE: jlink_execute_statemove(cmd); break;
+ case JTAG_TLR_RESET: jlink_execute_statemove(cmd); break;
case JTAG_PATHMOVE: jlink_execute_pathmove(cmd); break;
case JTAG_SCAN: jlink_execute_scan(cmd); break;
case JTAG_RESET: jlink_execute_reset(cmd); break;
jlink_reset(0, 0);
jtag_sleep(3000);
jlink_tap_init();
- jlink_speed(jtag_get_speed());
+ int jtag_speed_var;
+ int retval = jtag_get_speed(&jtag_speed_var);
+ if (retval != ERROR_OK)
+ return retval;
+ jlink_speed(jtag_speed_var);
/* v5/6 jlink seems to have an issue if the first tap move
* is not divisible by 8, so we send a TLR on first power up */
static void jlink_tap_append_step(int tms, int tdi)
{
- int index = tap_length / 8;
+ int index_var = tap_length / 8;
- if (index >= JLINK_TAP_BUFFER_SIZE)
+ if (index_var >= JLINK_TAP_BUFFER_SIZE)
{
LOG_ERROR("jlink_tap_append_step: overflow");
*(uint32_t *)0xFFFFFFFF = 0;
// we do not pad TMS, so be sure to initialize all bits
if (0 == bit_index)
{
- tms_buffer[index] = tdi_buffer[index] = 0;
+ tms_buffer[index_var] = tdi_buffer[index_var] = 0;
}
if (tms)
- tms_buffer[index] |= bit;
+ tms_buffer[index_var] |= bit;
else
- tms_buffer[index] &= ~bit;
+ tms_buffer[index_var] &= ~bit;
if (tdi)
- tdi_buffer[index] |= bit;
+ tdi_buffer[index_var] |= bit;
else
- tdi_buffer[index] &= ~bit;
+ tdi_buffer[index_var] &= ~bit;
tap_length++;
}