X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fcore.c;h=1841dde9f4c311a3e5967b3511cdd063e798b41c;hb=98723c4ecdbe06f90c66f3abec27b792c3b38e34;hp=bbe7425fbe8d8ecf4ad4c0f177a93e7046305e91;hpb=d70d9634bf6ab73ec4f2ac1e77012785770b460a;p=openocd.git diff --git a/src/jtag/core.c b/src/jtag/core.c index bbe7425fbe..1841dde9f4 100644 --- a/src/jtag/core.c +++ b/src/jtag/core.c @@ -43,8 +43,8 @@ /// 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 @@ -78,7 +78,7 @@ static int jtag_srst = -1; /** * List all TAPs that have been created. */ -static jtag_tap_t *__jtag_all_taps = NULL; +static struct jtag_tap *__jtag_all_taps = NULL; /** * The number of TAPs in the __jtag_all_taps list, used to track the * assigned chain position to new TAPs @@ -98,15 +98,21 @@ static int jtag_ntrst_delay = 0; /* default to no nTRST delay */ 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; @@ -115,10 +121,10 @@ static int rclk_fallback_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) { @@ -164,7 +170,7 @@ void jtag_poll_set_enabled(bool value) /************/ -jtag_tap_t *jtag_all_taps(void) +struct jtag_tap *jtag_all_taps(void) { return __jtag_all_taps; }; @@ -176,7 +182,7 @@ unsigned jtag_tap_count(void) unsigned jtag_tap_count_enabled(void) { - jtag_tap_t *t = jtag_all_taps(); + struct jtag_tap *t = jtag_all_taps(); unsigned n = 0; while (t) { @@ -188,20 +194,20 @@ unsigned jtag_tap_count_enabled(void) } /// Append a new TAP to the chain of all taps. -void jtag_tap_add(struct jtag_tap_s *t) +void jtag_tap_add(struct jtag_tap *t) { t->abs_chain_position = jtag_num_taps++; - jtag_tap_t **tap = &__jtag_all_taps; + struct jtag_tap **tap = &__jtag_all_taps; while (*tap != NULL) tap = &(*tap)->next_tap; *tap = t; } /* returns a pointer to the n-th device in the scan chain */ -static inline jtag_tap_t *jtag_tap_by_position(unsigned n) +static inline struct jtag_tap *jtag_tap_by_position(unsigned n) { - jtag_tap_t *t = jtag_all_taps(); + struct jtag_tap *t = jtag_all_taps(); while (t && n-- > 0) t = t->next_tap; @@ -209,10 +215,10 @@ static inline jtag_tap_t *jtag_tap_by_position(unsigned n) return t; } -jtag_tap_t *jtag_tap_by_string(const char *s) +struct jtag_tap *jtag_tap_by_string(const char *s) { /* try by name first */ - jtag_tap_t *t = jtag_all_taps(); + struct jtag_tap *t = jtag_all_taps(); while (t) { @@ -238,10 +244,10 @@ jtag_tap_t *jtag_tap_by_string(const char *s) return t; } -jtag_tap_t *jtag_tap_by_jim_obj(Jim_Interp *interp, Jim_Obj *o) +struct jtag_tap *jtag_tap_by_jim_obj(Jim_Interp *interp, Jim_Obj *o) { const char *cp = Jim_GetString(o, NULL); - jtag_tap_t *t = cp ? jtag_tap_by_string(cp) : NULL; + struct jtag_tap *t = cp ? jtag_tap_by_string(cp) : NULL; if (NULL == cp) cp = "(unknown)"; if (NULL == t) @@ -249,7 +255,7 @@ jtag_tap_t *jtag_tap_by_jim_obj(Jim_Interp *interp, Jim_Obj *o) return t; } -jtag_tap_t* jtag_tap_next_enabled(jtag_tap_t* p) +struct jtag_tap* jtag_tap_next_enabled(struct jtag_tap* p) { p = p ? p->next_tap : jtag_all_taps(); while (p) @@ -261,7 +267,7 @@ jtag_tap_t* jtag_tap_next_enabled(jtag_tap_t* p) return NULL; } -const char *jtag_tap_name(const jtag_tap_t *tap) +const char *jtag_tap_name(const struct jtag_tap *tap) { return (tap == NULL) ? "(unknown)" : tap->dotted_name; } @@ -269,7 +275,7 @@ const char *jtag_tap_name(const jtag_tap_t *tap) 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) { @@ -283,7 +289,7 @@ int jtag_register_event_callback(jtag_event_handler_t callback, void *priv) 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; @@ -293,8 +299,8 @@ int jtag_register_event_callback(jtag_event_handler_t callback, void *priv) 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) { @@ -322,13 +328,13 @@ int jtag_unregister_event_callback(jtag_event_handler_t callback, void *priv) 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; @@ -353,12 +359,12 @@ static void jtag_prelude(tap_state_t state) 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); @@ -368,7 +374,7 @@ void jtag_add_ir_scan_noverify(int in_count, const scan_field_t *in_fields, } -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); @@ -391,7 +397,7 @@ void jtag_add_ir_scan(int in_num_fields, scan_field_t *in_fields, tap_state_t st } } -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); @@ -423,12 +429,12 @@ static int jtag_check_value_mask_callback(jtag_callback_data_t data0, jtag_callb 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) @@ -460,7 +466,7 @@ static void jtag_add_scan_check(void (*jtag_add_scan)(int in_num_fields, const s } } -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) { @@ -472,7 +478,7 @@ void jtag_add_dr_scan_check(int in_num_fields, scan_field_t *in_fields, tap_stat } -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); @@ -484,7 +490,7 @@ void jtag_add_dr_scan(int in_num_fields, const scan_field_t *in_fields, 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); @@ -496,7 +502,7 @@ void jtag_add_plain_dr_scan(int in_num_fields, const scan_field_t *in_fields, jtag_set_error(retval); } -void jtag_add_dr_out(jtag_tap_t* tap, +void jtag_add_dr_out(struct jtag_tap* tap, int num_fields, const int* num_bits, const uint32_t* value, tap_state_t end_state) { @@ -806,7 +812,7 @@ static int jtag_check_value_inner(uint8_t *captured, uint8_t *in_check_value, 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); @@ -856,7 +862,7 @@ int jtag_execute_queue(void) static int jtag_reset_callback(enum jtag_event event, void *priv) { - jtag_tap_t *tap = priv; + struct jtag_tap *tap = priv; if (event == JTAG_TRST_ASSERTED) { @@ -895,7 +901,7 @@ void jtag_sleep(uint32_t us) 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, @@ -989,7 +995,7 @@ static bool jtag_examine_chain_end(uint8_t *idcodes, unsigned count, unsigned ma return triggered; } -static bool jtag_examine_chain_match_tap(const struct jtag_tap_s *tap) +static bool jtag_examine_chain_match_tap(const struct jtag_tap *tap) { /* ignore expected BYPASS codes; warn otherwise */ if (0 == tap->expected_ids_cnt && !tap->idcode) @@ -1044,7 +1050,7 @@ static int jtag_examine_chain(void) return ERROR_JTAG_INIT_FAILED; /* point at the 1st tap */ - jtag_tap_t *tap = jtag_tap_next_enabled(NULL); + struct jtag_tap *tap = jtag_tap_next_enabled(NULL); if (!tap) autoprobe = true; @@ -1168,10 +1174,10 @@ static int jtag_examine_chain(void) */ static int jtag_validate_ircapture(void) { - jtag_tap_t *tap; + 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; @@ -1280,7 +1286,7 @@ done: } -void jtag_tap_init(jtag_tap_t *tap) +void jtag_tap_init(struct jtag_tap *tap) { unsigned ir_len_bits; unsigned ir_len_bytes; @@ -1315,7 +1321,7 @@ void jtag_tap_init(jtag_tap_t *tap) jtag_tap_add(tap); } -void jtag_tap_free(jtag_tap_t *tap) +void jtag_tap_free(struct jtag_tap *tap) { jtag_unregister_event_callback(&jtag_reset_callback, tap); @@ -1328,7 +1334,7 @@ void jtag_tap_free(jtag_tap_t *tap) free(tap); } -int jtag_interface_init(struct command_context_s *cmd_ctx) +int jtag_interface_init(struct command_context *cmd_ctx) { if (jtag) return ERROR_OK; @@ -1369,9 +1375,9 @@ int jtag_interface_init(struct command_context_s *cmd_ctx) return ERROR_OK; } -int jtag_init_inner(struct command_context_s *cmd_ctx) +int jtag_init_inner(struct command_context *cmd_ctx) { - jtag_tap_t *tap; + struct jtag_tap *tap; int retval; bool issue_setup = true; @@ -1455,7 +1461,7 @@ int jtag_interface_quit(void) } -int jtag_init_reset(struct command_context_s *cmd_ctx) +int jtag_init_reset(struct command_context *cmd_ctx) { int retval; @@ -1509,7 +1515,7 @@ int jtag_init_reset(struct command_context_s *cmd_ctx) return jtag_init_inner(cmd_ctx); } -int jtag_init(struct command_context_s *cmd_ctx) +int jtag_init(struct command_context *cmd_ctx) { int retval;