From 7de51ceef9741b7d2bed6b34194345c5be90f6a1 Mon Sep 17 00:00:00 2001
From: oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Sun, 13 Apr 2008 11:42:49 +0000
Subject: [PATCH] allows launching OpenOCD w/telnet+gdb server w/the target
 powered down.

git-svn-id: svn://svn.berlios.de/openocd/trunk@570 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/openocd.c | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/openocd.c b/src/openocd.c
index 3c7816eab..449736e16 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -85,6 +85,7 @@ void exit_handler(void)
 /* OpenOCD can't really handle failure of this command. Patches welcome! :-) */
 int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
+	int retval;
 	static int initialized=0;
 	if (initialized)
 		return ERROR_OK;
@@ -95,21 +96,30 @@ int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
 
 	atexit(exit_handler);
 
-	/* FIX!!! this should happen *after* target_init(), but
-	 * for now there are target initialisations that talk
-	 * to JTAG whereas that *should* happen during target_examine()
-	 */
-	if (jtag_init(cmd_ctx) != ERROR_OK)
-		return ERROR_FAIL;
-	LOG_DEBUG("jtag init complete");
-
+	
 	if (target_init(cmd_ctx) != ERROR_OK)
 		return ERROR_FAIL;
 	LOG_DEBUG("target init complete");
 
-	if (target_examine(cmd_ctx) != ERROR_OK)
-		return ERROR_FAIL;
-	LOG_DEBUG("target examine complete");
+	if ((retval=jtag_interface_init(cmd_ctx)) != ERROR_OK)
+	{
+		/* we must be able to set up the jtag interface */
+		return retval;
+	}
+	LOG_DEBUG("jtag interface init complete");
+
+	/* Try to initialize & examine the JTAG chain at this point, but
+	 * continue startup regardless
+	 */
+	if (jtag_init(cmd_ctx) == ERROR_OK)
+	{
+		LOG_DEBUG("jtag init complete");
+		if (target_examine(cmd_ctx) == ERROR_OK)
+		{
+			LOG_DEBUG("jtag examine complete");
+		}
+	}
+
 	
 	if (flash_init_drivers(cmd_ctx) != ERROR_OK)
 		return ERROR_FAIL;
-- 
GitLab