static int device_handle;
#endif
-int gw16012_execute_queue(void);
-int gw16012_register_commands(struct command_context_s *cmd_ctx);
-int gw16012_speed(int speed);
-int gw16012_init(void);
-int gw16012_quit(void);
+static int gw16012_execute_queue(void);
+static int gw16012_register_commands(struct command_context_s *cmd_ctx);
+static int gw16012_speed(int speed);
+static int gw16012_init(void);
+static int gw16012_quit(void);
-int gw16012_handle_parport_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
+static int gw16012_handle_parport_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
jtag_interface_t gw16012_interface =
{
.quit = gw16012_quit,
};
-int gw16012_register_commands(struct command_context_s *cmd_ctx)
+static int gw16012_register_commands(struct command_context_s *cmd_ctx)
{
register_command(cmd_ctx, NULL, "parport_port", gw16012_handle_parport_port_command,
COMMAND_CONFIG, NULL);
return ERROR_OK;
}
-void gw16012_data(u8 value)
+static void gw16012_data(u8 value)
{
value = (value & 0x7f) | gw16012_msb;
gw16012_msb ^= 0x80; /* toggle MSB */
#endif
}
-void gw16012_control(u8 value)
+static void gw16012_control(u8 value)
{
if (value != gw16012_control_value)
{
}
}
-void gw16012_input(u8 *value)
+static void gw16012_input(u8 *value)
{
#if PARPORT_USE_PPDEV == 1
ioctl(device_handle, PPRSTATUS, value);
}
/* (1) assert or (0) deassert reset lines */
-void gw16012_reset(int trst, int srst)
+static void gw16012_reset(int trst, int srst)
{
LOG_DEBUG("trst: %i, srst: %i", trst, srst);
gw16012_control(0x0b);
}
-int gw16012_speed(int speed)
+static int gw16012_speed(int speed)
{
return ERROR_OK;
}
-void gw16012_end_state(int state)
+static void gw16012_end_state(tap_state_t state)
{
- if (tap_move_map[state] != -1)
- end_state = state;
+ if (tap_is_state_stable(state))
+ tap_set_end_state(state);
else
{
LOG_ERROR("BUG: %i is not a valid end state", state);
}
}
-void gw16012_state_move(void)
+static void gw16012_state_move(void)
{
int i=0, tms=0;
- u8 tms_scan = TAP_MOVE(cur_state, end_state);
+ u8 tms_scan = tap_get_tms_path(tap_get_state(), tap_get_end_state());
gw16012_control(0x0); /* single-bit mode */
gw16012_data(tms << 1); /* output next TMS bit */
}
- cur_state = end_state;
+ tap_set_state(tap_get_end_state());
}
-void gw16012_path_move(pathmove_command_t *cmd)
+static void gw16012_path_move(pathmove_command_t *cmd)
{
int num_states = cmd->num_states;
int state_count;
while (num_states)
{
gw16012_control(0x0); /* single-bit mode */
- if (tap_transitions[cur_state].low == cmd->path[state_count])
+ if (tap_state_transition(tap_get_state(), false) == cmd->path[state_count])
{
gw16012_data(0x0); /* TCK cycle with TMS low */
}
- else if (tap_transitions[cur_state].high == cmd->path[state_count])
+ else if (tap_state_transition(tap_get_state(), true) == cmd->path[state_count])
{
gw16012_data(0x2); /* TCK cycle with TMS high */
}
else
{
- LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]);
+ LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(tap_get_state()), tap_state_name(cmd->path[state_count]));
exit(-1);
}
- cur_state = cmd->path[state_count];
+ tap_set_state(cmd->path[state_count]);
state_count++;
num_states--;
}
- end_state = cur_state;
+ tap_set_end_state(tap_get_state());
}
-void gw16012_runtest(int num_cycles)
+static void gw16012_runtest(int num_cycles)
{
- enum tap_state saved_end_state = end_state;
+ tap_state_t saved_end_state = tap_get_end_state();
int i;
/* only do a state_move when we're not already in IDLE */
- if (cur_state != TAP_IDLE)
+ if (tap_get_state() != TAP_IDLE)
{
gw16012_end_state(TAP_IDLE);
gw16012_state_move();
}
gw16012_end_state(saved_end_state);
- if (cur_state != end_state)
+ if (tap_get_state() != tap_get_end_state())
gw16012_state_move();
}
-void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
+static void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
{
int bits_left = scan_size;
int bit_count = 0;
- enum tap_state saved_end_state = end_state;
+ tap_state_t saved_end_state = tap_get_end_state();
u8 scan_out, scan_in;
/* only if we're not already in the correct Shift state */
- if (!((!ir_scan && (cur_state == TAP_DRSHIFT)) || (ir_scan && (cur_state == TAP_IRSHIFT))))
+ if (!((!ir_scan && (tap_get_state() == TAP_DRSHIFT)) || (ir_scan && (tap_get_state() == TAP_IRSHIFT))))
{
if (ir_scan)
gw16012_end_state(TAP_IRSHIFT);
if (bits_left == 0) /* last bit */
{
- if ((ir_scan && (end_state == TAP_IRSHIFT))
- || (!ir_scan && (end_state == TAP_DRSHIFT)))
+ if ((ir_scan && (tap_get_end_state() == TAP_IRSHIFT))
+ || (!ir_scan && (tap_get_end_state() == TAP_DRSHIFT)))
{
tms = 0;
}
bit_count++;
}
- if (!((ir_scan && (end_state == TAP_IRSHIFT)) ||
- (!ir_scan && (end_state == TAP_DRSHIFT))))
+ if (!((ir_scan && (tap_get_end_state() == TAP_IRSHIFT)) ||
+ (!ir_scan && (tap_get_end_state() == TAP_DRSHIFT))))
{
gw16012_data(0x0);
if (ir_scan)
- cur_state = TAP_IRPAUSE;
+ tap_set_state(TAP_IRPAUSE);
else
- cur_state = TAP_DRPAUSE;
+ tap_set_state(TAP_DRPAUSE);
- if (cur_state != end_state)
+ if (tap_get_state() != tap_get_end_state())
gw16012_state_move();
}
}
-int gw16012_execute_queue(void)
+static int gw16012_execute_queue(void)
{
jtag_command_t *cmd = jtag_command_queue; /* currently processed command */
int scan_size;
#ifdef _DEBUG_JTAG_IO_
LOG_DEBUG("end_state: %i", cmd->cmd.end_state->end_state);
#endif
- if (cmd->cmd.end_state->end_state != -1)
+ if (cmd->cmd.end_state->end_state != TAP_INVALID)
gw16012_end_state(cmd->cmd.end_state->end_state);
break;
case JTAG_RESET:
#endif
if (cmd->cmd.reset->trst == 1)
{
- cur_state = TAP_RESET;
+ tap_set_state(TAP_RESET);
}
gw16012_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
break;
#ifdef _DEBUG_JTAG_IO_
LOG_DEBUG("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, cmd->cmd.runtest->end_state);
#endif
- if (cmd->cmd.runtest->end_state != -1)
+ if (cmd->cmd.runtest->end_state != TAP_INVALID)
gw16012_end_state(cmd->cmd.runtest->end_state);
gw16012_runtest(cmd->cmd.runtest->num_cycles);
break;
#ifdef _DEBUG_JTAG_IO_
LOG_DEBUG("statemove end in %i", cmd->cmd.statemove->end_state);
#endif
- if (cmd->cmd.statemove->end_state != -1)
+ if (cmd->cmd.statemove->end_state != TAP_INVALID)
gw16012_end_state(cmd->cmd.statemove->end_state);
gw16012_state_move();
break;
gw16012_path_move(cmd->cmd.pathmove);
break;
case JTAG_SCAN:
- if (cmd->cmd.scan->end_state != -1)
+ if (cmd->cmd.scan->end_state != TAP_INVALID)
gw16012_end_state(cmd->cmd.scan->end_state);
scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer);
type = jtag_scan_type(cmd->cmd.scan);
}
#if PARPORT_USE_GIVEIO == 1
-int gw16012_get_giveio_access()
+static int gw16012_get_giveio_access()
{
HANDLE h;
OSVERSIONINFO version;
}
#endif
-int gw16012_init(void)
+static int gw16012_init(void)
{
#if PARPORT_USE_PPDEV == 1
char buffer[256];
return ERROR_OK;
}
-int gw16012_quit(void)
+static int gw16012_quit(void)
{
return ERROR_OK;
}
-int gw16012_handle_parport_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+static int gw16012_handle_parport_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
if (argc == 0)
return ERROR_OK;