Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/31622
Change subject: sb/intel/common: Fix SMBUs block commands ......................................................................
sb/intel/common: Fix SMBUs block commands
Fix regression after commit c38d543 sb/intel/common: SMBus complete_command()
When evaluating HSTSTS register, BYTE_DONE bit must be excluded from transaction completion and error criteria.
Change-Id: I49cc43d1fa58250988cc41b2ca747b9f1d7586d6 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/southbridge/intel/common/smbus.c 1 file changed, 7 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/22/31622/1
diff --git a/src/southbridge/intel/common/smbus.c b/src/southbridge/intel/common/smbus.c index a842a61..9ae01ad 100644 --- a/src/southbridge/intel/common/smbus.c +++ b/src/southbridge/intel/common/smbus.c @@ -74,7 +74,10 @@ { if (status & SMBHSTSTS_HOST_BUSY) return 0; - status &= ~(SMBHSTSTS_SMBALERT_STS | SMBHSTSTS_INUSE_STS); + + /* These status bits do not imply completion of transaction. */ + status &= ~(SMBHSTSTS_BYTE_DONE | SMBHSTSTS_INUSE_STS | + SMBHSTSTS_SMBALERT_STS); return status != 0; }
@@ -89,8 +92,9 @@
static int cb_err_from_stat(u8 status) { - /* Ignore the "In Use" status... */ - status &= ~(SMBHSTSTS_SMBALERT_STS | SMBHSTSTS_INUSE_STS); + /* These status bits do not imply errors. */ + status &= ~(SMBHSTSTS_BYTE_DONE | SMBHSTSTS_INUSE_STS | + SMBHSTSTS_SMBALERT_STS);
if (status == SMBHSTSTS_INTR) return 0;