Hi all,

The attached patch fixes an unused variable warning in the gw16012 jtag
interface driver.  I started with a quick one line fix, but I got
annoyed with the way the preprocessor conditionals ended up looking.

As such, I refactored the gw16012_init routine into a cleaner set of
functions that are not sliced internally with conditionals (as badly).

Cheers,

Zach
Index: src/jtag/gw16012.c
===================================================================
--- src/jtag/gw16012.c	(revision 1548)
+++ src/jtag/gw16012.c	(working copy)
@@ -461,32 +461,65 @@
 }
 #endif
 
-static int gw16012_init(void)
+#if PARPORT_USE_PPDEV == 1
+
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+
+#define GW16012_PPDEV_NAME	"ppi"
+
+static int gw16012_init_ioctls(void)
 {
-#if PARPORT_USE_PPDEV == 1
+	int temp = 0;
+	temp = ioctl(device_handle, PPCLAIM);
+	if (temp < 0)
+	{
+		LOG_ERROR("cannot claim device");
+		return ERROR_JTAG_INIT_FAILED;
+	}
+
+	temp = PARPORT_MODE_COMPAT;
+	temp = ioctl(device_handle, PPSETMODE, &temp);
+	if (temp < 0)
+	{
+		LOG_ERROR(" cannot set compatible mode to device");
+		return ERROR_JTAG_INIT_FAILED;
+	}
+
+	temp = IEEE1284_MODE_COMPAT;
+	temp = ioctl(device_handle, PPNEGOT, &temp);
+	if (temp < 0)
+	{
+		LOG_ERROR("cannot set compatible 1284 mode to device");
+		return ERROR_JTAG_INIT_FAILED;
+	}
+	return ERROR_OK;
+}
+#else
+
+#define GW16012_PPDEV_NAME	"parport"
+
+static int gw16012_init_ioctls(void)
+{
+	return ERROR_OK;
+}
+
+#endif // defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+
+static int gw16012_init_device(void)
+{
+	const char *device_name = GW16012_PPDEV_NAME;
 	char buffer[256];
-	int i = 0;
-#endif
-	u8 status_port;
 
-#if PARPORT_USE_PPDEV == 1
-	if (device_handle>0)
+	if (device_handle > 0)
 	{
 		LOG_ERROR("device is already opened");
 		return ERROR_JTAG_INIT_FAILED;
 	}
 
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-	LOG_DEBUG("opening /dev/ppi%d...", gw16012_port);
+	snprintf(buffer, 256, "/dev/%s%d", device_name, gw16012_port);
+	LOG_DEBUG("opening %s...", buffer);
 
-	snprintf(buffer, 256, "/dev/ppi%d", gw16012_port);
 	device_handle = open(buffer, O_WRONLY);
-#else
-	LOG_DEBUG("opening /dev/parport%d...", gw16012_port);
-
-	snprintf(buffer, 256, "/dev/parport%d", gw16012_port);
-	device_handle = open(buffer, O_WRONLY);
-#endif
 	if (device_handle<0)
 	{
 		LOG_ERROR("cannot open device. check it exists and that user read and write rights are set");
@@ -495,31 +528,16 @@
 
 	LOG_DEBUG("...open");
 
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-	i=ioctl(device_handle, PPCLAIM);
-	if (i<0)
-	{
-		LOG_ERROR("cannot claim device");
+	if (gw16012_init_ioctls() != ERROR_OK)
 		return ERROR_JTAG_INIT_FAILED;
-	}
 
-	i = PARPORT_MODE_COMPAT;
-	i= ioctl(device_handle, PPSETMODE, & i);
-	if (i<0)
-	{
-		LOG_ERROR(" cannot set compatible mode to device");
-		return ERROR_JTAG_INIT_FAILED;
-	}
+	return ERROR_OK;
+}
 
-	i = IEEE1284_MODE_COMPAT;
-	i = ioctl(device_handle, PPNEGOT, & i);
-	if (i<0)
-	{
-		LOG_ERROR("cannot set compatible 1284 mode to device");
-		return ERROR_JTAG_INIT_FAILED;
-	}
-#endif
-#else
+#else // PARPORT_USE_PPDEV
+
+static int gw16012_init_device(void)
+{
 	if (gw16012_port == 0)
 	{
 		gw16012_port = 0x378;
@@ -544,8 +562,18 @@
 #else
 	outb(0x0, gw16012_port + 2);
 #endif
-#endif /* PARPORT_USE_PPDEV */
+	return ERROR_OK;
+}
 
+#endif // PARPORT_USE_PPDEV
+
+static int gw16012_init(void)
+{
+	u8 status_port;
+
+	if (gw16012_init_device() != ERROR_OK)
+		return ERROR_JTAG_INIT_FAILED;
+
 	gw16012_input(&status_port);
 	gw16012_msb = (status_port & 0x80) ^ 0x80;
 
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to