Eliminate MixedCaps symbol from public JTAG TAP API:
[fw/openocd] / src / jtag / jtag.h
index bc9470e1bb84769934595f7ccd38a6e2534b3584..b8e33563083eed38a794823d961df551193a99c1 100644 (file)
@@ -104,8 +104,6 @@ const char* tap_state_name(tap_state_t state);
 
 /// The current TAP state of the pending JTAG command queue.
 extern tap_state_t cmd_queue_cur_state;
-/// The TAP state in which DR scans should end.
-extern tap_state_t cmd_queue_end_state;
 
 /**
  * This structure defines a single scan field in the scan. It provides
@@ -177,20 +175,21 @@ struct jtag_tap_s
 
        jtag_tap_t* next_tap;
 };
-extern jtag_tap_t* jtag_AllTaps(void);
-extern jtag_tap_t* jtag_TapByPosition(int n);
-extern jtag_tap_t* jtag_TapByString(const char* dotted_name);
-extern jtag_tap_t* jtag_TapByJimObj(Jim_Interp* interp, Jim_Obj* obj);
-extern jtag_tap_t* jtag_TapByAbsPosition(int abs_position);
-extern int jtag_NumEnabledTaps(void);
-extern int jtag_NumTotalTaps(void);
+extern jtag_tap_t* jtag_all_taps(void);
+extern const char *jtag_tap_name(const jtag_tap_t *tap);
+extern jtag_tap_t* jtag_tap_by_position(int n);
+extern jtag_tap_t* jtag_tap_by_string(const char* dotted_name);
+extern jtag_tap_t* jtag_tap_by_jim_obj(Jim_Interp* interp, Jim_Obj* obj);
+extern jtag_tap_t* jtag_tap_by_abs_position(int abs_position);
+extern int jtag_tap_count_enabled(void);
+extern int jtag_tap_count(void);
 
 static __inline__ jtag_tap_t* jtag_NextEnabledTap(jtag_tap_t* p)
 {
        if (p == NULL)
        {
                /* start at the head of list */
-               p = jtag_AllTaps();
+               p = jtag_all_taps();
        }
        else
        {
@@ -218,6 +217,17 @@ enum reset_line_mode {
        LINE_PUSH_PULL  = 0x1,
 };
 
+/* 
+ * There are three cases when JTAG_TRST_ASSERTED callback is invoked. The
+ * event is invoked *after* TRST is asserted(or queued rather). It is illegal 
+ * to communicate with the JTAG interface during the callback(as there is 
+ * currently a queue being built).
+ * 
+ * - TMS reset
+ * - SRST pulls TRST
+ * - TRST asserted
+ * 
+ **/
 enum jtag_event {
        JTAG_TRST_ASSERTED
 };
@@ -477,7 +487,23 @@ extern void jtag_add_runtest(int num_cycles, tap_state_t endstate);
  */
 extern void jtag_add_reset(int req_tlr_or_trst, int srst);
 
-extern void jtag_add_end_state(tap_state_t endstate);
+
+/**
+ * Function jtag_set_end_state
+ *
+ * Set a global variable to \a state if \a state != TAP_INVALID.
+ *
+ * Return the value of the global variable.
+ *
+ **/
+extern tap_state_t jtag_set_end_state(tap_state_t state);
+/**
+ * Function jtag_get_end_state
+ *
+ * Return the value of the global variable for end state
+ *
+ **/
+extern tap_state_t jtag_get_end_state(void);
 extern void jtag_add_sleep(u32 us);
 
 
@@ -552,10 +578,6 @@ extern int jtag_srst_asserted(int* srst_asserted);
  */
 extern void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask);
 
-#ifdef INCLUDE_JTAG_INTERFACE_H
-#include "commands.h"
-#endif // INCLUDE_JTAG_INTERFACE_H
-
 extern void jtag_sleep(u32 us);
 extern int jtag_call_event_callbacks(enum jtag_event event);
 extern int jtag_register_event_callback(int (* callback)(enum jtag_event event, void* priv), void* priv);
@@ -618,4 +640,15 @@ extern void jtag_add_dr_out(jtag_tap_t* tap,
  */
 extern int jtag_add_statemove(tap_state_t goal_state);
 
+
+
+/// @returns the number of times the scan queue has been flushed
+int jtag_get_flush_queue_count(void);
+void jtag_set_nsrst_delay(unsigned delay);
+void jtag_set_ntrst_delay(unsigned delay);
+void jtag_set_speed_khz(unsigned speed);
+unsigned jtag_get_speed_khz(void);
+void jtag_set_verify(bool enable);
+bool jtag_will_verify(void);
+
 #endif /* JTAG_H */