summaryrefslogtreecommitdiff
path: root/src/soc/intel/skylake/me.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/skylake/me.c')
-rw-r--r--src/soc/intel/skylake/me.c80
1 files changed, 6 insertions, 74 deletions
diff --git a/src/soc/intel/skylake/me.c b/src/soc/intel/skylake/me.c
index b45234ec65..45a7c485ea 100644
--- a/src/soc/intel/skylake/me.c
+++ b/src/soc/intel/skylake/me.c
@@ -196,80 +196,6 @@ static const char *const me_progress_bup_values[] = {
"M0 kernel load",
};
-static void print_me_version(void *unused)
-{
- struct version {
- uint16_t minor;
- uint16_t major;
- uint16_t build;
- uint16_t hotfix;
- } __packed;
-
- struct fw_ver_resp {
- struct mkhi_hdr hdr;
- struct version code;
- struct version rec;
- struct version fitc;
- } __packed;
-
- const struct mkhi_hdr fw_ver_msg = {
- .group_id = MKHI_GEN_GROUP_ID,
- .command = MKHI_GET_FW_VERSION,
- };
-
- struct fw_ver_resp resp;
- size_t resp_size = sizeof(resp);
- union me_hfsts1 hfs1;
-
- /*
- * Print ME version only if UART debugging is enabled. Else, it takes ~1
- * second to talk to ME and get this information.
- */
- if (!CONFIG(CONSOLE_SERIAL))
- return;
-
- if (!is_cse_enabled())
- return;
-
- hfs1.data = me_read_config32(PCI_ME_HFSTS1);
- /*
- * This command can be run only if:
- * - Working state is normal and
- * - Operation mode is normal.
- */
- if ((hfs1.fields.working_state != ME_HFS_CWS_NORMAL) ||
- (hfs1.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_ADDR,
- HECI_MKHI_ADDR))
- goto failed;
-
- if (!heci_receive(&resp, &resp_size))
- goto failed;
-
- if (resp.hdr.result)
- goto failed;
-
- printk(BIOS_DEBUG, "ME: Version : %d.%d.%d.%d\n", resp.code.major,
- resp.code.minor, resp.code.hotfix, resp.code.build);
- return;
-
-failed:
- printk(BIOS_DEBUG, "ME: Version : Unavailable\n");
-}
-/*
- * This can't be put in intel_me_status because by the time control
- * reaches there, ME doesn't respond to GET_FW_VERSION command.
- */
-BOOT_STATE_INIT_ENTRY(BS_DEV_ENABLE, BS_ON_EXIT, print_me_version, NULL);
-
void intel_me_status(void)
{
union me_hfsts1 hfs1;
@@ -445,3 +371,9 @@ int send_global_reset(void)
ret:
return status;
}
+
+/*
+ * This can't be put in intel_me_status because by the time control
+ * reaches there, ME doesn't respond to GET_FW_VERSION command.
+ */
+BOOT_STATE_INIT_ENTRY(BS_DEV_ENABLE, BS_ON_EXIT, print_me_fw_version, NULL);