Hi,

I've extended the ite.c part to include dumping the environmental
controller register contents too. It's amazingly easy to add such
things. Only IT8716f (that's the only datasheet I have at the moment).


Signed-off-by: Ronald Hoogenboom <[EMAIL PROTECTED]>


Index: superiotool/ite.c
===================================================================
--- superiotool/ite.c	(revision 3113)
+++ superiotool/ite.c	(working copy)
@@ -324,6 +324,32 @@
 	{EOT}
 };
 
+static const struct superio_registers ec_table[] = {
+	{0x8716, "IT8716F", {
+		{NOLDN, NULL,
+			{0x00,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x10,0x11,0x12,0x13,
+			 0x14,0x15,0x16,0x17,0x1b,0x1c,0x1d,0x30,0x31,0x32,0x33,0x34,0x35,
+			 0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,
+			 0x43,0x44,0x45,0x48,0x50,0x51,0x52,0x53,0x54,0x56,0x57,0x59,0x5c,
+			 EOT},
+			{0x18,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,NANA,NANA,NANA,0x07,
+			 0x50,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
+			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
+			 NANA,NANA,NANA,RSVD,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x00,0x00,
+			 EOT}},
+		{NOLDN, NULL,
+			{0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,
+			 0x6c,0x6d,0x70,0x71,0x72,0x73,0x74,0x75,0x84,0x85,0x86,0x87,0x88,
+			 0x89,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x98,0x99,
+			 0x9a,0x9b,0x9c,0x9d,EOT},
+			{0x00,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,
+			 0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,NANA,NANA,NANA,NANA,0x00,
+			 0x00,0x02,0x00,0x99,0x99,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,
+			 0x7f,0x00,0x00,0x7f,EOT}},
+		{EOT}}},
+	{EOT}
+};
+
 /**
  * IT871[01]F and IT8708F use 0x87, 0x87
  * IT8761F uses 0x87, 0x61, 0x55, 0x55/0xaa
@@ -368,6 +394,17 @@
 	chip_found = 1;
 
 	dump_superio("ITE", reg_table, port, id);
+
+	if (dump_ec) {
+		uint16_t ecport;
+		regwrite(port, 0x07, 0x04); /*EC LDN*/
+		ecport = regval(port, 0x60) << 8;
+		ecport |= regval(port, 0x61);
+		ecport += 5;
+
+		printf("Environment Controller (0x%04x)\n",ecport);
+		dump_superio("ITE-EC", ec_table, ecport, id);
+	}
 }
 
 void probe_idregs_ite(uint16_t port)
Index: superiotool/superiotool.c
===================================================================
--- superiotool/superiotool.c	(revision 3113)
+++ superiotool/superiotool.c	(working copy)
@@ -24,7 +24,7 @@
 #include "superiotool.h"
 
 /* Command line options. */
-int dump = 0, verbose = 0;
+int dump = 0, verbose = 0, dump_ec = 0;
 
 /* Global flag which indicates whether a chip was detected at all. */
 int chip_found = 0;
@@ -208,6 +208,7 @@
 
 	static const struct option long_options[] = {
 		{"dump",		no_argument, NULL, 'd'},
+		{"dump ec too",	no_argument, NULL, 'e'},
 		{"list-supported",	no_argument, NULL, 'l'},
 		{"verbose",		no_argument, NULL, 'V'},
 		{"version",		no_argument, NULL, 'v'},
@@ -215,12 +216,15 @@
 		{0, 0, 0, 0}
 	};
 
-	while ((opt = getopt_long(argc, argv, "dlVvh",
+	while ((opt = getopt_long(argc, argv, "delVvh",
 				  long_options, &option_index)) != EOF) {
 		switch (opt) {
 		case 'd':
 			dump = 1;
 			break;
+		case 'e':
+			dump_ec = 1;
+			break;
 		case 'l':
 			print_list_of_supported_chips();
 			exit(0);
Index: superiotool/superiotool.h
===================================================================
--- superiotool/superiotool.h	(revision 3113)
+++ superiotool/superiotool.h	(working copy)
@@ -56,7 +56,7 @@
 #define MAXNUMPORTS	(6 + 1)		/* Maximum number of Super I/O ports */
 
 /* Command line parameters. */
-extern int dump, verbose;
+extern int dump, verbose, dump_ec;
 
 extern int chip_found;
 
-- 
coreboot mailing list
[email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to