From patchwork Mon Aug 9 21:41:28 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [superiotool] Quit probe_idregs_* early if chip_found is set Date: Mon, 09 Aug 2010 21:41:28 -0000 From: David Hendricks X-Patchwork-Id: 1732 Message-Id: To: Coreboot Some chips do not require enter/exit sequences. This causes them to be detected and printed multiple times in probe_idregs_* functions where a simple series of enter --> probe/print --> exit calls are made. This patch adds a simple check after each set of those calls to make the functions quit after a chip is found. Signed-off by: David Hendricks (dhendrix@google.com) Acked-by: Stefan Reinauer Index: superiotool-head/ite.c =================================================================== --- superiotool-head.orig/ite.c +++ superiotool-head/ite.c @@ -781,30 +781,37 @@ void probe_idregs_ite(uint16_t port) enter_conf_mode_ite_legacy(port, initkey_it8661f); probe_idregs_ite_helper("(init=legacy/it8661f) ", port); exit_conf_mode_ite(port); + if (chip_found) return; enter_conf_mode_ite_legacy(port, initkey_it8671f); probe_idregs_ite_helper("(init=legacy/it8671f) ", port); exit_conf_mode_ite(port); + if (chip_found) return; } else { enter_conf_mode_ite(port); probe_idregs_ite_helper("(init=standard) ", port); exit_conf_mode_ite(port); + if (chip_found) return; enter_conf_mode_ite_it8502e(port); probe_idregs_ite_helper("(init=it8502e) ", port); exit_conf_mode_ite(port); + if (chip_found) return; enter_conf_mode_ite_it8761e(port); probe_idregs_ite_helper("(init=it8761e) ", port); exit_conf_mode_ite(port); + if (chip_found) return; enter_conf_mode_ite_it8228e(port); probe_idregs_ite_helper("(init=it8228e) ", port); exit_conf_mode_ite(port); + if (chip_found) return; enter_conf_mode_winbond_fintek_ite_8787(port); probe_idregs_ite_helper("(init=0x87,0x87) ", port); exit_conf_mode_winbond_fintek_ite_8787(port); + if (chip_found) return; } } Index: superiotool-head/winbond.c =================================================================== --- superiotool-head.orig/winbond.c +++ superiotool-head/winbond.c @@ -614,18 +614,22 @@ void probe_idregs_winbond(uint16_t port) enter_conf_mode_winbond_88(port); probe_idregs_winbond_helper("(init=0x88) ", port); exit_conf_mode_winbond_fintek_ite_8787(port); + if (chip_found) return; enter_conf_mode_winbond_89(port); probe_idregs_winbond_helper("(init=0x89) ", port); exit_conf_mode_winbond_fintek_ite_8787(port); + if (chip_found) return; enter_conf_mode_winbond_86(port); probe_idregs_winbond_helper("(init=0x86,0x86) ", port); exit_conf_mode_winbond_fintek_ite_8787(port); + if (chip_found) return; enter_conf_mode_winbond_fintek_ite_8787(port); probe_idregs_winbond_helper("(init=0x87,0x87) ", port); exit_conf_mode_winbond_fintek_ite_8787(port); + if (chip_found) return; } void print_winbond_chips(void)