#endif
#include "bitq.h"
+#include "interface.h"
-/* project specific includes */
-#include "log.h"
-#include "types.h"
-#include "jtag.h"
-#include "configuration.h"
-
-/* system includes */
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
bitq_interface_t* bitq_interface; /* low level bit queue interface */
while (bitq_in_state.field_idx<bitq_in_state.cmd->cmd.scan->num_fields)
{
field = &bitq_in_state.cmd->cmd.scan->fields[bitq_in_state.field_idx];
- if (field->in_value || field->in_handler)
+ if (field->in_value)
{
if (bitq_in_state.bit_pos==0)
{
in_mask <<= 1;
bitq_in_state.bit_pos++;
}
-
-
- if (field->in_handler && bitq_in_state.status==ERROR_OK)
- {
- bitq_in_state.status = (*field->in_handler)(in_buff, field->in_handler_priv, field);
- }
}
bitq_in_state.field_idx++; /* advance to next field */
void bitq_end_state(tap_state_t state)
{
- if (state==TAP_INVALID)
- return;
-
if (!tap_is_state_stable(state))
{
LOG_ERROR("BUG: %i is not a valid end state", state);
}
tms_scan = tap_get_tms_path(tap_get_state(), new_state);
+ int tms_count = tap_get_tms_path_len(tap_get_state(), tap_get_end_state());
- for (i = 0; i<7; i++)
+ for (i = 0; i<tms_count; i++)
{
bitq_io(tms_scan & 1, 0, 0);
tms_scan >>= 1;
u8* out_ptr;
u8 out_mask;
- if (field->in_value || field->in_handler)
+ if (field->in_value)
tdo_req = 1;
else
tdo_req = 0;
{
switch (cmd->type)
{
- case JTAG_END_STATE:
-#ifdef _DEBUG_JTAG_IO_
- LOG_DEBUG("end_state: %i", cmd->cmd.end_state->end_state);
-#endif
- bitq_end_state(cmd->cmd.end_state->end_state);
- break;
-
case JTAG_RESET:
#ifdef _DEBUG_JTAG_IO_
LOG_DEBUG("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
#endif
- if ( (cmd->cmd.reset->trst == 1) || ( cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST) ) )
+ if ( (cmd->cmd.reset->trst == 1) || ( cmd->cmd.reset->srst && (jtag_get_reset_config() & RESET_SRST_PULLS_TRST) ) )
{
tap_set_state(TAP_RESET);
}