[coreboot-gerrit] New patch to review for coreboot: drivers/intel/fsp2_0: Add simple reset handler

Andrey Petrov (andrey.petrov@intel.com) gerrit at coreboot.org
Thu Jun 23 17:37:50 CEST 2016


Andrey Petrov (andrey.petrov at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15334

-gerrit

commit d6097c68d2f2e606fa65439fa8e3af0f9f86f7ac
Author: Andrey Petrov <andrey.petrov at intel.com>
Date:   Wed Jun 22 19:22:30 2016 -0700

    drivers/intel/fsp2_0: Add simple reset handler
    
    Any FSP API call may request a reset. This is indicated in API function
    return code. Add trivial reset handler code.
    
    BUG=chrome-os-partner:54149
    BRANCH=none
    TEST=none
    
    Change-Id: Ieb5e2d52ffdaf3c3ed416603f6dbb4f9c25a1a7b
    Signed-off-by: Andrey Petrov <andrey.petrov at intel.com>
---
 src/drivers/intel/fsp2_0/include/fsp/util.h |  6 ++++++
 src/drivers/intel/fsp2_0/util.c             | 24 ++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/src/drivers/intel/fsp2_0/include/fsp/util.h b/src/drivers/intel/fsp2_0/include/fsp/util.h
index d9d9539..d546c11 100644
--- a/src/drivers/intel/fsp2_0/include/fsp/util.h
+++ b/src/drivers/intel/fsp2_0/include/fsp/util.h
@@ -14,6 +14,7 @@
 #define _FSP2_0_UTIL_H_
 
 #include <boot/coreboot_tables.h>
+#include <fsp/api.h>
 #include <fsp/info_header.h>
 #include <memrange.h>
 
@@ -39,4 +40,9 @@ enum cb_err fsp_load_binary(struct fsp_header *hdr, const char *name,
 /* Load a vbt.bin file for graphics. Returns 0 if a valid VBT is not found. */
 uintptr_t fsp_load_vbt(void);
 
+/* Trivial handling of reset exit statuses */
+void fsp_handle_reset(enum fsp_status status);
+/* Returns true if the non-success status is a reset request */
+bool fsp_reset_requested(enum fsp_status status);
+
 #endif /* _FSP2_0_UTIL_H_ */
diff --git a/src/drivers/intel/fsp2_0/util.c b/src/drivers/intel/fsp2_0/util.c
index 2eb6cf9..e5f44b0 100644
--- a/src/drivers/intel/fsp2_0/util.c
+++ b/src/drivers/intel/fsp2_0/util.c
@@ -18,6 +18,7 @@
 #include <lib.h>
 #include <memrange.h>
 #include <program_loading.h>
+#include <reset.h>
 #include <string.h>
 
 static bool looks_like_fsp_header(const uint8_t *raw_hdr)
@@ -160,3 +161,26 @@ enum cb_err fsp_load_binary(struct fsp_header *hdr,
 
 	return CB_SUCCESS;
 }
+
+void fsp_handle_reset(enum fsp_status status)
+{
+	switch(status) {
+	case FSP_STATUS_RESET_REQUIRED_COLD:
+						hard_reset();
+						break;
+	case FSP_STATUS_RESET_REQUIRED_WARM:
+						soft_reset();
+						break;
+	case FSP_STATUS_RESET_REQUIRED_GLOBAL_RESET:
+						global_reset();
+						break;
+	default:
+						break;
+	}
+}
+
+bool fsp_reset_requested(enum fsp_status status)
+{
+	return (status >= FSP_STATUS_RESET_REQUIRED_COLD &&
+		status <= FSP_STATUS_RESET_REQUIRED_GLOBAL_RESET);
+}



More information about the coreboot-gerrit mailing list