Hi all,

This patch unwinds the logic in jlink_get_status/jlink_get_version_info.

Cheers,

Zach
Index: src/jtag/jlink.c
===================================================================
--- src/jtag/jlink.c	(revision 1497)
+++ src/jtag/jlink.c	(working copy)
@@ -485,53 +479,55 @@
 	int result;
 
 	jlink_simple_command(EMU_CMD_GET_STATE);
-	result = jlink_usb_read(jlink_jtag_handle, 8);
 
-	if (result == 8)
+	result = jlink_usb_read(jlink_jtag_handle, 8);
+	if (result != 8)
 	{
-		int vref = usb_in_buffer[0] + (usb_in_buffer[1] << 8);
-		LOG_INFO("Vref = %d.%d TCK = %d TDI = %d TDO = %d TMS = %d SRST = %d TRST = %d\n", \
-			vref / 1000, vref % 1000, \
-			usb_in_buffer[2], usb_in_buffer[3], usb_in_buffer[4], \
-			usb_in_buffer[5], usb_in_buffer[6], usb_in_buffer[7]);
-
-		if (vref < 1500)
-		{
-			LOG_ERROR("Vref too low. Check Target Power\n");
-		}
-	}
-	else
-	{
 		LOG_ERROR("J-Link command EMU_CMD_GET_STATE failed (%d)\n", result);
+		return ERROR_JTAG_DEVICE_ERROR;
 	}
 
+	int vref = usb_in_buffer[0] + (usb_in_buffer[1] << 8);
+	LOG_INFO("Vref = %d.%d TCK = %d TDI = %d TDO = %d TMS = %d SRST = %d TRST = %d\n", \
+		vref / 1000, vref % 1000, \
+		usb_in_buffer[2], usb_in_buffer[3], usb_in_buffer[4], \
+		usb_in_buffer[5], usb_in_buffer[6], usb_in_buffer[7]);
+
+	if (vref < 1500)
+		LOG_ERROR("Vref too low. Check Target Power\n");
+
 	return ERROR_OK;
 }
 
 static int jlink_get_version_info(void)
 {
 	int result;
-	int len = 0;
+	int len;
 
 	/* query hardware version */
 	jlink_simple_command(EMU_CMD_VERSION);
-	result = jlink_usb_read(jlink_jtag_handle, 2);
 
-	if (result == 2)
+	result = jlink_usb_read(jlink_jtag_handle, 2);
+	if (2 != result)
 	{
-		len = buf_get_u32(usb_in_buffer, 0, 16);
-		result = jlink_usb_read(jlink_jtag_handle, len);
+		LOG_ERROR("J-Link command EMU_CMD_VERSION failed (%d)\n",
+				result);
+		return ERROR_JTAG_DEVICE_ERROR;
+	}
 
-		if (result == len)
-		{
-			usb_in_buffer[result] = 0;
-			LOG_INFO("%s", (char *)usb_in_buffer);
-			return ERROR_OK;
-		}
+	len = buf_get_u32(usb_in_buffer, 0, 16);
+	result = jlink_usb_read(jlink_jtag_handle, len);
+	if (result != len)
+	{
+		LOG_ERROR("J-Link command EMU_CMD_VERSION failed (%d)\n",
+				result);
+		return ERROR_JTAG_DEVICE_ERROR;
 	}
 
-	LOG_ERROR("J-Link command EMU_CMD_VERSION failed (%d)\n", result);
-	return ERROR_JTAG_DEVICE_ERROR;
+	usb_in_buffer[result] = 0;
+	LOG_INFO("%s", (char *)usb_in_buffer);
+
+	return ERROR_OK;
 }
 
 static int jlink_handle_jlink_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to