From f87158cceb6d0e18674b2c998405b18598557e8e Mon Sep 17 00:00:00 2001
From: Alexander Osipenko <sipych@gmail.com>
Date: Thu, 24 May 2012 16:04:34 +0400
Subject: [PATCH] J-Link Unsupported firmware version check

OpenOCD does not work with the latest firmware versions
of Segger J-Link.

Latest working version: V4.42c
Unsupported versions: 4.44 to 4.46f, 4.20 to 4.30

Older versions of firmware can be found here:
  http://www.segger.com/j-link-older-versions.html

The firmware versions does not correspond directly with
"Software and documentation pack for Windows", it may be
distinguished by the "compile" date in the information string.

Print an warning message if unsupported firmware version detected.

Change-Id: Id7d1f965b8ce2fdbcd0026a85ddd093e2fa48720
Signed-off-by: Alexander Osipenko <sipych@gmail.com>
---
 src/jtag/drivers/jlink.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c
index 35c1a5c..03fa46a 100644
--- a/src/jtag/drivers/jlink.c
+++ b/src/jtag/drivers/jlink.c
@@ -738,6 +738,26 @@ static int jlink_set_config(struct jlink_config *cfg)
 	return ERROR_OK;
 }
 
+/* List of unsupported version string markers */
+static const char * const unsupported_versions[] = {
+"Mar 19 2012", /* V4.44 */
+"May  3 2012", /* V4.46 "J-Link ARM V8 compiled May  3 2012 18:36:22" */
+0 };
+
+static void jlink_check_supported(const char *str)
+{
+	const char **p = unsupported_versions;
+	while (*p) {
+		if (NULL != strstr(str, *p)) {
+			LOG_WARNING(
+			"Unsupported J-Link firmware version.\n"
+			"       Please check http://www.segger.com/j-link-older-versions.html for updates");
+			return;
+		}
+		p++;
+	}
+}
+
 static int jlink_get_version_info(void)
 {
 	int result;
@@ -767,6 +787,7 @@ static int jlink_get_version_info(void)
 
 	usb_in_buffer[result] = 0;
 	LOG_INFO("%s", (char *)usb_in_buffer);
+	jlink_check_supported((char *)usb_in_buffer);
 
 	/* query hardware capabilities */
 	jlink_simple_command(EMU_CMD_GET_CAPS);
-- 
1.7.6.5

