[WATCHDOG] w83697hf/hg WDT driver - autodetect patch

Change the autodetect code so that it is more generic.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>

diff --git a/drivers/char/watchdog/w83697hf_wdt.c b/drivers/char/watchdog/w83697hf_wdt.c
index 21052de..7768b55 100644
--- a/drivers/char/watchdog/w83697hf_wdt.c
+++ b/drivers/char/watchdog/w83697hf_wdt.c
@@ -369,33 +369,35 @@
 	return -EIO;
 }
 
+static int w83697hf_ioports[] = { 0x2e, 0x4e, 0x00 };
+
 static int __init
 wdt_init(void)
 {
-	int ret, autodetect;
+	int ret, i, found = 0;
 
 	spin_lock_init(&io_lock);
 
 	printk (KERN_INFO PFX "WDT driver for W83697HF/HG initializing\n");
 
-	autodetect = wdt_io == 0;
-	if (autodetect)
-		wdt_io = 0x2e;
-
-	if (!w83697hf_check_wdt())
-		goto found;
-
-	if (autodetect) {
-		wdt_io = 0x4e;
+	if (wdt_io == 0) {
+		/* we will autodetect the W83697HF/HG watchdog */
+		for (i = 0; ((!found) && (w83697hf_ioports[i] != 0)); i++) {
+			wdt_io = w83697hf_ioports[i];
+			if (!w83697hf_check_wdt())
+				found++;
+		}
+	} else {
 		if (!w83697hf_check_wdt())
-			goto found;
+			found++;
 	}
 
-	printk (KERN_ERR PFX "No W83697HF/HG could be found\n");
-	ret = -EIO;
-	goto out;
+	if (!found) {
+		printk (KERN_ERR PFX "No W83697HF/HG could be found\n");
+		ret = -EIO;
+		goto out;
+	}
 
-found:
 	w83697hf_init();
 	wdt_disable();	/* Disable watchdog until first use */