[LinuxBIOS] [ANNOUNCE] superiotool -- Detect Super I/Os, dump register contents

Uwe Hermann uwe at hermann-uwe.de
Mon Oct 8 03:35:40 CEST 2007


Hi everyone,

I'd like to announce a tool called 'superiotool' which was developed by
a bunch of LinuxBIOS developers over at linuxbios.org:

  http://linuxbios.org/Superiotool

Superiotool is a user-space utility which can

 - detect which Super I/O chip is soldered onto your mainboard,

 - at which configuration port it's located (usually 0x2e or 0x4e), and

 - dump all register contents of the Super I/O chip, together with the
   default values as per datasheet (to make comparing the values easy).

Installation:

 $ svn co svn://linuxbios.org/repos/trunk/util/superiotool
 $ cd superiotool
 $ make
 $ sudo make install

It's written in C and licensed under the GPL (version 2 or later).

We're using it for LinuxBIOS development purposes (e.g. you need to
properly init the Super I/O for early serial output support), but I
guess this might be a useful tool for lm-sensors purposes, too.

Yes, we're aware of sensors-detect and we considered merging our
code into sensors-detect for a while, but decided to keep them two
different tools for now. Some reasons (or differenceѕ between the tools):

 - superiotool is written in C, which allows (some) code copying into
   LinuxBIOS (which is also written in C).

 - superiotool _only_ supports and cares about Super I/Os, not other
   sensors, I2C, etc. etc. We don't intend to support anything other
   than Super I/Os in superiotool (hence the name :-) We don't need
   sensors et al in LinuxBIOS, that's mostly handled by the OS/userspace,
   e.g. lm-sensors.

 - The main difference to the sensors-detect Super I/O support is in the
   register dump feature, I guess. You can use 'superiotool -d' to get
   output like this:

     $ superiotool -d
     Found Winbond W83627EHF/EF/EHG/EG (id=0x88, rev=0x63) at 0x2e
     Register dump:
     idx 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
     val 88 63 ff 00 44 00 00 ff 50 04 00 00 9a 21 00 ff 
     def 88 MM ff 00 MM 00 MM RR 50 04 00 RR 00 21 00 00 
     LDN 0x00 (Floppy)
     idx 30 60 61 70 74 f0 f1 f2 f4 f5 
     val 00 03 f0 06 02 0e 00 ff 00 00 
     def 01 03 f0 06 02 8e 00 ff 00 00 
     LDN 0x01 (Parallel port)
     idx 30 60 61 70 74 f0 
     val 00 03 78 00 04 3c 
     def 01 03 78 07 04 3f 
     LDN 0x02 (COM1)
     idx 30 60 61 70 f0 
     val 00 03 f8 04 00 
     def 01 03 f8 04 00 
     LDN 0x03 (COM2)
     idx 30 60 61 70 f0 f1 
     val 00 02 f8 03 00 00 
     def 01 02 f8 03 00 00 
     LDN 0x05 (Keyboard)
     idx 30 60 61 62 63 70 72 f0 
     val 01 00 60 00 64 01 0c 83 
     def 01 00 60 00 64 01 0c 83 
     LDN 0x06 (Serial flash interface)
     idx 30 62 63 
     val 00 ff ff 
     def 00 00 00 
     LDN 0x07 (GPIO 1, GPIO 6, game port, MIDI port)
     idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 f7 
     val 00 02 01 03 30 00 ff ff ff ff ff ff ff 00 
     def 00 02 01 03 30 09 ff 00 00 00 ff 00 00 00 
     LDN 0x08 (WDTO#, PLED)
     idx 30 f5 f6 f7 
     val 00 ff 00 ff 
     def 00 00 00 00 
     LDN 0x09 (GPIO 2, GPIO 3, GPIO 4, GPIO 5, SUSLED)
     idx 30 e0 e1 e2 e3 e4 e5 f0 f1 f2 f3 f4 f5 f6 f7 
     val 0f ff 21 00 ff 08 00 ff 0c 00 09 9f ff 00 00 
     def 00 ff 00 00 ff 00 00 ff 00 00 00 ff 00 00 00 
     LDN 0x0a (ACPI)
     idx 30 70 e0 e1 e2 e3 e4 e5 e6 e7 e8 f2 f3 f4 f6 f7 
     val 01 00 00 00 ff 00 40 02 0c 10 09 7d 00 00 00 00 
     def 00 00 01 00 ff 08 00 RR 00 00 RR 7c 00 00 00 00 
     LDN 0x0b (Hardware monitor)
     idx 30 60 61 70 f0 f1 
     val 01 02 90 00 c1 3f 
     def 00 00 00 00 c1 00

  All numbers are in hex. idx is the register number, val is the current
  content of the register, def is the default value as per datasheet.

  I assume the dump feature might help with lm-sensors development, as
  you can easily dump the hardware monitor register contents (or have
  users send dumps) and compare values from different boards/chips etc.


We currently detect a number of chips which are not detected by
sensors-detect (and vice versa), I'll provide patches to sensors-detect
to keep the number of detected Super I/Os in sync between the tools.

This is open-source of course, so feel free to poke in the code and reuse
whatever parts of it you need or want. Contributions to supertiotool are
welcome, too, of course :)

We also try to collect a number of example register dumps for various
chips in the LinuxBIOS wiki for reference (any contributions are welcome
here, too; just run 'superiotool -dV' and send the output to the
LinuxBIOS mailing list, see http://linuxbios.org/Mailinglist).

The list of currently supported chips, as well as links to sample dumps,
is available here: http://linuxbios.org/Superiotool.


HTH, Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20071008/cb1a2b2e/attachment.sig>


More information about the coreboot mailing list