const char* tapname;
const char* dotted_name;
int abs_chain_position;
- /// Is this TAP enabled?
- int enabled;
+ /// Is this TAP disabled after JTAG reset?
+ bool disabled_after_reset;
+ /// Is this TAP currently enabled?
+ bool enabled;
int ir_length; /**< size of instruction register */
u32 ir_capture_value;
u8* expected; /**< Capture-IR expected value */
jtag_tap_t* next_tap;
};
+
+void jtag_tap_init(jtag_tap_t *tap);
+void jtag_tap_free(jtag_tap_t *tap);
+
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_string(const char* dotted_name);
extern unsigned jtag_tap_count(void);
-/*
+/*
* 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
+ * 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
typedef int (*jtag_event_handler_t)(enum jtag_event event, void* priv);
extern int jtag_register_event_callback(jtag_event_handler_t f, void *x);
-extern int jtag_unregister_event_callback(jtag_event_handler_t f);
+extern int jtag_unregister_event_callback(jtag_event_handler_t f, void *x);
extern int jtag_call_event_callbacks(enum jtag_event event);
int jtag_get_speed(void);
/**
* Given a @a speed setting, use the interface @c speed_div callback to
- * adjust the setting.
+ * adjust the setting.
* @param speed The speed setting to convert back to readable KHz.
* @returns ERROR_OK if the interface has not been initialized or on success;
* otherwise, the error code produced by the @c speed_div callback.
* @param goal_state The final TAP state.
* @return ERROR_OK on success, or an error code on failure.
*
- * Moves from the current state to the goal \a state.
+ * Moves from the current state to the goal \a state.
*
* This needs to be handled according to the xsvf spec, see the XSTATE
* command description. From the XSVF spec, pertaining to XSTATE: