X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fjtag%2Fjtag.h;h=1b03d615b9625d488e18a991e8177cd315977d18;hb=290e01c62afdfd5f6eb76a4caef266344510f2c0;hp=124150ce7f4a3bb16024702e62d2aacc767e29fe;hpb=8b4e882a1630d63bbc9840fa3f968e36b6ac3702;p=fw%2Fopenocd diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index 124150ce7..1b03d615b 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -59,8 +59,17 @@ extern tap_transition_t tap_transitions[16]; /* describe the TAP state diagram * extern enum tap_state end_state; /* finish DR scans in dr_end_state */ extern enum tap_state cur_state; /* current TAP state */ +extern enum tap_state cmd_queue_end_state; /* finish DR scans in dr_end_state */ +extern enum tap_state cmd_queue_cur_state; /* current TAP state */ + #define TAP_MOVE(from, to) tap_move[tap_move_map[from]][tap_move_map[to]] +typedef struct error_handler_s +{ + int (*error_handler)(u8 *in_value, void *priv); /* handle failed checks */ + void *error_handler_priv; /* additional information for the check_handler */ +} error_handler_t; + typedef struct scan_field_s { int device; /* ordinal device number this instruction refers to */ @@ -86,6 +95,7 @@ typedef struct scan_command_s int num_fields; /* number of fields in *fields array */ scan_field_t *fields; /* pointer to an array of data scan fields */ enum tap_state end_state; /* TAP state in which JTAG commands should finish */ + error_handler_t *error_handler; } scan_command_t; typedef struct statemove_command_s @@ -180,7 +190,7 @@ typedef struct jtag_interface_s /* optional command support */ - int support_statemove; + int support_pathmove; /* interface initalization */ @@ -199,6 +209,11 @@ enum jtag_event JTAG_TRST_RELEASED, }; +extern char* jtag_event_strings[]; + +extern int jtag_trst; +extern int jtag_srst; + typedef struct jtag_event_callback_s { int (*callback)(enum jtag_event event, void *priv); @@ -234,10 +249,10 @@ extern int jtag_init(struct command_context_s *cmd_ctx); extern int jtag_register_commands(struct command_context_s *cmd_ctx); /* JTAG interface */ -extern int jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); -extern int jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); -extern int jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); -extern int jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); +extern int jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state endstate, error_handler_t *error_handler); +extern int jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate, error_handler_t *error_handler); +extern int jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state endstate, error_handler_t *error_handler); +extern int jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate, error_handler_t *error_handler); extern int jtag_add_statemove(enum tap_state endstate); extern int jtag_add_pathmove(int num_states, enum tap_state *path); extern int jtag_add_runtest(int num_cycles, enum tap_state endstate); @@ -267,4 +282,5 @@ extern int jtag_register_event_callback(int (*callback)(enum jtag_event event, v #define ERROR_JTAG_QUEUE_FAILED (-104) #define ERROR_JTAG_RESET_WOULD_ASSERT_TRST (-105) #define ERROR_JTAG_RESET_CANT_SRST (-106) +#define ERROR_JTAG_DEVICE_ERROR (-107) #endif /* JTAG_H */