#include "config.h"
#endif
-#define INCLUDE_JTAG_MINIDRIVER_H
#include "embeddedice.h"
-#include "bitbang.h"
+#include "minidriver.h"
+#include "interface.h"
#include <cyg/hal/hal_io.h> // low level i/o
#include <cyg/hal/hal_diag.h>
jtag_interface_t zy1000_interface =
{
.name = "ZY1000",
- .execute_queue = bitbang_execute_queue,
+ .execute_queue = NULL,
.speed = zy1000_speed,
.register_commands = zy1000_register_commands,
.init = zy1000_init,
.srst_asserted = zy1000_srst_asserted,
};
-bitbang_interface_t zy1000_bitbang =
-{
- .read = zy1000_read,
- .write = zy1000_write,
- .reset = zy1000_reset
-};
-
-
-
static void zy1000_write(int tck, int tms, int tdi)
{
zy1000_reset(0, 0);
zy1000_speed(jtag_speed);
- bitbang_interface = &zy1000_bitbang;
-
return ERROR_OK;
}
-
int interface_jtag_execute_queue(void)
{
cyg_uint32 empty;
extern int jtag_check_value(u8 *captured, void *priv);
-static void gotoEndState(void)
-{
- setCurrentState(cmd_queue_end_state);
-}
-
static __inline void scanFields(int num_fields, scan_field_t *fields, tap_state_t shiftState, tap_state_t end_state)
{
int i;
}
-int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state)
+int interface_jtag_add_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
int j;
tap_state_t end_state;
if (nextTap==NULL)
{
- end_state = cmd_queue_end_state;
+ end_state = state;
} else
{
end_state = TAP_IRSHIFT;
-int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state)
+int interface_jtag_add_plain_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
- scanFields(num_fields, fields, TAP_IRSHIFT, cmd_queue_end_state);
+ scanFields(num_fields, fields, TAP_IRSHIFT, state);
return ERROR_OK;
}
/*extern jtag_command_t **jtag_get_last_command_p(void);*/
-int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, tap_state_t state)
+int interface_jtag_add_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
int j;
tap_state_t end_state;
if (nextTap==NULL)
{
- end_state = cmd_queue_end_state;
+ end_state = state;
} else
{
end_state = TAP_DRSHIFT;
return ERROR_OK;
}
-int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, tap_state_t state)
+int interface_jtag_add_plain_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
- scanFields(num_fields, fields, TAP_DRSHIFT, cmd_queue_end_state);
+ scanFields(num_fields, fields, TAP_DRSHIFT, state);
return ERROR_OK;
}
int interface_jtag_add_clocks(int num_cycles)
{
- return zy1000_jtag_add_clocks(num_cycles, cmd_queue_cur_state, cmd_queue_end_state);
+ return zy1000_jtag_add_clocks(num_cycles, cmd_queue_cur_state, cmd_queue_cur_state);
}
int interface_jtag_add_sleep(u32 us)
return ERROR_OK;
}
-int interface_jtag_add_pathmove(int num_states, tap_state_t *path)
+int interface_jtag_add_pathmove(int num_states, const tap_state_t *path)
{
int state_count;
int tms = 0;
void embeddedice_write_dcc(jtag_tap_t *tap, int reg_addr, u8 *buffer, int little, int count)
{
// static int const reg_addr=0x5;
- tap_state_t end_state=cmd_queue_end_state;
+ tap_state_t end_state=jtag_get_end_state();
if (jtag_NextEnabledTap(jtag_NextEnabledTap(NULL))==NULL)
{
/* better performance via code duplication */