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>
Reviewed-on: https://review.coreboot.org/c/31622
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
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;