summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan A. Kollasch <jakllsch@kollasch.net>2011-11-07 10:43:05 -0600
committerStefan Reinauer <stefan.reinauer@coreboot.org>2011-11-07 18:15:41 +0100
commit522e9e9746f4d98c5e8a9b83058ca143e9347d0a (patch)
treeccab3f4699563505939742c6d79b512fe3ea8b42
parent86bb0072b6201875190c5ec78f5415cd51a9e115 (diff)
downloadcoreboot-522e9e9746f4d98c5e8a9b83058ca143e9347d0a.tar.xz
Avoid false detection of SMSC FDC37N972 when Infineon TPM is present
Change-Id: Ibfb3af4c5d7675a5d4e27021cbb988c2ce00fd9f Signed-off-by: Jonathan A. Kollasch <jakllsch@kollasch.net> Reviewed-on: http://review.coreboot.org/420 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r--util/superiotool/smsc.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/util/superiotool/smsc.c b/util/superiotool/smsc.c
index 17925aee56..012ffbd7da 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);