/// The number of JTAG queue flushes (for profiling and debugging purposes).
static int jtag_flush_queue_count;
-static void jtag_add_scan_check(void (*jtag_add_scan)(int in_num_fields, const scan_field_t *in_fields, tap_state_t state),
- int in_num_fields, scan_field_t *in_fields, tap_state_t state);
+static void jtag_add_scan_check(void (*jtag_add_scan)(int in_num_fields, const struct scan_field *in_fields, tap_state_t state),
+ int in_num_fields, struct scan_field *in_fields, tap_state_t state);
/**
* The jtag_error variable is set when an error occurs while executing
static int jtag_nsrst_assert_width = 0; /* width of assertion */
static int jtag_ntrst_assert_width = 0; /* width of assertion */
-typedef struct jtag_event_callback_s
-{
- jtag_event_handler_t callback;
- void* priv;
- struct jtag_event_callback_s* next;
-} jtag_event_callback_t;
+/**
+ * Contains a single callback along with a pointer that will be passed
+ * when an event occurs.
+ */
+struct jtag_event_callback {
+ /// a event callback
+ jtag_event_handler_t callback;
+ /// the private data to pass to the callback
+ void* priv;
+ /// the next callback
+ struct jtag_event_callback* next;
+};
/* callbacks to inform high-level handlers about JTAG state changes */
-static jtag_event_callback_t *jtag_event_callbacks;
+static struct jtag_event_callback *jtag_event_callbacks;
/* speed in kHz*/
static int speed_khz = 0;
static enum {CLOCK_MODE_SPEED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode;
static int jtag_speed = 0;
-static struct jtag_interface_s *jtag = NULL;
+static struct jtag_interface *jtag = NULL;
/* configuration */
-jtag_interface_t *jtag_interface = NULL;
+struct jtag_interface *jtag_interface = NULL;
void jtag_set_error(int error)
{
int jtag_register_event_callback(jtag_event_handler_t callback, void *priv)
{
- jtag_event_callback_t **callbacks_p = &jtag_event_callbacks;
+ struct jtag_event_callback **callbacks_p = &jtag_event_callbacks;
if (callback == NULL)
{
callbacks_p = &((*callbacks_p)->next);
}
- (*callbacks_p) = malloc(sizeof(jtag_event_callback_t));
+ (*callbacks_p) = malloc(sizeof(struct jtag_event_callback));
(*callbacks_p)->callback = callback;
(*callbacks_p)->priv = priv;
(*callbacks_p)->next = NULL;
int jtag_unregister_event_callback(jtag_event_handler_t callback, void *priv)
{
- jtag_event_callback_t **callbacks_p;
- jtag_event_callback_t **next;
+ struct jtag_event_callback **callbacks_p;
+ struct jtag_event_callback **next;
if (callback == NULL)
{
int jtag_call_event_callbacks(enum jtag_event event)
{
- jtag_event_callback_t *callback = jtag_event_callbacks;
+ struct jtag_event_callback *callback = jtag_event_callbacks;
LOG_DEBUG("jtag event: %s", jtag_event_strings[event]);
while (callback)
{
- jtag_event_callback_t *next;
+ struct jtag_event_callback *next;
/* callback may remove itself */
next = callback->next;
cmd_queue_cur_state = state;
}
-void jtag_alloc_in_value32(scan_field_t *field)
+void jtag_alloc_in_value32(struct scan_field *field)
{
interface_jtag_alloc_in_value32(field);
}
-void jtag_add_ir_scan_noverify(int in_count, const scan_field_t *in_fields,
+void jtag_add_ir_scan_noverify(int in_count, const struct scan_field *in_fields,
tap_state_t state)
{
jtag_prelude(state);
}
-void jtag_add_ir_scan(int in_num_fields, scan_field_t *in_fields, tap_state_t state)
+void jtag_add_ir_scan(int in_num_fields, struct scan_field *in_fields, tap_state_t state)
{
assert(state != TAP_RESET);
}
}
-void jtag_add_plain_ir_scan(int in_num_fields, const scan_field_t *in_fields,
+void jtag_add_plain_ir_scan(int in_num_fields, const struct scan_field *in_fields,
tap_state_t state)
{
assert(state != TAP_RESET);
return jtag_check_value_inner((uint8_t *)data0, (uint8_t *)data1, (uint8_t *)data2, (int)data3);
}
-static void jtag_add_scan_check(void (*jtag_add_scan)(int in_num_fields, const scan_field_t *in_fields, tap_state_t state),
- int in_num_fields, scan_field_t *in_fields, tap_state_t state)
+static void jtag_add_scan_check(void (*jtag_add_scan)(int in_num_fields, const struct scan_field *in_fields, tap_state_t state),
+ int in_num_fields, struct scan_field *in_fields, tap_state_t state)
{
for (int i = 0; i < in_num_fields; i++)
{
- struct scan_field_s *field = &in_fields[i];
+ struct scan_field *field = &in_fields[i];
field->allocated = 0;
field->modified = 0;
if (field->check_value || field->in_value)
}
}
-void jtag_add_dr_scan_check(int in_num_fields, scan_field_t *in_fields, tap_state_t state)
+void jtag_add_dr_scan_check(int in_num_fields, struct scan_field *in_fields, tap_state_t state)
{
if (jtag_verify)
{
}
-void jtag_add_dr_scan(int in_num_fields, const scan_field_t *in_fields,
+void jtag_add_dr_scan(int in_num_fields, const struct scan_field *in_fields,
tap_state_t state)
{
assert(state != TAP_RESET);
jtag_set_error(retval);
}
-void jtag_add_plain_dr_scan(int in_num_fields, const scan_field_t *in_fields,
+void jtag_add_plain_dr_scan(int in_num_fields, const struct scan_field *in_fields,
tap_state_t state)
{
assert(state != TAP_RESET);
return retval;
}
-void jtag_check_value_mask(scan_field_t *field, uint8_t *value, uint8_t *mask)
+void jtag_check_value_mask(struct scan_field *field, uint8_t *value, uint8_t *mask)
{
assert(field->in_value != NULL);
static int jtag_examine_chain_execute(uint8_t *idcode_buffer, unsigned num_idcode)
{
- scan_field_t field = {
+ struct scan_field field = {
.tap = NULL,
.num_bits = num_idcode * 32,
.out_value = idcode_buffer,
struct jtag_tap *tap;
int total_ir_length = 0;
uint8_t *ir_test = NULL;
- scan_field_t field;
+ struct scan_field field;
int val;
int chain_pos = 0;
int retval;