* The allocated, modified, and intmp fields are internal work space.
*/
struct scan_field {
- /// A pointer to the tap structure to which this field refers.
- struct jtag_tap* tap;
-
/// The number of bits this field specifies (up to 32)
int num_bits;
/// A pointer to value to be scanned into the device
/// @returns True if IR scan verification will be performed.
bool jtag_will_verify_capture_ir(void);
-/**
- * Initialize interface upon startup. Return a successful no-op upon
- * subsequent invocations.
- */
-int jtag_interface_init(struct command_context* cmd_ctx);
+/** Initialize debug adapter upon startup. */
+int adapter_init(struct command_context* cmd_ctx);
-/// Shutdown the JTAG interface upon program exit.
-int jtag_interface_quit(void);
+/// Shutdown the debug adapter upon program exit.
+int adapter_quit(void);
/**
* Initialize JTAG chain using only a RESET reset. If init fails,
* subsequent DR SCANs.
*
*/
-void jtag_add_ir_scan(int num_fields,
+void jtag_add_ir_scan(struct jtag_tap* tap,
struct scan_field* fields, tap_state_t endstate);
/**
* The same as jtag_add_ir_scan except no verification is performed out
* the output values.
*/
-void jtag_add_ir_scan_noverify(int num_fields,
+void jtag_add_ir_scan_noverify(struct jtag_tap* tap,
const struct scan_field *fields, tap_state_t state);
/**
- * Duplicate the scan fields passed into the function into an IR SCAN
- * command. This function assumes that the caller handles extra fields
- * for bypassed TAPs.
+ * Scan out the bits in ir scan mode.
+ *
+ * If in_bits == NULL, discard incoming bits.
*/
-void jtag_add_plain_ir_scan(int num_fields,
- const struct scan_field* fields, tap_state_t endstate);
+void jtag_add_plain_ir_scan(int num_bits, const uint8_t *out_bits, uint8_t *in_bits,
+ tap_state_t endstate);
/**
* specified there. For bypassed TAPs, the function generates a dummy
* 1-bit field. The bypass status of TAPs is set by jtag_add_ir_scan().
*/
-void jtag_add_dr_scan(int num_fields,
+void jtag_add_dr_scan(struct jtag_tap* tap, int num_fields,
const struct scan_field* fields, tap_state_t endstate);
/// A version of jtag_add_dr_scan() that uses the check_value/mask fields
-void jtag_add_dr_scan_check(int num_fields,
+void jtag_add_dr_scan_check(struct jtag_tap* tap, int num_fields,
struct scan_field* fields, tap_state_t endstate);
/**
- * Duplicate the scan fields passed into the function into a DR SCAN
- * command. Unlike jtag_add_dr_scan(), this function assumes that the
- * caller handles extra fields for bypassed TAPs.
+ * Scan out the bits in ir scan mode.
+ *
+ * If in_bits == NULL, discard incoming bits.
*/
-void jtag_add_plain_dr_scan(int num_fields,
- const struct scan_field* fields, tap_state_t endstate);
+void jtag_add_plain_dr_scan(int num_bits,
+ const uint8_t *out_bits, uint8_t *in_bits, tap_state_t endstate);
/**
* Defines the type of data passed to the jtag_callback_t interface.
/**
+ * DEPRECATED! store such global state outside JTAG layer
+ *
* Function jtag_set_end_state
*
* Set a global variable to \a state if \a state != TAP_INVALID.
*
- * Return the value of the global variable.
*/
-tap_state_t jtag_set_end_state(tap_state_t state);
+void jtag_set_end_state(tap_state_t state);
/**
+ * DEPRECATED! store such global state outside JTAG layer
+ *
* Function jtag_get_end_state
*
* Return the value of the global variable for end state
void jtag_add_sleep(uint32_t us);
+int jtag_add_tms_seq(unsigned nbits, const uint8_t *seq, enum tap_state t);
+
/**
* Function jtag_add_clocks
* first checks that the state in which the clocks are to be issued is
/**
* Return true if it's safe for a background polling task to access the
* JTAG scan chain. Polling may be explicitly disallowed, and is also
- * unsafe while nTRST is active or the JTAG clock is gated off.,
+ * unsafe while nTRST is active or the JTAG clock is gated off.
*/
bool is_jtag_poll_safe(void);