<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 12/30/10 12:13 PM, Stefan Reinauer wrote:
    <blockquote cite="mid:4D1C6956.4040508@coreboot.org" type="cite">
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      On 12/28/10 11:51 PM, David Hendricks wrote:
      <blockquote
        cite="mid:AANLkTik8EOhNYmU=DaTpwm8XiLYFEzS+u7aKES8ornHW@mail.gmail.com"
        type="cite">
        <div class="gmail_quote">On Tue, Dec 28, 2010 at 4:13 AM,
          Frantisek Rysanek <span dir="ltr"><<a
              moz-do-not-send="true"
              href="mailto:Frantisek.Rysanek@post.cz" target="_blank">Frantisek.Rysanek@post.cz</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
            0.8ex; border-left: 1px solid rgb(204, 204, 204);
            padding-left: 1ex;"> Dear maintainers of the superiotool,<br>
            <br>
            I have the following "feature request" (maybe not a bug
            report):<br>
            I have this idea that superiotool should be able to detect
            more than<br>
            one SuperIO chip in the system. Such detection of multiple
            chips may<br>
            work in some cases, but may fail in others.<br>
            <br>
            The primary cause seems to be that<br>
             winbond.c :: probe_idregs_winbond()<br>
            and<br>
              ite.c :: probe_idregs_ite()<br>
            call<br>
              if (chip_found) return;   // this is a global variable!<br>
            after every "init sequence" tried.<br>
            <br>
            Therefore, after the first chip detected (of any kind),<br>
            only the first init sequence is ever tried, in any
            subsequent calls<br>
            to the aforementioned probe_* functions.<br>
          </blockquote>
        </div>
      </blockquote>
      <br>
      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.<br>
      <br>
      Attached patch should fix the issue.<br>
    </blockquote>
    And an equivalent change is needed for winbond.c I guess.<br>
  </body>
</html>