Superiotool: Add support for the SMSC FDC37N769.

Here's what a register dump looks like on my test system:

No Super I/O chip found at 0x002e
No Super I/O chip found at 0x004e
No Super I/O chip found at 0x002e
No Super I/O chip found at 0x004e
No Super I/O chip found at 0x002e
No Super I/O chip found at 0x004e
Super I/O found at 0x03f0: id=0x28, rev=0x01
SMSC FDC37N769
idx 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
val 20 90 80 f4 00 00 ff 00 00 00 40 00 0e 28 01 00 00 00 00 00 02 00 01 03 00 00 00 00 00 00 80 00 00 00 00 00 00 ba 00 00 03 00 00 23 03 03 00 00 
def 28 9c 88 70 00 00 ff 00 00 00 00 00 02 28 NA 00 00 80 RR RR NA NA NA 03 RR RR RR RR RR RR 80 00 3c RR RR 00 00 00 00 00 00 00 RR 00 00 03 00 00 
Probing 0x0370, failed (0xff), data returns 0xff

I'm self-acking this as it's pretty simple stuff, but please let me
know if anything could be improved here, or if you think this
is not trivial enough to warrant self-acking.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2781 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
diff --git a/util/superiotool/superiotool.c b/util/superiotool/superiotool.c
index ad3cd45..a5dcb2e 100644
--- a/util/superiotool/superiotool.c
+++ b/util/superiotool/superiotool.c
@@ -83,8 +83,10 @@
 			for (k = 0;; k++) {
 				if (idx[k] == EOT)
 					break;
-				if (idx[k] == NANA)
+				else if (idx[k] == NANA)
 					printf("NA ");
+				else if (idx[k] == RSVD)
+					printf("RR ");
 				else
 					printf("%02x ", idx[k]);
 			}
@@ -93,13 +95,6 @@
 	}
 }
 
-void probe_superio(unsigned short port)
-{
-	probe_idregs_simple(port);
-	probe_idregs_fintek(port);
-	probe_idregs_ite(port);
-}
-
 int main(int argc, char *argv[])
 {
 	if (iopl(3) < 0) {
@@ -107,8 +102,17 @@
 		exit(1);
 	}
 
-	probe_superio(0x2e);	/* Try 0x2e. */
-	probe_superio(0x4e);	/* Try 0x4e. */
+	probe_idregs_simple(0x2e);
+	probe_idregs_simple(0x4e);
+
+	probe_idregs_fintek(0x2e);
+	probe_idregs_fintek(0x4e);
+
+	probe_idregs_ite(0x2e);
+	probe_idregs_ite(0x4e);
+
+	probe_idregs_smsc(0x3f0);
+	probe_idregs_smsc(0x370);
 
 	return 0;
 }