X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fvsllink.c;h=f462f07c82cdc20baf794dbc96fb1bec8736ecd2;hp=a5d001adda1828c26b00a2025d82841aaf73b046;hb=9f535f9af7c6b7e8843033049a6da0f6d76d513b;hpb=f876d5e9c769a288faa7fd14b7bf373363542aab diff --git a/src/jtag/vsllink.c b/src/jtag/vsllink.c index a5d001adda..f462f07c82 100644 --- a/src/jtag/vsllink.c +++ b/src/jtag/vsllink.c @@ -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); @@ -255,21 +238,6 @@ 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) @@ -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); @@ -1178,7 +1146,7 @@ static void vsllink_scan_normal(bool ir_scan, enum scan_type type, uint8_t *buff 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, uint8_t *buff { // 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--; @@ -1357,25 +1325,7 @@ static void vsllink_simple_command(uint8_t 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) +COMMAND_HANDLER(vsllink_handle_mode_command) { if (argc != 1) { LOG_ERROR("parameter error, should be one parameter for VID"); @@ -1399,7 +1349,7 @@ static int vsllink_handle_mode_command(struct command_context_s *cmd_ctx, char * return ERROR_OK; } -static int vsllink_handle_usb_vid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +COMMAND_HANDLER(vsllink_handle_usb_vid_command) { if (argc != 1) { @@ -1407,20 +1357,22 @@ static int vsllink_handle_usb_vid_command(struct command_context_s *cmd_ctx, cha return ERROR_OK; } - return parse_u16(args[0], &vsllink_usb_vid); + COMMAND_PARSE_NUMBER(u16, args[0], vsllink_usb_vid); + return ERROR_OK; } -static int vsllink_handle_usb_pid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +COMMAND_HANDLER(vsllink_handle_usb_pid_command) { if (argc != 1) { LOG_ERROR("parameter error, should be one parameter for PID"); return ERROR_OK; } - return parse_u16(args[0], &vsllink_usb_pid); + COMMAND_PARSE_NUMBER(u16, args[0], vsllink_usb_pid); + return ERROR_OK; } -static int vsllink_handle_usb_bulkin_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +COMMAND_HANDLER(vsllink_handle_usb_bulkin_command) { if (argc != 1) { @@ -1428,14 +1380,14 @@ static int vsllink_handle_usb_bulkin_command(struct command_context_s *cmd_ctx, return ERROR_OK; } - int retval = parse_u8(args[0], &vsllink_usb_bulkin); - if (ERROR_OK == retval) - vsllink_usb_bulkin |= 0x80; + COMMAND_PARSE_NUMBER(u8, args[0], vsllink_usb_bulkin); + + vsllink_usb_bulkin |= 0x80; - return retval; + return ERROR_OK; } -static int vsllink_handle_usb_bulkout_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +COMMAND_HANDLER(vsllink_handle_usb_bulkout_command) { if (argc != 1) { @@ -1443,14 +1395,14 @@ static int vsllink_handle_usb_bulkout_command(struct command_context_s *cmd_ctx, return ERROR_OK; } - int retval = parse_u8(args[0], &vsllink_usb_bulkout); - if (ERROR_OK == retval) - vsllink_usb_bulkout &= ~0x80; + COMMAND_PARSE_NUMBER(u8, args[0], vsllink_usb_bulkout); + + vsllink_usb_bulkout &= ~0x80; - return retval; + return ERROR_OK; } -static int vsllink_handle_usb_interface_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +COMMAND_HANDLER(vsllink_handle_usb_interface_command) { if (argc != 1) { @@ -1458,7 +1410,8 @@ static int vsllink_handle_usb_interface_command(struct command_context_s *cmd_ct return ERROR_OK; } - return parse_u8(args[0], &vsllink_usb_interface); + COMMAND_PARSE_NUMBER(u8, args[0], vsllink_usb_interface); + return ERROR_OK; } /***************************************************************************/ @@ -1585,7 +1538,7 @@ static void vsllink_tap_append_scan_dma(int length, uint8_t *buffer, scan_comman 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++; @@ -1603,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())); } @@ -1845,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; } @@ -1929,3 +1882,38 @@ static void vsllink_debug_buffer(uint8_t *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; +} + +struct jtag_interface 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, + };