Author: uwe Date: 2007-09-21 01:57:44 +0200 (Fri, 21 Sep 2007) New Revision: 2795
Modified: trunk/util/superiotool/README trunk/util/superiotool/fintek.c trunk/util/superiotool/ite.c trunk/util/superiotool/nsc.c trunk/util/superiotool/smsc.c trunk/util/superiotool/superiotool.c trunk/util/superiotool/superiotool.h trunk/util/superiotool/winbond.c Log: Add -D / --dump-readable option which prints the Super I/O register contents in human-readable form (e.g. "COM1 enabled" etc.) instead of the hex-table format from -d / --dump.
Signed-off-by: Uwe Hermann uwe@hermann-uwe.de Acked-by: Uwe Hermann uwe@hermann-uwe.de
Modified: trunk/util/superiotool/README =================================================================== --- trunk/util/superiotool/README 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/README 2007-09-20 23:57:44 UTC (rev 2795) @@ -28,12 +28,13 @@ Usage -----
- $ superiotool [-d] [-V] [-v] [-h] + $ superiotool [-d] [-D] [-V] [-v] [-h]
- -d | --dump Dump Super I/O registers - -V | --verbose Verbose mode - -v | --version Show the superiotool version - -h | --help Show a short help text + -d | --dump Dump Super I/O registers + -D | --dump-readable Dump Super I/O registers in human-readable format + -V | --verbose Verbose mode + -v | --version Show the superiotool version + -h | --help Show a short help text
Per default (no options) superiotool will just probe for a Super I/O and print its vendor, name, ID, version, and config port. @@ -44,11 +45,15 @@
$ superiotool
- - Detailed register dump of the Super I/O (if detected): + - Register dump as table of hex-values of the Super I/O (if detected):
$ superiotool -d
+ - Detailed register dump in human-readable format:
+ $ superiotool -D + + Supported Super I/O Chips -------------------------
Modified: trunk/util/superiotool/fintek.c =================================================================== --- trunk/util/superiotool/fintek.c 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/fintek.c 2007-09-20 23:57:44 UTC (rev 2795) @@ -33,8 +33,11 @@ {EOT} };
-void dump_fintek(uint16_t port, uint16_t did) +static void dump_readable_fintek(uint16_t port, uint16_t did) { + if (!dump_readable) + return; + switch (did) { case 0x0604: printf("Fintek F71805\n"); @@ -124,10 +127,8 @@ get_superio_name(reg_table, did), vid, did, port);
dump_superio("Fintek", reg_table, port, did); + dump_readable_fintek(port, did);
- /* TODO: Revive this as --dump-human-readable output. */ - /* dump_fintek(port, did); */ - exit_conf_mode_winbond_fintek_ite_8787(port); }
Modified: trunk/util/superiotool/ite.c =================================================================== --- trunk/util/superiotool/ite.c 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/ite.c 2007-09-20 23:57:44 UTC (rev 2795) @@ -194,12 +194,6 @@ {EOT} };
-/* TODO: Drop this function later. */ -void dump_ite(uint16_t port, uint16_t id) -{ - dump_superio("ITE", reg_table, port, id); -} - /** * Enable configuration sequence (ITE uses this for newer IT87[012]xF). * @@ -244,6 +238,7 @@ get_superio_name(reg_table, id), id, chipver, port);
dump_superio("ITE", reg_table, port, id); + dump_superio_readable(port); /* TODO */ }
void probe_idregs_ite(uint16_t port)
Modified: trunk/util/superiotool/nsc.c =================================================================== --- trunk/util/superiotool/nsc.c 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/nsc.c 2007-09-20 23:57:44 UTC (rev 2795) @@ -25,8 +25,11 @@ [0xf1] = "PC8374 (Winbond/NatSemi)" };
-void dump_ns8374(uint16_t port) +static void dump_readable_ns8374(uint16_t port) { + if (!dump_readable) + return; + printf("Enables: 21=%02x, 22=%02x, 23=%02x, 24=%02x, 26=%02x\n", regval(port, 0x21), regval(port, 0x22), regval(port, 0x23), regval(port, 0x24), regval(port, 0x26)); @@ -79,7 +82,7 @@
switch (id) { case 0xf1: - dump_ns8374(port); + dump_readable_ns8374(port); break; default: printf("No dump for 0x%02x\n", id);
Modified: trunk/util/superiotool/smsc.c =================================================================== --- trunk/util/superiotool/smsc.c 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/smsc.c 2007-09-20 23:57:44 UTC (rev 2795) @@ -69,6 +69,7 @@ get_superio_name(reg_table, id), id, rev, port);
dump_superio("SMSC", reg_table, port, id); + dump_superio_readable(port); /* TODO */
exit_conf_mode_smsc(port); }
Modified: trunk/util/superiotool/superiotool.c =================================================================== --- trunk/util/superiotool/superiotool.c 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/superiotool.c 2007-09-20 23:57:44 UTC (rev 2795) @@ -23,7 +23,7 @@ #include "superiotool.h"
/* Command line options. */ -int dump = 0, verbose = 0; +int dump = 0, dump_readable = 0, verbose = 0;
uint8_t regval(uint16_t port, uint8_t reg) { @@ -147,6 +147,13 @@ } }
+void dump_superio_readable(uint16_t port) +{ + /* TODO */ + if (dump_readable) + printf("No human-readable dump available for this Super I/O\n"); +} + void no_superio_found(uint16_t port) { if (!verbose) @@ -164,19 +171,23 @@ int i, j, opt, option_index;
const static struct option long_options[] = { - {"dump", no_argument, NULL, 'd'}, - {"verbose", no_argument, NULL, 'V'}, - {"version", no_argument, NULL, 'v'}, - {"help", no_argument, NULL, 'h'}, + {"dump", no_argument, NULL, 'd'}, + {"dump-readable", no_argument, NULL, 'D'}, + {"verbose", no_argument, NULL, 'V'}, + {"version", no_argument, NULL, 'v'}, + {"help", no_argument, NULL, 'h'}, {0, 0, 0, 0} };
- while ((opt = getopt_long(argc, argv, "dVvh", + while ((opt = getopt_long(argc, argv, "dDVvh", long_options, &option_index)) != EOF) { switch (opt) { case 'd': dump = 1; break; + case 'D': + dump_readable = 1; + break; case 'V': verbose = 1; break;
Modified: trunk/util/superiotool/superiotool.h =================================================================== --- trunk/util/superiotool/superiotool.h 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/superiotool.h 2007-09-20 23:57:44 UTC (rev 2795) @@ -31,11 +31,12 @@
#define SUPERIOTOOL_VERSION "0.1"
-#define USAGE "Usage: superiotool [-d] [-V] [-v] [-h]\n\n\ - -d | --dump Dump Super I/O registers\n\ - -V | --verbose Verbose mode\n\ - -v | --version Show the superiotool version\n\ - -h | --help Show a short help text\n\n\ +#define USAGE "Usage: superiotool [-d] [-D] [-V] [-v] [-h]\n\n\ + -d | --dump Dump Super I/O registers\n\ + -D | --dump-readable Dump Super I/O registers in human-readable format\n\ + -V | --verbose Verbose mode\n\ + -v | --version Show the superiotool version\n\ + -h | --help Show a short help text\n\n\ Per default (no options) superiotool will just probe for a Super I/O\n\ and print its vendor, name, ID, version, and config port.\n"
@@ -54,14 +55,14 @@ #define MAXNUMPORTS (2 + 1) /* Maximum number of Super I/O ports */
/* Command line parameters. */ -extern int dump, verbose; +extern int dump, dump_readable, verbose;
struct superio_registers { - int32_t superio_id; /* Signed, as we need EOT. */ - const char name[MAXNAMELEN]; + int32_t superio_id; /* Signed, as we need EOT. */ + const char name[MAXNAMELEN]; /* Super I/O name */ struct { int ldn; - const char *name; + const char *name; /* LDN name */ int idx[IDXSIZE]; int def[IDXSIZE]; } ldn[LDNSIZE]; @@ -77,18 +78,16 @@ uint16_t id); void dump_superio(const char *name, const struct superio_registers reg_table[], uint16_t port, uint16_t id); +void dump_superio_readable(uint16_t port); void no_superio_found(uint16_t port);
/* fintek.c */ -void dump_fintek(uint16_t port, uint16_t did); void probe_idregs_fintek(uint16_t port);
/* ite.c */ -void dump_ite(uint16_t port, uint16_t id); void probe_idregs_ite(uint16_t port);
/* nsc.c */ -void dump_ns8374(uint16_t port); void probe_idregs_simple(uint16_t port);
/* smsc.c */
Modified: trunk/util/superiotool/winbond.c =================================================================== --- trunk/util/superiotool/winbond.c 2007-09-20 23:37:56 UTC (rev 2794) +++ trunk/util/superiotool/winbond.c 2007-09-20 23:57:44 UTC (rev 2795) @@ -150,6 +150,7 @@
/* TODO: Special notes in dump output for the MISC entries. */ dump_superio("Winbond", reg_table, port, id); + dump_superio_readable(port); /* TODO */
exit_conf_mode_winbond_fintek_ite_8787(port); }