Commit 335fee3f authored by zwelch's avatar zwelch
Browse files

Encapsulate the global "jtag" jtag_interface pointer:

- Add jtag_interface_quit, factored from exit_handler() in openocd.c.
- Remove its extern declaration.
- Add static keyword to its definition.


git-svn-id: svn://svn.berlios.de/openocd/trunk@1952 b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent 77015d5a
...@@ -227,7 +227,7 @@ jtag_interface_t *jtag_interfaces[] = { ...@@ -227,7 +227,7 @@ jtag_interface_t *jtag_interfaces[] = {
NULL, NULL,
}; };
jtag_interface_t *jtag = NULL; static jtag_interface_t *jtag = NULL;
/* configuration */ /* configuration */
static jtag_interface_t *jtag_interface = NULL; static jtag_interface_t *jtag_interface = NULL;
...@@ -2407,6 +2407,20 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx) ...@@ -2407,6 +2407,20 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx)
return ERROR_OK; return ERROR_OK;
} }
int jtag_interface_quit(void)
{
if (!jtag || !jtag->quit)
return ERROR_OK;
// close the JTAG interface
int result = jtag->quit();
if (ERROR_OK != result)
LOG_ERROR("failed: %d", result);
return ERROR_OK;
}
int jtag_init_reset(struct command_context_s *cmd_ctx) int jtag_init_reset(struct command_context_s *cmd_ctx)
{ {
int retval; int retval;
......
...@@ -512,8 +512,6 @@ typedef struct jtag_event_callback_s ...@@ -512,8 +512,6 @@ typedef struct jtag_event_callback_s
extern jtag_event_callback_t* jtag_event_callbacks; extern jtag_event_callback_t* jtag_event_callbacks;
extern jtag_interface_t* jtag; /* global pointer to configured JTAG interface */
extern int jtag_speed; extern int jtag_speed;
extern int jtag_speed_post_reset; extern int jtag_speed_post_reset;
...@@ -535,6 +533,9 @@ extern enum reset_types jtag_reset_config; ...@@ -535,6 +533,9 @@ extern enum reset_types jtag_reset_config;
*/ */
extern int jtag_interface_init(struct command_context_s* cmd_ctx); extern int jtag_interface_init(struct command_context_s* cmd_ctx);
/// Shutdown the JTAG interface upon program exit.
extern int jtag_interface_quit(void);
/* initialize JTAG chain using only a RESET reset. If init fails, /* initialize JTAG chain using only a RESET reset. If init fails,
* try reset + init. * try reset + init.
*/ */
......
...@@ -79,9 +79,7 @@ static int handle_version_command(struct command_context_s *cmd_ctx, char *cmd, ...@@ -79,9 +79,7 @@ static int handle_version_command(struct command_context_s *cmd_ctx, char *cmd,
static void exit_handler(void) static void exit_handler(void)
{ {
/* close JTAG interface */ jtag_interface_quit();
if (jtag && jtag->quit)
jtag->quit();
} }
static int log_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv) static int log_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment