aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jtag/core.c16
-rw-r--r--src/jtag/jtag.h9
-rw-r--r--src/jtag/minidriver/minidriver_imp.h18
3 files changed, 2 insertions, 41 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index 3090dddd..529e9bcd 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -417,12 +417,8 @@ static void jtag_add_scan_check(struct jtag_tap *active, void (*jtag_add_scan)(s
for (int i = 0; i < in_num_fields; i++)
{
struct scan_field *field = &in_fields[i];
- field->allocated = 0;
- field->modified = 0;
- if (field->check_value || field->in_value)
- continue;
- interface_jtag_add_scan_check_alloc(field);
- field->modified = 1;
+ /* caller must provide in_buffer if needed for callback */
+ assert((field->check_value == NULL) || (field->in_value != NULL));
}
jtag_add_scan(active, in_num_fields, in_fields, state);
@@ -437,14 +433,6 @@ static void jtag_add_scan_check(struct jtag_tap *active, void (*jtag_add_scan)(s
(jtag_callback_data_t)in_fields[i].check_mask,
(jtag_callback_data_t)in_fields[i].num_bits);
}
- if (in_fields[i].allocated)
- {
- free(in_fields[i].in_value);
- }
- if (in_fields[i].modified)
- {
- in_fields[i].in_value = NULL;
- }
}
}
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index 14761503..f4b89a7f 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -105,8 +105,6 @@ extern tap_state_t cmd_queue_cur_state;
*
* In addition, this structure includes a value and mask that is used by
* jtag_add_dr_scan_check() to validate the value that was scanned out.
- *
- * The allocated, modified, and intmp fields are internal work space.
*/
struct scan_field {
/// The number of bits this field specifies (up to 32)
@@ -120,13 +118,6 @@ struct scan_field {
uint8_t* check_value;
/// The mask to go with check_value
uint8_t* check_mask;
-
- /// in_value has been allocated for the queue
- int allocated;
- /// Indicates we modified the in_value.
- int modified;
- /// temporary storage for performing value checks synchronously
- uint8_t intmp[4];
};
struct jtag_tap {
diff --git a/src/jtag/minidriver/minidriver_imp.h b/src/jtag/minidriver/minidriver_imp.h
index b6cdbead..98d87fe7 100644
--- a/src/jtag/minidriver/minidriver_imp.h
+++ b/src/jtag/minidriver/minidriver_imp.h
@@ -23,24 +23,6 @@
#include <jtag/jtag_minidriver.h>
-static inline void interface_jtag_alloc_in_value32(struct scan_field *field)
-{
- field->in_value = field->intmp;
-}
-
-static inline void interface_jtag_add_scan_check_alloc(struct scan_field *field)
-{
- /* We're executing this synchronously, so try to use local storage. */
- if (field->num_bits > 32)
- {
- unsigned num_bytes = DIV_ROUND_UP(field->num_bits, 8);
- field->in_value = (uint8_t *)malloc(num_bytes);
- field->allocated = 1;
- }
- else
- field->in_value = field->intmp;
-}
-
static inline 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)