- reformat src/jtag/bitq.c (thanks to Pavel Chromy)
[fw/openocd] / src / jtag / jtag.h
index 124150ce7f4a3bb16024702e62d2aacc767e29fe..1b03d615b9625d488e18a991e8177cd315977d18 100644 (file)
@@ -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 */