X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fvsllink.c;h=b00846733aca245488e26e08a6bab47fd0ea0724;hb=8d6dcb9d39f0f948ef44beff991337b830fc4567;hp=8e2a9ca2efd0ad6e936ebc4bb5c0c841613b5be5;hpb=4123f082630caddead1590eac6193f736440c4cb;p=openocd.git diff --git a/src/jtag/vsllink.c b/src/jtag/vsllink.c index 8e2a9ca2ef..b00846733a 100644 --- a/src/jtag/vsllink.c +++ b/src/jtag/vsllink.c @@ -37,12 +37,12 @@ #define VSLLINK_MODE_NORMAL 0 #define VSLLINK_MODE_DMA 1 -static u16 vsllink_usb_vid; -static u16 vsllink_usb_pid; -static u8 vsllink_usb_bulkout; -static u8 vsllink_usb_bulkin; -static u8 vsllink_usb_interface; -static u8 vsllink_mode = VSLLINK_MODE_NORMAL; +static uint16_t vsllink_usb_vid; +static uint16_t vsllink_usb_pid; +static uint8_t vsllink_usb_bulkout; +static uint8_t vsllink_usb_bulkin; +static uint8_t vsllink_usb_interface; +static uint8_t vsllink_mode = VSLLINK_MODE_NORMAL; static int VSLLINK_USB_TIMEOUT = 10000; static int VSLLINK_BufferSize = 1024; @@ -50,8 +50,8 @@ static int VSLLINK_BufferSize = 1024; /* Global USB buffers */ static int vsllink_usb_out_buffer_idx; static int vsllink_usb_in_want_length; -static u8* vsllink_usb_in_buffer = NULL; -static u8* vsllink_usb_out_buffer = NULL; +static uint8_t* vsllink_usb_in_buffer = NULL; +static uint8_t* vsllink_usb_out_buffer = NULL; /* Constants for VSLLink command */ #define VSLLINK_CMD_CONN 0x80 @@ -94,7 +94,7 @@ static u8* vsllink_usb_out_buffer = NULL; * * SD->SD and SI->SI have to be caught in interface specific code */ -static u8 VSLLINK_tap_move[6][6] = +static uint8_t VSLLINK_tap_move[6][6] = { /* TLR RTI SD PD SI PI */ {0xff, 0x7f, 0x2f, 0x0a, 0x37, 0x16}, /* TLR */ @@ -158,7 +158,7 @@ static insert_insignificant_operation_t VSLLINK_TAP_MOVE_INSERT_INSIGNIFICANT[6] {0, 0,}}, /* PI */ }; -static u8 VSLLINK_BIT_MSK[8] = +static uint8_t VSLLINK_BIT_MSK[8] = { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f }; @@ -168,7 +168,7 @@ typedef struct int offset; int length; /* Number of bits to read */ scan_command_t *command; /* Corresponding scan command */ - u8 *buffer; + uint8_t *buffer; } pending_scan_result_t; #define MAX_PENDING_SCAN_RESULTS 256 @@ -176,23 +176,6 @@ typedef struct static int pending_scan_results_length; static pending_scan_result_t pending_scan_results_buffer[MAX_PENDING_SCAN_RESULTS]; -/* External interface functions */ -static int vsllink_execute_queue(void); -static int vsllink_speed(int speed); -static int vsllink_khz(int khz, int *jtag_speed); -static int vsllink_speed_div(int jtag_speed, int *khz); -static int vsllink_register_commands(struct command_context_s *cmd_ctx); -static int vsllink_init(void); -static int vsllink_quit(void); - -/* CLI command handler functions */ -static int vsllink_handle_usb_vid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -static int vsllink_handle_usb_pid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -static int vsllink_handle_usb_bulkin_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -static int vsllink_handle_usb_bulkout_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -static int vsllink_handle_usb_interface_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -static int vsllink_handle_mode_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); - /* Queue command functions */ static void vsllink_end_state(tap_state_t state); static void vsllink_state_move_dma(void); @@ -205,11 +188,11 @@ static void vsllink_runtest(int num_cycles); static void vsllink_stableclocks_dma(int num_cycles, int tms); static void vsllink_stableclocks_normal(int num_cycles, int tms); static void (*vsllink_stableclocks)(int num_cycles, int tms); -static void vsllink_scan_dma(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); -static void vsllink_scan_normal(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); -static void (*vsllink_scan)(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); +static void vsllink_scan_dma(bool ir_scan, enum scan_type type, uint8_t *buffer, int scan_size, scan_command_t *command); +static void vsllink_scan_normal(bool ir_scan, enum scan_type type, uint8_t *buffer, int scan_size, scan_command_t *command); +static void (*vsllink_scan)(bool ir_scan, enum scan_type type, uint8_t *buffer, int scan_size, scan_command_t *command); static void vsllink_reset(int trst, int srst); -static void vsllink_simple_command(u8 command); +static void vsllink_simple_command(uint8_t command); static int vsllink_connect(void); static int vsllink_disconnect(void); @@ -224,8 +207,8 @@ static int (*vsllink_tap_execute)(void); static void vsllink_tap_ensure_space_dma(int scans, int length); static void vsllink_tap_ensure_space_normal(int scans, int length); static void (*vsllink_tap_ensure_space)(int scans, int length); -static void vsllink_tap_append_scan_dma(int length, u8 *buffer, scan_command_t *command); -static void vsllink_tap_append_scan_normal(int length, u8 *buffer, scan_command_t *command, int offset); +static void vsllink_tap_append_scan_dma(int length, uint8_t *buffer, scan_command_t *command); +static void vsllink_tap_append_scan_normal(int length, uint8_t *buffer, scan_command_t *command, int offset); /* VSLLink lowlevel functions */ typedef struct vsllink_jtag @@ -240,36 +223,21 @@ static int vsllink_usb_write(vsllink_jtag_t *vsllink_jtag, int out_length); static int vsllink_usb_read(vsllink_jtag_t *vsllink_jtag); #if defined _DEBUG_USB_COMMS_ || defined _DEBUG_JTAG_IO_ -static void vsllink_debug_buffer(u8 *buffer, int length); +static void vsllink_debug_buffer(uint8_t *buffer, int length); #endif static int vsllink_tms_data_len = 0; -static u8* vsllink_tms_cmd_pos; +static uint8_t* vsllink_tms_cmd_pos; static int tap_length = 0; static int tap_buffer_size = 0; -static u8 *tms_buffer = NULL; -static u8 *tdi_buffer = NULL; -static u8 *tdo_buffer = NULL; +static uint8_t *tms_buffer = NULL; +static uint8_t *tdi_buffer = NULL; +static uint8_t *tdo_buffer = NULL; static int last_tms; static vsllink_jtag_t* vsllink_jtag_handle = NULL; -/***************************************************************************/ -/* External interface implementation */ - -jtag_interface_t vsllink_interface = -{ - .name = "vsllink", - .execute_queue = vsllink_execute_queue, - .speed = vsllink_speed, - .khz = vsllink_khz, - .speed_div = vsllink_speed_div, - .register_commands = vsllink_register_commands, - .init = vsllink_init, - .quit = vsllink_quit -}; - static void reset_command_pointer(void) { if (vsllink_mode == VSLLINK_MODE_NORMAL) @@ -288,7 +256,7 @@ static int vsllink_execute_queue(void) jtag_command_t *cmd = jtag_command_queue; int scan_size; enum scan_type type; - u8 *buffer; + uint8_t *buffer; DEBUG_JTAG_IO("--------------------------------- vsllink -------------------------------------"); @@ -298,7 +266,7 @@ static int vsllink_execute_queue(void) switch (cmd->type) { case JTAG_RUNTEST: - DEBUG_JTAG_IO( "runtest %i cycles, end in %s", cmd->cmd.runtest->num_cycles, \ + DEBUG_JTAG_IO("runtest %i cycles, end in %s", cmd->cmd.runtest->num_cycles, \ tap_state_name(cmd->cmd.runtest->end_state)); vsllink_end_state(cmd->cmd.runtest->end_state); @@ -362,7 +330,7 @@ static int vsllink_execute_queue(void) case JTAG_STABLECLOCKS: DEBUG_JTAG_IO("add %d clocks", cmd->cmd.stableclocks->num_cycles); - switch(tap_get_state()) + switch (tap_get_state()) { case TAP_RESET: // tms should be '1' to stay in TAP_RESET mode @@ -377,8 +345,8 @@ static int vsllink_execute_queue(void) scan_size = 0; break; /* above stable states are OK */ default: - LOG_ERROR( "jtag_add_clocks() was called with TAP in non-stable state \"%s\"", - tap_state_name(tap_get_state()) ); + LOG_ERROR("jtag_add_clocks() was called with TAP in non-stable state \"%s\"", + tap_state_name(tap_get_state())); exit(-1); } vsllink_stableclocks(cmd->cmd.stableclocks->num_cycles, scan_size); @@ -491,9 +459,9 @@ static int vsllink_init(void) if (vsllink_mode == VSLLINK_MODE_DMA) { tap_buffer_size = (VSLLINK_BufferSize - 3) / 2; - tms_buffer = (u8*)malloc(tap_buffer_size); - tdi_buffer = (u8*)malloc(tap_buffer_size); - tdo_buffer = (u8*)malloc(tap_buffer_size); + tms_buffer = (uint8_t*)malloc(tap_buffer_size); + tdi_buffer = (uint8_t*)malloc(tap_buffer_size); + tdo_buffer = (uint8_t*)malloc(tap_buffer_size); if ((tms_buffer == NULL) || (tdi_buffer == NULL) || (tdo_buffer == NULL)) { LOG_ERROR("Not enough memory"); @@ -626,8 +594,8 @@ static int vsllink_connect(void) // length of VSLLINK_CMDJTAGSEQ_TMSBYTE has been set, no need to set it here. static void vsllink_append_tms(void) { - u8 tms_scan = VSLLINK_TAP_MOVE(tap_get_state(), tap_get_end_state()); - u16 tms2; + uint8_t tms_scan = VSLLINK_TAP_MOVE(tap_get_state(), tap_get_end_state()); + uint16_t tms2; insert_insignificant_operation_t *insert = \ &VSLLINK_TAP_MOVE_INSERT_INSIGNIFICANT[tap_move_ndx(tap_get_state())][tap_move_ndx(tap_get_end_state())]; @@ -691,7 +659,7 @@ static void vsllink_state_move_dma(void) int i, insert_length = (tap_length % 8) ? (8 - (tap_length % 8)) : 0; insert_insignificant_operation_t *insert = \ &VSLLINK_TAP_MOVE_INSERT_INSIGNIFICANT[tap_move_ndx(tap_get_state())][tap_move_ndx(tap_get_end_state())]; - u8 tms_scan = VSLLINK_TAP_MOVE(tap_get_state(), tap_get_end_state()); + uint8_t tms_scan = VSLLINK_TAP_MOVE(tap_get_state(), tap_get_end_state()); if (tap_get_state() == TAP_RESET) { @@ -955,7 +923,7 @@ static void vsllink_path_move_dma(int num_states, tap_state_t *path) static void vsllink_stableclocks_normal(int num_cycles, int tms) { int tms_len; - u16 tms_append_byte; + uint16_t tms_append_byte; if (vsllink_tms_data_len > 0) { @@ -965,7 +933,7 @@ static void vsllink_stableclocks_normal(int num_cycles, int tms) if (tms > 0) { // append '1' for tms - tms_append_byte = (u16)((((1 << num_cycles) - 1) << vsllink_tms_data_len) & 0xFFFF); + tms_append_byte = (uint16_t)((((1 << num_cycles) - 1) << vsllink_tms_data_len) & 0xFFFF); } else { @@ -980,14 +948,14 @@ static void vsllink_stableclocks_normal(int num_cycles, int tms) // just add to vsllink_tms_data_len // same result if tun through //vsllink_tms_data_len += num_cycles; - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx] |= (u8)(tms_append_byte & 0xFF); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx] |= (uint8_t)(tms_append_byte & 0xFF); } else if (tms_len == 8) { // end last tms shift command // just reduce it, and append last tms byte (*vsllink_tms_cmd_pos)--; - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (u8)(tms_append_byte & 0xFF); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (uint8_t)(tms_append_byte & 0xFF); } else if (tms_len < 16) { @@ -997,8 +965,8 @@ static void vsllink_stableclocks_normal(int num_cycles, int tms) // there is enought tms length in the current tms shift command // increase the tms byte length by 1 and set the last byte to 0 (*vsllink_tms_cmd_pos)++; - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (u8)(tms_append_byte & 0xFF); - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx] = (u8)(tms_append_byte >> 8); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (uint8_t)(tms_append_byte & 0xFF); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx] = (uint8_t)(tms_append_byte >> 8); } else { @@ -1008,19 +976,19 @@ static void vsllink_stableclocks_normal(int num_cycles, int tms) // first decrease byte length of last tms shift command (*vsllink_tms_cmd_pos)--; // append last tms byte and move the command pointer to the next empty position - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (u8)(tms_append_byte & 0xFF); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (uint8_t)(tms_append_byte & 0xFF); // add new command(3 bytes) vsllink_tap_ensure_space(0, 3); vsllink_tms_cmd_pos = &vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx]; vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] = VSLLINK_CMDJTAGSEQ_TMSBYTE | 1; - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx] = (u8)(tms_append_byte >> 8); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx] = (uint8_t)(tms_append_byte >> 8); } } else if (tms_len == 16) { // end last tms shift command - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (u8)(tms_append_byte & 0xFF); - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] = (u8)(tms_append_byte >> 8); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (uint8_t)(tms_append_byte & 0xFF); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] = (uint8_t)(tms_append_byte >> 8); } vsllink_tms_data_len = tms_len & 7; @@ -1033,8 +1001,8 @@ static void vsllink_stableclocks_normal(int num_cycles, int tms) else { // more shifts will be needed - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (u8)(tms_append_byte & 0xFF); - vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] = (u8)(tms_append_byte >> 8); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] |= (uint8_t)(tms_append_byte & 0xFF); + vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx++] = (uint8_t)(tms_append_byte >> 8); num_cycles -= 16 - vsllink_tms_data_len; vsllink_tms_data_len = 0; @@ -1172,13 +1140,13 @@ static void vsllink_runtest(int num_cycles) } } -static void vsllink_scan_normal(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command) +static void vsllink_scan_normal(bool ir_scan, enum scan_type type, uint8_t *buffer, int scan_size, scan_command_t *command) { tap_state_t saved_end_state; - u8 bits_left, tms_tmp, tdi_len; + uint8_t bits_left, tms_tmp, tdi_len; int i; - if (0 == scan_size ) + if (0 == scan_size) { return; } @@ -1201,12 +1169,12 @@ static void vsllink_scan_normal(bool ir_scan, enum scan_type type, u8 *buffer, i { // already in IRSHIFT or DRSHIFT state // merge tms data in the last tms shift command into next scan command - if(*vsllink_tms_cmd_pos < 1) + if (*vsllink_tms_cmd_pos < 1) { LOG_ERROR("There MUST be some bugs in the driver"); exit(-1); } - else if(*vsllink_tms_cmd_pos < 2) + else if (*vsllink_tms_cmd_pos < 2) { tms_tmp = vsllink_usb_out_buffer[vsllink_usb_out_buffer_idx]; vsllink_usb_out_buffer_idx--; @@ -1288,7 +1256,7 @@ static void vsllink_scan_normal(bool ir_scan, enum scan_type type, u8 *buffer, i tap_set_state(tap_get_end_state()); } -static void vsllink_scan_dma(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command) +static void vsllink_scan_dma(bool ir_scan, enum scan_type type, uint8_t *buffer, int scan_size, scan_command_t *command) { tap_state_t saved_end_state; @@ -1342,7 +1310,7 @@ static void vsllink_reset(int trst, int srst) } } -static void vsllink_simple_command(u8 command) +static void vsllink_simple_command(uint8_t command) { int result; @@ -1357,24 +1325,6 @@ static void vsllink_simple_command(u8 command) } } -static int vsllink_register_commands(struct command_context_s *cmd_ctx) -{ - register_command(cmd_ctx, NULL, "vsllink_usb_vid", vsllink_handle_usb_vid_command, - COMMAND_CONFIG, NULL); - register_command(cmd_ctx, NULL, "vsllink_usb_pid", vsllink_handle_usb_pid_command, - COMMAND_CONFIG, NULL); - register_command(cmd_ctx, NULL, "vsllink_usb_bulkin", vsllink_handle_usb_bulkin_command, - COMMAND_CONFIG, NULL); - register_command(cmd_ctx, NULL, "vsllink_usb_bulkout", vsllink_handle_usb_bulkout_command, - COMMAND_CONFIG, NULL); - register_command(cmd_ctx, NULL, "vsllink_usb_interface", vsllink_handle_usb_interface_command, - COMMAND_CONFIG, NULL); - register_command(cmd_ctx, NULL, "vsllink_mode", vsllink_handle_mode_command, - COMMAND_CONFIG, NULL); - - return ERROR_OK; -} - static int vsllink_handle_mode_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { if (argc != 1) { @@ -1407,8 +1357,7 @@ static int vsllink_handle_usb_vid_command(struct command_context_s *cmd_ctx, cha return ERROR_OK; } - vsllink_usb_vid = strtol(args[0], NULL, 0); - + COMMAND_PARSE_NUMBER(u16, args[0], vsllink_usb_vid); return ERROR_OK; } @@ -1419,9 +1368,7 @@ static int vsllink_handle_usb_pid_command(struct command_context_s *cmd_ctx, cha LOG_ERROR("parameter error, should be one parameter for PID"); return ERROR_OK; } - - vsllink_usb_pid = strtol(args[0], NULL, 0); - + COMMAND_PARSE_NUMBER(u16, args[0], vsllink_usb_pid); return ERROR_OK; } @@ -1433,7 +1380,9 @@ static int vsllink_handle_usb_bulkin_command(struct command_context_s *cmd_ctx, return ERROR_OK; } - vsllink_usb_bulkin = strtol(args[0], NULL, 0) | 0x80; + COMMAND_PARSE_NUMBER(u8, args[0], vsllink_usb_bulkin); + + vsllink_usb_bulkin |= 0x80; return ERROR_OK; } @@ -1446,7 +1395,9 @@ static int vsllink_handle_usb_bulkout_command(struct command_context_s *cmd_ctx, return ERROR_OK; } - vsllink_usb_bulkout = strtol(args[0], NULL, 0); + COMMAND_PARSE_NUMBER(u8, args[0], vsllink_usb_bulkout); + + vsllink_usb_bulkout &= ~0x80; return ERROR_OK; } @@ -1459,8 +1410,7 @@ static int vsllink_handle_usb_interface_command(struct command_context_s *cmd_ct return ERROR_OK; } - vsllink_usb_interface = strtol(args[0], NULL, 0); - + COMMAND_PARSE_NUMBER(u8, args[0], vsllink_usb_interface); return ERROR_OK; } @@ -1508,7 +1458,7 @@ static void vsllink_tap_append_step(int tms, int tdi) if (index < tap_buffer_size) { int bit_index = tap_length % 8; - u8 bit = 1 << bit_index; + uint8_t bit = 1 << bit_index; if (tms) { @@ -1536,7 +1486,7 @@ static void vsllink_tap_append_step(int tms, int tdi) } } -static void vsllink_tap_append_scan_normal(int length, u8 *buffer, scan_command_t *command, int offset) +static void vsllink_tap_append_scan_normal(int length, uint8_t *buffer, scan_command_t *command, int offset) { pending_scan_result_t *pending_scan_result = &pending_scan_results_buffer[pending_scan_results_length]; int i; @@ -1561,7 +1511,7 @@ static void vsllink_tap_append_scan_normal(int length, u8 *buffer, scan_command_ pending_scan_results_length++; } -static void vsllink_tap_append_scan_dma(int length, u8 *buffer, scan_command_t *command) +static void vsllink_tap_append_scan_dma(int length, uint8_t *buffer, scan_command_t *command) { pending_scan_result_t *pending_scan_result; int len_tmp, len_all, i; @@ -1588,7 +1538,7 @@ static void vsllink_tap_append_scan_dma(int length, u8 *buffer, scan_command_t * for (i = 0; i < len_tmp; i++) { - vsllink_tap_append_step(((len_all+i) < length-1 ? 0 : 1), (buffer[(len_all+i)/8] >> ((len_all+i)%8)) & 1); + vsllink_tap_append_step(((len_all + i) < length-1 ? 0 : 1), (buffer[(len_all + i)/8] >> ((len_all + i)%8)) & 1); } pending_scan_results_length++; @@ -1606,7 +1556,7 @@ static int vsllink_tap_execute_normal(void) if (vsllink_tms_data_len > 0) { - if((tap_get_state() != TAP_RESET) && (tap_get_state() != TAP_IDLE) && (tap_get_state() != TAP_IRPAUSE) && (tap_get_state() != TAP_DRPAUSE)) + if ((tap_get_state() != TAP_RESET) && (tap_get_state() != TAP_IDLE) && (tap_get_state() != TAP_IRPAUSE) && (tap_get_state() != TAP_DRPAUSE)) { LOG_WARNING("%s is not in RESET or IDLE or PAUSR state", tap_state_name(tap_get_state())); } @@ -1642,7 +1592,7 @@ static int vsllink_tap_execute_normal(void) for (i = 0; i < pending_scan_results_length; i++) { pending_scan_result_t *pending_scan_result = &pending_scan_results_buffer[i]; - u8 *buffer = pending_scan_result->buffer; + uint8_t *buffer = pending_scan_result->buffer; int length = pending_scan_result->length; int offset = pending_scan_result->offset; scan_command_t *command = pending_scan_result->command; @@ -1715,7 +1665,7 @@ static int vsllink_tap_execute_dma(void) for (i = 0; i < pending_scan_results_length; i++) { pending_scan_result_t *pending_scan_result = &pending_scan_results_buffer[i]; - u8 *buffer = pending_scan_result->buffer; + uint8_t *buffer = pending_scan_result->buffer; int length = pending_scan_result->length; int first = pending_scan_result->offset; @@ -1848,7 +1798,7 @@ static int vsllink_usb_message(vsllink_jtag_t *vsllink_jtag, int out_length, int if (in_length > 0) { result = vsllink_usb_read(vsllink_jtag); - if (result == in_length ) + if (result == in_length) { return result; } @@ -1913,7 +1863,7 @@ static int vsllink_usb_read(vsllink_jtag_t *vsllink_jtag) #define BYTES_PER_LINE 16 #if defined _DEBUG_USB_COMMS_ || defined _DEBUG_JTAG_IO_ -static void vsllink_debug_buffer(u8 *buffer, int length) +static void vsllink_debug_buffer(uint8_t *buffer, int length) { char line[81]; char s[4]; @@ -1932,3 +1882,38 @@ static void vsllink_debug_buffer(u8 *buffer, int length) } } #endif // _DEBUG_USB_COMMS_ || _DEBUG_JTAG_IO_ + +static int vsllink_register_commands(struct command_context_s *cmd_ctx) +{ + register_command(cmd_ctx, NULL, "vsllink_usb_vid", + vsllink_handle_usb_vid_command, COMMAND_CONFIG, + NULL); + register_command(cmd_ctx, NULL, "vsllink_usb_pid", + vsllink_handle_usb_pid_command, COMMAND_CONFIG, + NULL); + register_command(cmd_ctx, NULL, "vsllink_usb_bulkin", + vsllink_handle_usb_bulkin_command, COMMAND_CONFIG, + NULL); + register_command(cmd_ctx, NULL, "vsllink_usb_bulkout", + vsllink_handle_usb_bulkout_command, COMMAND_CONFIG, + NULL); + register_command(cmd_ctx, NULL, "vsllink_usb_interface", + vsllink_handle_usb_interface_command, COMMAND_CONFIG, + NULL); + register_command(cmd_ctx, NULL, "vsllink_mode", + vsllink_handle_mode_command, COMMAND_CONFIG, + NULL); + + return ERROR_OK; +} + +jtag_interface_t vsllink_interface = { + .name = "vsllink", + .register_commands = &vsllink_register_commands, + .init = &vsllink_init, + .quit = &vsllink_quit, + .khz = &vsllink_khz, + .speed = &vsllink_speed, + .speed_div = &vsllink_speed_div, + .execute_queue = &vsllink_execute_queue, + };