.TH SUPERIOTOOL 8 "October 11, 2007"
.SH NAME
superiotool \- Super I/O detection tool
.SH SYNOPSIS
.B superiotool \fR[\fB\-dVvh\fR] 
.SH DESCRIPTION
.B superiotool
is a GPL'd user-space utility which can
.PP
 * detect which Super I/O chip is soldered onto your mainboard,
.PP
 * at which configuration port it's located (usually 0x2e or 0x4e), and
.PP
 * dump all register contents of the Super I/O chip, together with the
   default values as per datasheet (to make comparing the values easy).
.PP
It is mainly used for LinuxBIOS development purposes (see linuxbios.org
for details on LinuxBIOS), but it may also be useful for other things.
.PP
The list of supported Super I/O chips is available at:
.br
.B http://linuxbios.org/Superiotool#Supported_devices
.SH OPTIONS
If no command line option is specified,
.B superiotool
merely tries to detect the Super I/O chip.
You must use either the
.BR "\-d" " or the " "\-D"
option to dump the Super I/O register contents.
.TP
.B "\-d, \-\-dump"
Dump Super I/O registers (if the Super I/O chip is detected and
.B superiotool
supports the
.B "\-\-dump"
option for this chip). The output will look something like this:
.sp
.B "$ ./superiotool -d"
.br
Found SMSC FDC37N769 (id=0x28, rev=0x01) at 0x3f0
.br
Register dump:
.br
idx 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11...
.br
val 20 90 80 f4 00 00 ff 00 00 00 40 00 0e 28 01 00 00 00...
.br
def 28 9c 88 70 00 00 ff 00 00 00 00 00 02 28 NA 00 00 80...
.sp
The
.B idx
fields contain the register numbers/indexes of the Super I/O, the
.B val
fields contain the contents of the respective register as read from the
Super I/O, and the
.B def
fields contain the default values for the respective register, as specified
in the datasheet.
.sp
The numbers in the output are all in hex format, and some special values
may also occur:
.BR NA " stands for"
.I "not available"
(i.e., the datasheet doesn't specify a default value for the respective
register),
.BR RR " means"
.I reserved
(the datasheet explicitly marks this register as reserved), and
.BR MM " means"
.IR misc ,
which can mean several things. It's recommended to consult the datasheet for
detailed information about the
.BR MM " fields."
.TP
.B "\-V, \-\-verbose"
Enable verbose mode. This option can be used together with the
.BR "\-d" " or " "\-D" " option (or both)."
.sp
The verbose output will not only list for which type of Super I/O the tool
is scanning, but also at which configuration port it's probing, and which
Super I/O initialization sequence is used. If no Super I/O was detected
in a probing run, the returned output will be shown, as it may be useful
for figuring out which (currently unrecognized) Super I/O chip this may be.
.TP
.B "\-v, \-\-version"
Show version information and exit.
.TP
.B "\-h, \-\-help"
Show a help text and exit.
.SH BUGS
Please report any bugs at http://tracker.linuxbios.org/trac/LinuxBIOS/
or on the LinuxBIOS mailing list (http://linuxbios.org/Mailinglist).
.SH AUTHORS
Please see the individual source code files and/or the README file.
.SH LICENCE
.B superiotool
is covered by the GNU General Public License (GPL), either version 2 of
the License, or (at your option) any later version.
.SH SEE ALSO
.BR sensors-detect (8)
