/**
* List all TAPs that have been created.
*/
-static jtag_tap_t *jtag_all_taps = NULL;
+static jtag_tap_t *__jtag_all_taps = NULL;
/**
- * The number of TAPs in the jtag_all_taps list, used to track the
+ * The number of TAPs in the __jtag_all_taps list, used to track the
* assigned chain position to new TAPs
*/
static int jtag_num_taps = 0;
static int handle_verify_jtag_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
static int handle_tms_sequence_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-jtag_tap_t *jtag_AllTaps(void)
+jtag_tap_t *jtag_all_taps(void)
{
- return jtag_all_taps;
+ return __jtag_all_taps;
};
int jtag_NumTotalTaps(void)
int n;
n = 0;
- t = jtag_AllTaps();
+ t = jtag_all_taps();
while(t){
if( t->enabled ){
n++;
{
t->abs_chain_position = jtag_num_taps++;
- jtag_tap_t **tap = &jtag_all_taps;
+ jtag_tap_t **tap = &__jtag_all_taps;
while(*tap != NULL)
tap = &(*tap)->next_tap;
*tap = t;
jtag_tap_t *t;
char *cp;
- t = jtag_AllTaps();
+ t = jtag_all_taps();
/* try name first */
while(t){
if( 0 == strcmp( t->dotted_name, s ) ){
n = strtol( s, &cp, 0 );
if( (s != cp) && (*cp == 0) ){
/* Then it is... */
- t = jtag_TapByAbsPosition(n);
+ t = jtag_tap_by_abs_position(n);
}
}
return t;
}
/* returns a pointer to the n-th device in the scan chain */
-jtag_tap_t * jtag_TapByAbsPosition( int n )
+jtag_tap_t * jtag_tap_by_abs_position( int n )
{
int orig_n;
jtag_tap_t *t;
orig_n = n;
- t = jtag_AllTaps();
+ t = jtag_all_taps();
while( t && (n > 0)) {
n--;
}
}
+int jtag_get_flush_queue_count(void)
+{
+ return jtag_flush_queue_count;
+}
+
int jtag_execute_queue(void)
{
int retval;
}
if(hasKHz)
{
- jtag_interface->khz(speed_khz, &jtag_speed);
+ jtag_interface->khz(jtag_get_speed_khz(), &jtag_speed);
hasKHz = false;
}
return jtag_init_reset(cmd_ctx);
}
+void jtag_set_speed_khz(unsigned khz)
+{
+ speed_khz = khz;
+}
+unsigned jtag_get_speed_khz(void)
+{
+ return speed_khz;
+}
+
static int default_khz(int khz, int *jtag_speed)
{
LOG_ERROR("Translation from khz to jtag_speed not implemented");
{
jtag_tap_t *tap;
- tap = jtag_AllTaps();
+ tap = jtag_all_taps();
command_print(cmd_ctx, " TapName | Enabled | IdCode Expected IrLen IrCap IrMask Instr ");
command_print(cmd_ctx, "---|--------------------|---------|------------|------------|------|------|------|---------");
}
else
{
- jtag_nsrst_delay = strtoul(args[0], NULL, 0);
+ jtag_set_nsrst_delay(strtoul(args[0], NULL, 0));
}
return ERROR_OK;
}
else
{
- jtag_ntrst_delay = strtoul(args[0], NULL, 0);
+ jtag_set_ntrst_delay(strtoul(args[0], NULL, 0));
}
return ERROR_OK;
}
+
static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
int retval=ERROR_OK;
int retval=ERROR_OK;
LOG_DEBUG("handle jtag khz");
+ int cur_speed = 0;
if(argc == 1)
{
- speed_khz = strtoul(args[0], NULL, 0);
+ jtag_set_speed_khz(strtoul(args[0], NULL, 0));
if (jtag != NULL)
{
- int cur_speed = 0;
LOG_DEBUG("have interface set up");
int speed_div1;
- if ((retval=jtag->khz(speed_khz, &speed_div1))!=ERROR_OK)
+ if ((retval=jtag->khz(jtag_get_speed_khz(), &speed_div1))!=ERROR_OK)
{
- speed_khz = 0;
+ jtag_set_speed_khz(0);
return retval;
}
{
return ERROR_COMMAND_SYNTAX_ERROR;
}
+ cur_speed = jtag_get_speed_khz();
if (jtag!=NULL)
{
- if ((retval=jtag->speed_div(jtag_speed, &speed_khz))!=ERROR_OK)
+ if ((retval=jtag->speed_div(jtag_speed, &cur_speed))!=ERROR_OK)
return retval;
}
- if (speed_khz==0)
- {
+ if (cur_speed)
+ command_print(cmd_ctx, "%d kHz", cur_speed);
+ else
command_print(cmd_ctx, "RCLK - adaptive");
- } else
- {
- command_print(cmd_ctx, "%d kHz", speed_khz);
- }
return retval;
}
static int Jim_Command_flush_count(Jim_Interp *interp, int argc, Jim_Obj *const *args)
{
- Jim_SetResult(interp, Jim_NewIntObj(interp, jtag_flush_queue_count));
+ Jim_SetResult(interp, Jim_NewIntObj(interp, jtag_get_flush_queue_count()));
return JIM_OK;
}
return ERROR_OK;
}
+void jtag_set_verify(bool enable)
+{
+ jtag_verify = enable;
+}
+
+bool jtag_will_verify()
+{
+ return jtag_verify;
+}
+
static int handle_verify_jtag_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
+ if (argc > 1)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
if (argc == 1)
{
if (strcmp(args[0], "enable") == 0)
- {
- jtag_verify = 1;
- }
+ jtag_set_verify(true);
else if (strcmp(args[0], "disable") == 0)
- {
- jtag_verify = 0;
- } else
- {
+ jtag_set_verify(false);
+ else
return ERROR_COMMAND_SYNTAX_ERROR;
- }
- } else if (argc != 0)
- {
- return ERROR_COMMAND_SYNTAX_ERROR;
}
- command_print(cmd_ctx, "verify jtag capture is %s", (jtag_verify) ? "enabled": "disabled");
+ const char *status = jtag_will_verify() ? "enabled": "disabled";
+ command_print(cmd_ctx, "verify jtag capture is %s", status);
return ERROR_OK;
}
return retval;
}
+void jtag_set_nsrst_delay(unsigned delay)
+{
+ jtag_nsrst_delay = delay;
+}
+void jtag_set_ntrst_delay(unsigned delay)
+{
+ jtag_ntrst_delay = delay;
+}
+
+