[LinuxBIOS] r2791 - trunk/util/superiotool

svn at openbios.org svn at openbios.org
Thu Sep 20 02:00:49 CEST 2007


Author: uwe
Date: 2007-09-20 02:00:49 +0200 (Thu, 20 Sep 2007)
New Revision: 2791

Modified:
   trunk/util/superiotool/ite.c
   trunk/util/superiotool/smsc.c
   trunk/util/superiotool/superiotool.c
   trunk/util/superiotool/superiotool.h
   trunk/util/superiotool/winbond.c
Log:
Superiotool: Add dump support to the Winbond W83697HF/F.
Minor coding style changes and code simplifications.

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



Modified: trunk/util/superiotool/ite.c
===================================================================
--- trunk/util/superiotool/ite.c	2007-09-19 16:26:18 UTC (rev 2790)
+++ trunk/util/superiotool/ite.c	2007-09-20 00:00:49 UTC (rev 2791)
@@ -27,37 +27,38 @@
 	{0x8705, "IT8705 or IT8700", {
 		{EOT}}},
 	{0x8708, "IT8708", {
-		{NOLDN,
+		{NOLDN, NULL,
 			{0x07,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
 			 0x29,0x2a,0x2e,0x2f,EOT},
 			{NANA,0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff,
 			 0xff,0xff,0x00,0x00,EOT}},
-		{0x0,
+		{0x0, NULL,
 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
-		{0x1,
+		{0x1, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
-		{0x2,
+		{0x2, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
-		{0x3,
+		{0x3, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
 			 0xf0,EOT},
 			{0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
 			 0x03,EOT}},
-		{0x4,
+		{0x4, NULL,
 			{0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
 			 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT},
 			{NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
 			 0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}},
-		{0x5,	/* Note: 0x30 can actually be 0x00 _or_ 0x01. */
+		{0x5, NULL,
+			/* Note: 0x30 can actually be 0x00 _or_ 0x01. */
 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
-		{0x6,
+		{0x6, NULL,
 			{0x30,0x70,0x71,0xf0,EOT},
 			{0x00,0x0c,0x02,0x00,EOT}},
-		{0x7,
+		{0x7, NULL,
 			{0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,
 			 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,
 			 0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4,
@@ -70,46 +71,46 @@
 			 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
 			 0x00,EOT}},
-		{0x8,
+		{0x8, NULL,
 			{0x30,0x60,0x61,EOT},
 			{0x00,0x02,0x01,EOT}},
-		{0x9,
+		{0x9, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
-		{0xa,
+		{0xa, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
 		{EOT}}},
 	{0x8710, "IT8710", {
 		{EOT}}},
 	{0x8712, "IT8712", {
-		{NOLDN,
+		{NOLDN, NULL,
 			{0x07,0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
 			{NANA,0x87,0x12,0x08,0x00,0x00,0x00,EOT}},
-		{0x0,
+		{0x0, NULL,
 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
-		{0x1,
+		{0x1, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
-		{0x2,
+		{0x2, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
-		{0x3,
+		{0x3, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
-		{0x4,
+		{0x4, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
 			 0xf4,0xf5,0xf6,EOT},
 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
 			 0x00,NANA,NANA,EOT}},
-		{0x5,
+		{0x5, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
-		{0x6,
+		{0x6, NULL,
 			{0x30,0x70,0x71,0xf0,EOT},
 			{0x00,0x0c,0x02,0x00,EOT}},
-		{0x7,
+		{0x7, NULL,
 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
@@ -122,44 +123,44 @@
 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
-		{0x8,
+		{0x8, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
-		{0x9,
+		{0x9, NULL,
 			{0x30,0x60,0x61,EOT},
 			{0x00,0x02,0x01,EOT}},
-		{0xa,
+		{0xa, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
 		{EOT}}},
 	{0x8716, "IT8716", {
-		{NOLDN,
+		{NOLDN, NULL,
 			{0x07,0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
 			{NANA,0x87,0x16,0x01,0x00,0x00,0x00,EOT}},
-		{0x0,
+		{0x0, NULL,
 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
-		{0x1,
+		{0x1, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
-		{0x2,
+		{0x2, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
-		{0x3,
+		{0x3, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
-		{0x4,
+		{0x4, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
 			 0xf4,0xf5,0xf6,EOT},
 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
 			 0x00,NANA,NANA,EOT}},
-		{0x5,
+		{0x5, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
-		{0x6,
+		{0x6, NULL,
 			{0x30,0x70,0x71,0xf0,EOT},
 			{0x00,0x0c,0x02,0x00,EOT}},
-		{0x7,
+		{0x7, NULL,
 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
@@ -172,13 +173,13 @@
 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
-		{0x8,
+		{0x8, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
-		{0x9,
+		{0x9, NULL,
 			{0x30,0x60,0x61,EOT},
 			{0x00,0x02,0x01,EOT}},
-		{0xa,
+		{0xa, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
 		{EOT}}},

Modified: trunk/util/superiotool/smsc.c
===================================================================
--- trunk/util/superiotool/smsc.c	2007-09-19 16:26:18 UTC (rev 2790)
+++ trunk/util/superiotool/smsc.c	2007-09-20 00:00:49 UTC (rev 2791)
@@ -25,7 +25,7 @@
 
 const static struct superio_registers reg_table[] = {
 	{0x28, "FDC37N769", {
-		{NOLDN,
+		{NOLDN, NULL,
 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,

Modified: trunk/util/superiotool/superiotool.c
===================================================================
--- trunk/util/superiotool/superiotool.c	2007-09-19 16:26:18 UTC (rev 2790)
+++ trunk/util/superiotool/superiotool.c	2007-09-20 00:00:49 UTC (rev 2791)
@@ -60,11 +60,58 @@
 	return "<unknown>";
 }
 
-void dump_superio(const char *vendor, const struct superio_registers reg_table[],
+static void dump_regs(const struct superio_registers reg_table[],
+		      int i, int j, uint16_t port)
+{
+	int k, *idx;
+
+	if (reg_table[i].ldn[j].ldn != NOLDN) {
+		printf("LDN 0x%02x ", reg_table[i].ldn[j].ldn);
+		if (reg_table[i].ldn[j].name != NULL)
+			printf("(%s)", reg_table[i].ldn[j].name);
+		regwrite(port, 0x07, reg_table[i].ldn[j].ldn);
+	} else {
+		printf("Register dump:");
+	}
+
+	idx = reg_table[i].ldn[j].idx;
+
+	printf("\nidx ");
+	for (k = 0; /* Nothing */; k++) {
+		if (idx[k] == EOT)
+			break;
+		printf("%02x ", idx[k]);
+	}
+
+	printf("\nval ");
+	for (k = 0; /* Nothing */; k++) {
+		if (idx[k] == EOT)
+			break;
+		printf("%02x ", regval(port, idx[k]));
+	}
+
+	printf("\ndef ");
+	idx = reg_table[i].ldn[j].def;
+	for (k = 0; /* Nothing */; k++) {
+		if (idx[k] == EOT)
+			break;
+		else if (idx[k] == NANA)
+			printf("NA ");
+		else if (idx[k] == RSVD)
+			printf("RR ");
+		else if (idx[k] == MISC)	/* TODO */
+			printf("MM ");
+		else
+			printf("%02x ", idx[k]);
+	}
+	printf("\n");
+}
+
+void dump_superio(const char *vendor,
+		  const struct superio_registers reg_table[],
 		  uint16_t port, uint16_t id)
 {
-	int i, j, k, nodump;
-	int *idx;
+	int i, j, no_dump_available = 1;
 
 	if (!dump)
 		return;
@@ -76,66 +123,28 @@
 		if ((uint16_t)reg_table[i].superio_id != id)
 			continue;
 
-		nodump = 1;
-
 		for (j = 0; /* Nothing */; j++) {
 			if (reg_table[i].ldn[j].ldn == EOT)
 				break;
-
-			nodump = 0;
-
-			if (reg_table[i].ldn[j].ldn != NOLDN) {
-				printf("Switching to LDN 0x%02x\n",
-				       reg_table[i].ldn[j].ldn);
-				regwrite(port, 0x07, reg_table[i].ldn[j].ldn);
-			}
-
-			idx = reg_table[i].ldn[j].idx;
-
-			printf("idx ");
-			for (k = 0; /* Nothing */; k++) {
-				if (idx[k] == EOT)
-					break;
-				printf("%02x ", idx[k]);
-			}
-
-			printf("\nval ");
-			for (k = 0; /* Nothing */; k++) {
-				if (idx[k] == EOT)
-					break;
-				printf("%02x ", regval(port, idx[k]));
-			}
-
-			printf("\ndef ");
-			idx = reg_table[i].ldn[j].def;
-			for (k = 0; /* Nothing */; k++) {
-				if (idx[k] == EOT)
-					break;
-				else if (idx[k] == NANA)
-					printf("NA ");
-				else if (idx[k] == RSVD)
-					printf("RR ");
-				else if (idx[k] == MISC)	/* TODO */
-					printf("MM ");
-				else
-					printf("%02x ", idx[k]);
-			}
-			printf("\n");
+			no_dump_available = 0;
+			dump_regs(reg_table, i, j, port);
 		}
 
-		if (nodump)
-			printf("No dump for %s %s\n", vendor, reg_table[i].name);
+		if (no_dump_available)
+			printf("No dump available for this Super I/O\n");
 	}
 }
 
-void no_superio_found(uint16_t port) {
+void no_superio_found(uint16_t port)
+{
 	if (!verbose)
 		return;
 
 	if (inb(port) == 0xff)
 		printf("No Super I/O chip found at 0x%04x\n", port);
 	else
-		printf("Probing 0x%04x, failed (0x%02x), data returns 0x%02x\n", port, inb(port), inb(port + 1));
+		printf("Probing 0x%04x, failed (0x%02x), data returns 0x%02x\n",
+		       port, inb(port), inb(port + 1));
 }
 
 int main(int argc, char *argv[])

Modified: trunk/util/superiotool/superiotool.h
===================================================================
--- trunk/util/superiotool/superiotool.h	2007-09-19 16:26:18 UTC (rev 2790)
+++ trunk/util/superiotool/superiotool.h	2007-09-20 00:00:49 UTC (rev 2791)
@@ -61,6 +61,7 @@
 	const char name[MAXNAMELEN];
 	struct {
 		int ldn;
+		const char *name;
 		int idx[IDXSIZE];
 		int def[IDXSIZE];
 	} ldn[LDNSIZE];

Modified: trunk/util/superiotool/winbond.c
===================================================================
--- trunk/util/superiotool/winbond.c	2007-09-19 16:26:18 UTC (rev 2790)
+++ trunk/util/superiotool/winbond.c	2007-09-20 00:00:49 UTC (rev 2791)
@@ -30,57 +30,97 @@
  */
 const static struct superio_registers reg_table[] = {
 	{0x601, "W83697HF/F", {
-		/*
-		{NOLDN,
-			{0x20,0x21,EOT},
-			{0x60,NANA,EOT}},
-		*/
+		{NOLDN, NULL,
+			/* TODO: 0x02, 0x07. */
+			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,
+			 0x2a,EOT},
+			{0x60,NANA,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+			 MISC,EOT}},
+		/* Some register defaults depend on the value of PNPCSV. */
+		{0x0, "Floppy",
+			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,
+			 0xf5,EOT},
+			{0x01,0x03,0xf0,0x06,0x02,0x0e,0x00,0xff,0x00,
+			 0x00,EOT}},
+		{0x1, "Parallel port",
+			{0x30,0x60,0x61,0x70,0x74,0xf0,EOT},
+			{0x01,0x03,0x78,0x07,0x04,0x3f,EOT}},
+		{0x2, "COM1",
+			{0x30,0x60,0x61,0x70,0xf0,EOT},
+			{0x01,0x03,0xf8,0x04,0x00,EOT}},
+		{0x3, "COM2",
+			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
+			{0x01,0x02,0xf8,0x03,0x00,0x00,EOT}},
+		{0x6, "CIR",
+			{0x30,0x60,0x61,0x70,EOT},
+			{0x00,0x00,0x00,0x00,EOT}},
+		{0x7, "Game port, GPIO port 1",
+			{0x30,0x60,0x61,0x62,0x63,0xf0,0xf1,0xf2,EOT},
+			{0x00,0x02,0x01,0x00,0x00,0xff,0x00,0x00,EOT}},
+		{0x8, "MIDI port, GPIO port 5",
+			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
+			 0xf4,0xf5,EOT},
+			{0x00,0x03,0x30,0x00,0x00,0x09,0xff,0x00,0x00,0x00,
+			 0x00,0x00,EOT}},
+		{0x9, "GPIO port 2, 3, and 4",
+			{0x30,0x60,0x61,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,
+			 0xf7,0xf8,0xf5,EOT},
+			{0x00,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,
+			 0x00,0x00,0x00,EOT}},
+		{0xa, "ACPI",
+			{0x30,0x70,0xe0,0xe1,0xe2,0xe5,0xe6,0xe7,
+			 0xf0,0xf1,0xf3,0xf4,0xf6,0xf7,0xf9,EOT},
+			{0x00,0x00,0x00,0x00,NANA,0x00,0x00,0x00,
+			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
+		{0xb, "Hardware monitor",
+			{0x30,0x60,0x61,0x70,EOT},
+			{0x00,0x00,0x00,0x00,EOT}},
 		{EOT}}},
 	{0x886, "W83627EHF/EF/EHG/EG", {
-		{NOLDN,
+		{NOLDN, NULL,
 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
 			 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
 			{0x88,NANA,0xff,0x00,MISC,0x00,MISC,RSVD,0x50,
 			 0x04,0x00,RSVD,0x00,0x21,0x00,0x00,EOT}},
-		{0x0,
+		{0x0, NULL,
 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,
 			 0xf5,EOT},
 			{0x01,0x03,0xf0,0x06,0x02,0x8e,0x00,0xff,0x00,
 			 0x00,EOT}},
-		{0x1,
+		{0x1, NULL,
 			{0x30,0x60,0x61,0x70,0x74,0xf0,EOT},
 			{0x01,0x03,0x78,0x07,0x04,0x3f,EOT}},
-		{0x2,
+		{0x2, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,EOT},
 			{0x01,0x03,0xf8,0x04,0x00,EOT}},
-		{0x3,
+		{0x3, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
 			{0x01,0x02,0xf8,0x03,0x00,0x00,EOT}},
-		{0x5,
+		{0x5, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0x72,0xf0,EOT},
 			{0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x83,EOT}},
-		{0x6,
+		{0x6, NULL,
 			{0x30,0x62,0x63,EOT},
 			{0x00,0x00,0x00,EOT}},
-		{0x7,
+		{0x7, NULL,
 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
 			 0xf4,0xf5,0xf6,0xf7,EOT},
 			{0x00,0x02,0x01,0x03,0x30,0x09,0xff,0x00,0x00,0x00,
 			 0xff,0x00,0x00,0x00,EOT}},
-		{0x8,
+		{0x8, NULL,
 			{0x30,0xf5,0xf6,0xf7,EOT},
 			{0x00,0x00,0x00,0x00,EOT}},
-		{0x9,
+		{0x9, NULL,
 			{0x30,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xf0,0xf1,0xf2,
 			 0xf3,0xf4,0xf5,0xf6,0xf7,EOT},
 			{0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,
 			 0x00,0xff,0x00,0x00,0x00,EOT}},
-		{0xa,
+		{0xa, NULL,
 			{0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
 			 0xe8,0xf2,0xf3,0xf4,0xf6,0xf7,EOT},
 			{0x00,0x00,0x01,0x00,0xff,0x08,0x00,RSVD,0x00,0x00,
 			 RSVD,0x7c,0x00,0x00,0x00,0x00,EOT}},
-		{0xb,
+		{0xb, NULL,
 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
 			{0x00,0x00,0x00,0x00,0xc1,0x00,EOT}},
 		{EOT}}},





More information about the coreboot mailing list