aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/intel/fsp2_0/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/intel/fsp2_0/util.c')
-rw-r--r--src/drivers/intel/fsp2_0/util.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/drivers/intel/fsp2_0/util.c b/src/drivers/intel/fsp2_0/util.c
index 2eb6cf9dbb..b47b898ab8 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);
+}