From 522e9e9746f4d98c5e8a9b83058ca143e9347d0a Mon Sep 17 00:00:00 2001 From: "Jonathan A. Kollasch" Date: Mon, 7 Nov 2011 10:43:05 -0600 Subject: [PATCH] Avoid false detection of SMSC FDC37N972 when Infineon TPM is present Change-Id: Ibfb3af4c5d7675a5d4e27021cbb988c2ce00fd9f Signed-off-by: Jonathan A. Kollasch Reviewed-on: http://review.coreboot.org/420 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- util/superiotool/smsc.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/util/superiotool/smsc.c b/util/superiotool/smsc.c index 17925aee5..012ffbd7d 100644 --- a/util/superiotool/smsc.c +++ b/util/superiotool/smsc.c @@ -844,6 +844,19 @@ static void probe_idregs_smsc_helper(uint16_t port, uint8_t idreg, return; } + /* Infineon TPM causes false match of FDC37N972 */ + if (idreg == DEVICE_ID_REG && revreg == DEVICE_REV_REG && + id == 0x0b && rev == 0x00) { + /* Infineon sets config port in 0x27:0x26, but SMSC does not */ + if (((regval(port, 0x27)<<8)|regval(port, 0x26)) == port) { + if (verbose) + printf(NOTFOUND "id=0x%02x, rev=0x%02x\n", + id, rev); + exit_conf_mode_smsc(port); + return; + } + } + printf("Found %s %s (id=0x%02x, rev=0x%02x) at 0x%x\n", (id == 0x77 ? "ASUS" : "SMSC"), get_superio_name(reg_table, id), id, rev, port); -- 2.25.1