Jim_GetLong(interp, args[i], &bits);
str = Jim_GetString(args[i + 1], &len);
- fields[field_count].tap = tap;
fields[field_count].num_bits = bits;
fields[field_count].out_value = malloc(DIV_ROUND_UP(bits, 8));
str_to_buf(str, len, fields[field_count].out_value, bits, 0);
field_count++;
}
- jtag_add_dr_scan(num_fields, fields, endstate);
+ jtag_add_dr_scan(tap, num_fields, fields, endstate);
retval = jtag_execute_queue();
if (retval != ERROR_OK)
{
int i;
struct scan_field *fields;
- struct jtag_tap *tap;
+ struct jtag_tap *tap = NULL;
tap_state_t endstate;
if ((CMD_ARGC < 2) || (CMD_ARGC % 2))
}
int num_fields = CMD_ARGC / 2;
+ if (num_fields > 1)
+ {
+ /* we really should be looking at plain_ir_scan if we want
+ * anything more fancy.
+ */
+ LOG_ERROR("Specify a single value for tap");
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ }
+
size_t fields_len = sizeof(struct scan_field) * num_fields;
fields = malloc(fields_len);
memset(fields, 0, fields_len);
return ERROR_FAIL;
}
int field_size = tap->ir_length;
- fields[i].tap = tap;
fields[i].num_bits = field_size;
fields[i].out_value = malloc(DIV_ROUND_UP(field_size, 8));
}
/* did we have an endstate? */
- jtag_add_ir_scan(num_fields, fields, endstate);
+ jtag_add_ir_scan(tap, fields, endstate);
retval = jtag_execute_queue();
{
.name = "scan_chain",
.handler = handle_scan_chain_command,
- .mode = COMMAND_EXEC,
+ .mode = COMMAND_ANY,
.help = "print current scan chain configuration",
},
{