soc/intel/skylake: Do a heci_reset before reading ME firmware version

This change adds a call to heci_reset before attempting to read
ME firmware version. This is important to ensure that both ME and BIOS
are in sync.

TEST=Verfied that ME firmware version read does not fail on first boot
after power failure (i.e. removing battery and AC power).

Change-Id: Ib6b39c398d2e1177b087352a4acb8bcf5a9897d6
Signed-off-by: Furquan Shaikh <>
Tested-by: build bot (Jenkins) <>
Reviewed-by: Duncan Laurie <>
Reviewed-by: Aaron Durbin <>
diff --git a/src/soc/intel/skylake/me.c b/src/soc/intel/skylake/me.c
index 67d7bc0..9a721bc 100644
--- a/src/soc/intel/skylake/me.c
+++ b/src/soc/intel/skylake/me.c
@@ -254,6 +254,12 @@
 	    (hfs.fields.operation_mode != ME_HFS_MODE_NORMAL))
 		goto failed;
+	/*
+	 * It is important to do a heci_reset to ensure BIOS and ME are in sync
+	 * before reading firmware version.
+	 */
+	heci_reset();
 	if (!heci_send(&fw_ver_msg, sizeof(fw_ver_msg), BIOS_HOST_ADD,
 		goto failed;