[coreboot] superiotool sometimes skips further SuperIO chips in the system - suggested remedy included
Stefan Reinauer
stepan at coreboot.org
Thu Dec 30 12:13:26 CET 2010
On 12/28/10 11:51 PM, David Hendricks wrote:
> On Tue, Dec 28, 2010 at 4:13 AM, Frantisek Rysanek
> <Frantisek.Rysanek at post.cz <mailto:Frantisek.Rysanek at post.cz>> wrote:
>
> 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.
>
That function is called with a port address. There can only be one chip
at one port address. So leaving the function after a chip has been found
at that address seems like the right thing to do. The bug is that
chip_found is a global variable and not a local variable.
Attached patch should fix the issue.
Stefan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20101230/e6a6a972/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: superiotool-ite.diff
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20101230/e6a6a972/attachment.ksh>
More information about the coreboot
mailing list