- reformat src/jtag/bitq.c (thanks to Pavel Chromy)
[fw/openocd] / src / jtag / jtag.h
index 19f81ce63579773501e2fc53db160da9b4c7c008..1b03d615b9625d488e18a991e8177cd315977d18 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "command.h"
 
-#if 1
+#if 0
 #define _DEBUG_JTAG_IO_
 #endif
 
@@ -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
@@ -199,6 +209,8 @@ enum jtag_event
        JTAG_TRST_RELEASED,
 };
 
+extern char* jtag_event_strings[];
+
 extern int jtag_trst;
 extern int jtag_srst;
 
@@ -237,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);