Dear maintainers of the superiotool,
I have the following "feature request" (maybe not a bug report):
I have this idea that superiotool should be able to detect more than
one SuperIO chip in the system. Such detection of multiple chips may
work in some cases, but may fail in others.
The primary cause seems to be that
winbond.c :: probe_idregs_winbond()
and
ite.c :: probe_idregs_ite()
call
if (chip_found) return; // this is a global variable!
after every "init sequence" tried.
Therefore, after the first chip detected (of any kind),
only the first init sequence is ever tried, in any subsequent calls
to the aforementioned probe_* functions.
My immediate hack was to comment out all occurrences of
if (chip_found) return;
in those probe functions.
Makes me wonder if this has some adverse effects, such as repeatedly
scanning some EFER bases / init sequences by probes belonging to
different chip families.
And my conclusion for the moment is that this repeated probing should
be harmless, and that the current behavior (stop after the first init
sequence tried) is flawed anyway :-)
My motivation is simple: right now I'm working with an embedded PC
that has two SuperIO chips on the inside: W83627 + W83977.
But I've seen other models in the past as well.
Your SuperIOtool is quite useful for a quick overview of the SuperIO
chips in the system, including a thorough dump of their registers.
In the past I myself have written and reused some simple snippet of
code / a tiny library (in DOS) to help me debug/tweak SuperIO stuff,
but I never got as far as making it truly universal and extensible.
As for SuperIOtool, I could fancy a writing capability, and maybe an
external configuration file, potentially allowing for extensions
without coding in C, maybe human-readable interpretations /
annotations of the register dump etc - but I admit that's too much
work to be worth the bother, certainly for me at the moment :-)
Keep up the excellent work that you're doing...
Frank Rysanek