X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Farm-jtag-ew.c;h=180f40d105dfbef4f1ff3b78cb08080099887b70;hb=7992eaf0fcfa3afe9941200fd76b0c296aadb356;hp=f5aa2c95730403db4d4928a6cfe87cb4248ec281;hpb=e211e4c6d2a3a59b914638506f7829ed763f251f;p=openocd.git diff --git a/src/jtag/arm-jtag-ew.c b/src/jtag/arm-jtag-ew.c index f5aa2c9573..180f40d105 100644 --- a/src/jtag/arm-jtag-ew.c +++ b/src/jtag/arm-jtag-ew.c @@ -24,29 +24,9 @@ #include "config.h" #endif -#include "replacements.h" - #include "jtag.h" #include -#include -#include - -/* system includes */ - -#include "log.h" -/* enable this to debug communication - */ -#if 1 -#define _DEBUG_USB_COMMS_ -#define _DEBUG_JTAG_IO_ -#endif - -#ifdef _DEBUG_JTAG_IO_ -#define DEBUG_JTAG_IO(expr ...) LOG_DEBUG(expr) -#else -#define DEBUG_JTAG_IO(expr ...) -#endif #define USB_VID 0x15ba #define USB_PID 0x001e @@ -77,32 +57,32 @@ static u8 usb_in_buffer[ARMJTAGEW_IN_BUFFER_SIZE]; static u8 usb_out_buffer[ARMJTAGEW_OUT_BUFFER_SIZE]; /* External interface functions */ -int armjtagew_execute_queue(void); -int armjtagew_speed(int speed); -int armjtagew_khz(int khz, int *jtag_speed); -int armjtagew_register_commands(struct command_context_s *cmd_ctx); -int armjtagew_init(void); -int armjtagew_quit(void); +static int armjtagew_execute_queue(void); +static int armjtagew_speed(int speed); +static int armjtagew_khz(int khz, int *jtag_speed); +static int armjtagew_register_commands(struct command_context_s *cmd_ctx); +static int armjtagew_init(void); +static int armjtagew_quit(void); /* CLI command handler functions */ -int armjtagew_handle_armjtagew_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int armjtagew_handle_armjtagew_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); /* Queue command functions */ -void armjtagew_end_state(tap_state_t state); -void armjtagew_state_move(void); -void armjtagew_path_move(int num_states, tap_state_t *path); -void armjtagew_runtest(int num_cycles); -void armjtagew_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); -void armjtagew_reset(int trst, int srst); -void armjtagew_simple_command(u8 command); -int armjtagew_get_status(void); +static void armjtagew_end_state(tap_state_t state); +static void armjtagew_state_move(void); +static void armjtagew_path_move(int num_states, tap_state_t *path); +static void armjtagew_runtest(int num_cycles); +static void armjtagew_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command); +static void armjtagew_reset(int trst, int srst); +//static void armjtagew_simple_command(u8 command); +static int armjtagew_get_status(void); /* tap buffer functions */ -void armjtagew_tap_init(void); -int armjtagew_tap_execute(void); -void armjtagew_tap_ensure_space(int scans, int bits); -void armjtagew_tap_append_step(int tms, int tdi); -void armjtagew_tap_append_scan(int length, u8 *buffer, scan_command_t *command); +static void armjtagew_tap_init(void); +static int armjtagew_tap_execute(void); +static void armjtagew_tap_ensure_space(int scans, int bits); +static void armjtagew_tap_append_step(int tms, int tdi); +static void armjtagew_tap_append_scan(int length, u8 *buffer, scan_command_t *command); /* ARM-JTAG-EW lowlevel functions */ typedef struct armjtagew_jtag @@ -110,20 +90,20 @@ typedef struct armjtagew_jtag struct usb_dev_handle* usb_handle; } armjtagew_jtag_t; -armjtagew_jtag_t *armjtagew_usb_open(void); -void armjtagew_usb_close(armjtagew_jtag_t *armjtagew_jtag); -int armjtagew_usb_message(armjtagew_jtag_t *armjtagew_jtag, int out_length, int in_length); -int armjtagew_usb_write(armjtagew_jtag_t *armjtagew_jtag, int out_length); -int armjtagew_usb_read(armjtagew_jtag_t *armjtagew_jtag, int exp_in_length); +static armjtagew_jtag_t *armjtagew_usb_open(void); +static void armjtagew_usb_close(armjtagew_jtag_t *armjtagew_jtag); +static int armjtagew_usb_message(armjtagew_jtag_t *armjtagew_jtag, int out_length, int in_length); +static int armjtagew_usb_write(armjtagew_jtag_t *armjtagew_jtag, int out_length); +static int armjtagew_usb_read(armjtagew_jtag_t *armjtagew_jtag, int exp_in_length); /* helper functions */ -int armjtagew_get_version_info(void); +static int armjtagew_get_version_info(void); #ifdef _DEBUG_USB_COMMS_ -void armjtagew_debug_buffer(u8 *buffer, int length); +static void armjtagew_debug_buffer(u8 *buffer, int length); #endif -armjtagew_jtag_t* armjtagew_jtag_handle; +static armjtagew_jtag_t* armjtagew_jtag_handle; @@ -142,7 +122,7 @@ jtag_interface_t armjtagew_interface = }; -int armjtagew_execute_queue(void) +static int armjtagew_execute_queue(void) { jtag_command_t *cmd = jtag_command_queue; int scan_size; @@ -153,20 +133,11 @@ int armjtagew_execute_queue(void) { switch (cmd->type) { - case JTAG_END_STATE: - DEBUG_JTAG_IO("end_state: %i", cmd->cmd.end_state->end_state); - - if (cmd->cmd.end_state->end_state != -1) - { - armjtagew_end_state(cmd->cmd.end_state->end_state); - } - break; - case JTAG_RUNTEST: DEBUG_JTAG_IO( "runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \ cmd->cmd.runtest->end_state); - if (cmd->cmd.runtest->end_state != -1) + if (cmd->cmd.runtest->end_state != TAP_INVALID) { armjtagew_end_state(cmd->cmd.runtest->end_state); } @@ -176,7 +147,7 @@ int armjtagew_execute_queue(void) case JTAG_STATEMOVE: DEBUG_JTAG_IO("statemove end in %i", cmd->cmd.statemove->end_state); - if (cmd->cmd.statemove->end_state != -1) + if (cmd->cmd.statemove->end_state != TAP_INVALID) { armjtagew_end_state(cmd->cmd.statemove->end_state); } @@ -194,7 +165,7 @@ int armjtagew_execute_queue(void) case JTAG_SCAN: DEBUG_JTAG_IO("scan end in %i", cmd->cmd.scan->end_state); - if (cmd->cmd.scan->end_state != -1) + if (cmd->cmd.scan->end_state != TAP_INVALID) { armjtagew_end_state(cmd->cmd.scan->end_state); } @@ -239,7 +210,7 @@ int armjtagew_execute_queue(void) /* Sets speed in kHz. */ -int armjtagew_speed(int speed) +static int armjtagew_speed(int speed) { int result; int speed_real; @@ -273,21 +244,21 @@ int armjtagew_speed(int speed) } -int armjtagew_khz(int khz, int *jtag_speed) +static int armjtagew_khz(int khz, int *jtag_speed) { *jtag_speed = khz; return ERROR_OK; } -int armjtagew_register_commands(struct command_context_s *cmd_ctx) +static int armjtagew_register_commands(struct command_context_s *cmd_ctx) { register_command(cmd_ctx, NULL, "armjtagew_info", armjtagew_handle_armjtagew_info_command, COMMAND_EXEC, "query armjtagew info"); return ERROR_OK; } -int armjtagew_init(void) +static int armjtagew_init(void) { int check_cnt; @@ -325,7 +296,7 @@ int armjtagew_init(void) return ERROR_OK; } -int armjtagew_quit(void) +static int armjtagew_quit(void) { armjtagew_usb_close(armjtagew_jtag_handle); return ERROR_OK; @@ -334,7 +305,7 @@ int armjtagew_quit(void) /***************************************************************************/ /* Queue command implementations */ -void armjtagew_end_state(tap_state_t state) +static void armjtagew_end_state(tap_state_t state) { if (tap_is_state_stable(state)) { @@ -348,13 +319,14 @@ void armjtagew_end_state(tap_state_t state) } /* Goes to the end state. */ -void armjtagew_state_move(void) +static void armjtagew_state_move(void) { int i; int tms = 0; u8 tms_scan = tap_get_tms_path(tap_get_state(), tap_get_end_state()); + int tms_count = tap_get_tms_path_len(tap_get_state(), tap_get_end_state()); - for (i = 0; i < 7; i++) + for (i = 0; i < tms_count; i++) { tms = (tms_scan >> i) & 1; armjtagew_tap_append_step(tms, 0); @@ -363,7 +335,7 @@ void armjtagew_state_move(void) tap_set_state(tap_get_end_state()); } -void armjtagew_path_move(int num_states, tap_state_t *path) +static void armjtagew_path_move(int num_states, tap_state_t *path) { int i; @@ -394,7 +366,7 @@ void armjtagew_path_move(int num_states, tap_state_t *path) tap_set_end_state(tap_get_state()); } -void armjtagew_runtest(int num_cycles) +static void armjtagew_runtest(int num_cycles) { int i; @@ -421,7 +393,7 @@ void armjtagew_runtest(int num_cycles) } } -void armjtagew_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command) +static void armjtagew_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command) { tap_state_t saved_end_state; @@ -449,7 +421,7 @@ void armjtagew_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, } } -void armjtagew_reset(int trst, int srst) +static void armjtagew_reset(int trst, int srst) { const u8 trst_mask = (1u<<5); const u8 srst_mask = (1u<<6); @@ -498,7 +470,7 @@ void armjtagew_reset(int trst, int srst) } -int armjtagew_get_status(void) +static int armjtagew_get_status(void) { int result; @@ -530,7 +502,7 @@ int armjtagew_get_status(void) return ERROR_OK; } -int armjtagew_get_version_info(void) +static int armjtagew_get_version_info(void) { int result; char sn[16]; @@ -559,7 +531,7 @@ int armjtagew_get_version_info(void) return ERROR_OK; } -int armjtagew_handle_armjtagew_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int armjtagew_handle_armjtagew_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { if (armjtagew_get_version_info() == ERROR_OK) { @@ -596,13 +568,13 @@ static pending_scan_result_t pending_scan_results_buffer[MAX_PENDING_SCAN_RESULT static int last_tms; -void armjtagew_tap_init(void) +static void armjtagew_tap_init(void) { tap_length = 0; pending_scan_results_length = 0; } -void armjtagew_tap_ensure_space(int scans, int bits) +static void armjtagew_tap_ensure_space(int scans, int bits) { int available_scans = MAX_PENDING_SCAN_RESULTS - pending_scan_results_length; int available_bits = ARMJTAGEW_TAP_BUFFER_SIZE * 8 - tap_length; @@ -613,7 +585,7 @@ void armjtagew_tap_ensure_space(int scans, int bits) } } -void armjtagew_tap_append_step(int tms, int tdi) +static void armjtagew_tap_append_step(int tms, int tdi) { last_tms = tms; int index = tap_length / 8; @@ -668,7 +640,7 @@ void armjtagew_tap_append_scan(int length, u8 *buffer, scan_command_t *command) /* Pad and send a tap sequence to the device, and receive the answer. * For the purpose of padding we assume that we are in idle or pause state. */ -int armjtagew_tap_execute(void) +static int armjtagew_tap_execute(void) { int byte_length; int tms_offset; @@ -764,7 +736,7 @@ int armjtagew_tap_execute(void) /*****************************************************************************/ /* JLink USB low-level functions */ -armjtagew_jtag_t* armjtagew_usb_open() +static armjtagew_jtag_t* armjtagew_usb_open() { struct usb_bus *busses; struct usb_bus *bus; @@ -812,14 +784,14 @@ armjtagew_jtag_t* armjtagew_usb_open() return NULL; } -void armjtagew_usb_close(armjtagew_jtag_t *armjtagew_jtag) +static void armjtagew_usb_close(armjtagew_jtag_t *armjtagew_jtag) { usb_close(armjtagew_jtag->usb_handle); free(armjtagew_jtag); } /* Send a message and receive the reply. */ -int armjtagew_usb_message(armjtagew_jtag_t *armjtagew_jtag, int out_length, int in_length) +static int armjtagew_usb_message(armjtagew_jtag_t *armjtagew_jtag, int out_length, int in_length) { int result; @@ -842,7 +814,7 @@ int armjtagew_usb_message(armjtagew_jtag_t *armjtagew_jtag, int out_length, int } /* Write data from out_buffer to USB. */ -int armjtagew_usb_write(armjtagew_jtag_t *armjtagew_jtag, int out_length) +static int armjtagew_usb_write(armjtagew_jtag_t *armjtagew_jtag, int out_length) { int result; @@ -864,7 +836,7 @@ int armjtagew_usb_write(armjtagew_jtag_t *armjtagew_jtag, int out_length) } /* Read data from USB into in_buffer. */ -int armjtagew_usb_read(armjtagew_jtag_t *armjtagew_jtag, int exp_in_length) +static int armjtagew_usb_read(armjtagew_jtag_t *armjtagew_jtag, int exp_in_length) { int result = usb_bulk_read(armjtagew_jtag->usb_handle, ARMJTAGEW_EPT_BULK_IN, \ (char*)usb_in_buffer, exp_in_length, ARMJTAGEW_USB_TIMEOUT); @@ -881,7 +853,7 @@ int armjtagew_usb_read(armjtagew_jtag_t *armjtagew_jtag, int exp_in_length) #ifdef _DEBUG_USB_COMMS_ #define BYTES_PER_LINE 16 -void armjtagew_debug_buffer(u8 *buffer, int length) +static void armjtagew_debug_buffer(u8 *buffer, int length) { char line[81]; char s[4]; @@ -896,7 +868,7 @@ void armjtagew_debug_buffer(u8 *buffer, int length) snprintf(s, 4, " %02x", buffer[j]); strcat(line, s); } - LOG_DEBUG(line); + LOG_DEBUG("%s", line); } } #endif