#endif
#include "jtag.h"
-#include "minidriver.h"
#include "interface.h"
#ifdef HAVE_STRINGS_H
jtag_set_error(retval);
}
-void jtag_add_callback(jtag_callback1_t f, jtag_callback_data_t data0)
-{
- interface_jtag_add_callback(f, data0);
-}
-
-void jtag_add_callback4(jtag_callback_t f, jtag_callback_data_t data0,
- jtag_callback_data_t data1, jtag_callback_data_t data2,
- jtag_callback_data_t data3)
-{
- interface_jtag_add_callback4(f, data0, data1, data2, data3);
-}
-
static int jtag_check_value_inner(uint8_t *captured, uint8_t *in_check_value,
uint8_t *in_check_mask, int num_bits);
jtag_set_error(retval);
}
-void jtag_add_dr_out(struct jtag_tap* tap,
- int num_fields, const int* num_bits, const uint32_t* value,
- tap_state_t end_state)
-{
- assert(end_state != TAP_RESET);
- assert(end_state != TAP_INVALID);
-
- cmd_queue_cur_state = end_state;
-
- interface_jtag_add_dr_out(tap,
- num_fields, num_bits, value,
- end_state);
-}
-
void jtag_add_tlr(void)
{
jtag_prelude(TAP_RESET);
static bool jtag_examine_chain_match_tap(const struct jtag_tap *tap)
{
+ uint32_t idcode = tap->idcode;
+
/* ignore expected BYPASS codes; warn otherwise */
- if (0 == tap->expected_ids_cnt && !tap->idcode)
+ if (0 == tap->expected_ids_cnt && !idcode)
return true;
+ /* optionally ignore the JTAG version field */
+ uint32_t mask = tap->ignore_version ? ~(0xff << 24) : ~0;
+
+ idcode &= mask;
+
/* Loop over the expected identification codes and test for a match */
unsigned ii, limit = tap->expected_ids_cnt;
for (ii = 0; ii < limit; ii++)
{
- if (tap->idcode == tap->expected_ids[ii])
+ uint32_t expected = tap->expected_ids[ii] & mask;
+
+ if (idcode == expected)
return true;
/* treat "-expected-id 0" as a "don't-warn" wildcard */