[coreboot] Patch set updated for coreboot: 7eedcba superiotool: Add support for function to dump superio chip data registers

Guenter Roeck (linux@roeck-us.net) gerrit at coreboot.org
Fri Jul 6 03:00:05 CEST 2012


Guenter Roeck (linux at roeck-us.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1149

-gerrit

commit 7eedcba9fb8b1bd1100dca290b4d3a8544ae14d5
Author: Guenter Roeck <linux at roeck-us.net>
Date:   Fri Jun 29 12:23:50 2012 -0700

    superiotool: Add support for function to dump superio chip data registers
    
    Add new function dump_data() to dump a bank of superio data registers.
    
    Change-Id: I13a58d87c14d319cfcdea1ec1d54c2b110d90f9f
    Signed-off-by: Guenter Roeck <linux at roeck-us.net>
---
 util/superiotool/superiotool.c |   29 +++++++++++++++++++++++++++++
 util/superiotool/superiotool.h |    1 +
 2 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/util/superiotool/superiotool.c b/util/superiotool/superiotool.c
index 293aaa6..538aa09 100644
--- a/util/superiotool/superiotool.c
+++ b/util/superiotool/superiotool.c
@@ -34,6 +34,18 @@ int dump = 0, verbose = 0, extra_dump = 0;
 /* Global flag which indicates whether a chip was detected at all. */
 int chip_found = 0;
 
+static void set_bank(uint16_t port, uint8_t bank)
+{
+	OUTB(0x4E, port);
+	OUTB(bank, port + 1);
+}
+
+static uint8_t datareg(uint16_t port, uint8_t reg)
+{
+	OUTB(reg, port);
+	return INB(port + 1);
+}
+
 uint8_t regval(uint16_t port, uint8_t reg)
 {
 	OUTB(reg, port);
@@ -186,6 +198,23 @@ void dump_io(uint16_t iobase, uint16_t length)
 	printf("\n");
 }
 
+void dump_data(uint16_t iobase, int bank)
+{
+	uint16_t i;
+
+	printf("Bank %d:\n", bank);
+	printf("    ");
+	for (i = 0; i < 16; i++)
+		printf("%02x ", i);
+	set_bank(iobase, bank);
+	for (i = 0; i < 256; i++) {
+		if (i % 16 == 0)
+			printf("\n%02x: ", i / 16);
+		printf("%02x ", datareg(iobase, i));
+	}
+	printf("\n");
+}
+
 void probing_for(const char *vendor, const char *info, uint16_t port)
 {
 	if (!verbose)
diff --git a/util/superiotool/superiotool.h b/util/superiotool/superiotool.h
index 94918b8..7a0b7f6 100644
--- a/util/superiotool/superiotool.h
+++ b/util/superiotool/superiotool.h
@@ -174,6 +174,7 @@ const char *get_superio_name(const struct superio_registers reg_table[],
 void dump_superio(const char *name, const struct superio_registers reg_table[],
 		  uint16_t port, uint16_t id, uint8_t ldn_sel);
 void dump_io(uint16_t iobase, uint16_t length);
+void dump_data(uint16_t iobase, int bank);
 void probing_for(const char *vendor, const char *info, uint16_t port);
 void print_vendor_chips(const char *vendor,
 			const struct superio_registers reg_table[]);




More information about the coreboot mailing list