#include "config.h"
#endif
-#define INCLUDE_JTAG_MINIDRIVER_H
-#define INCLUDE_JTAG_INTERFACE_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;
}
}
-void interface_jtag_add_scan_check_alloc(scan_field_t *field)
-{
- /* We're executing this synchronously, so try to use local storage. */
- if (field->num_bits > 32)
- {
- unsigned num_bytes = TAP_SCAN_BYTES(field->num_bits);
- field->in_value = (u8 *)malloc(num_bytes);
- field->allocated = 1;
- }
- else
- field->in_value = field->intmp;
-}
-
int interface_jtag_execute_queue(void)
{
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;
-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);
/*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;
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);
return ERROR_OK;
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;