diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-05-11 08:39:49 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-05-11 08:39:49 +0000 |
commit | 8c77f7c69c7c849412af0ca2ccfbdbd143f95832 (patch) | |
tree | a69ba398a63a1fc29d309e722ac225090d29d559 /src/jtag/jtag.h | |
parent | 265b0a9fca4121c1acee8246e88328dd8bd583fd (diff) |
change jtag_add_callback API to be able to support check_value/mask
git-svn-id: svn://svn.berlios.de/openocd/trunk@1735 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/jtag/jtag.h')
-rw-r--r-- | src/jtag/jtag.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index 2ad20240..e0e67066 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -269,6 +269,15 @@ typedef struct scan_field_s int num_bits; /* number of bits this field specifies (up to 32) */ u8* out_value; /* value to be scanned into the device */ u8* in_value; /* pointer to a 32-bit memory location to take data scanned out */ + + u8* check_value; /* Used together with jtag_add_dr_scan_check() to check data clocked + in */ + u8* check_mask; /* mask to go with check_value */ + + /* internal work space */ + int allocated; /* in_value has been allocated for the queue */ + int modified; /* did we modify the in_value? */ + u32 intmp; /* temporary storage for checking synchronously */ } scan_field_t; enum scan_type { @@ -555,6 +564,9 @@ extern void jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t e extern void jtag_add_ir_scan_noverify(int num_fields, scan_field_t *fields, tap_state_t state); extern int interface_jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate); extern void jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate); + +/* This version of jtag_add_dr_scan() uses the check_value/mask fields */ +extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_state_t endstate); /* same as jtag_add_dr_scan but the scan is executed immediately. sets jtag_error if there * was a failure. */ @@ -573,7 +585,7 @@ extern int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t* field typedef void (*jtag_callback1_t)(u8 *in); #ifndef HAVE_JTAG_MINIDRIVER_H -/* A simpler version of jtag_add_callback3 */ +/* A simpler version of jtag_add_callback4 */ extern void jtag_add_callback(jtag_callback1_t, u8 *in); #else /* implemented by minidriver */ @@ -588,7 +600,7 @@ typedef void *jtag_callback_data_t; * The callback is invoked with three arguments. The first argument is * the pointer to the data clocked in. */ -typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2); +typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3); /* This callback can be executed immediately the queue has been flushed. Note that @@ -623,7 +635,7 @@ typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback * callbacks may or may not be invoked depending on driver implementation. */ #ifndef HAVE_JTAG_MINIDRIVER_H -extern void jtag_add_callback3(jtag_callback_t, u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2); +extern void jtag_add_callback4(jtag_callback_t, u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3); #else /* implemented by minidriver */ #endif |