diff options
author | Andrey Petrov <andrey.petrov@intel.com> | 2016-06-22 19:22:30 -0700 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-06-24 20:37:41 +0200 |
commit | 901e43c90473e4acf950204abd55f0eb99bfee5b (patch) | |
tree | 52afda921483219af21621bc70b20021ac9f1bb6 /src/drivers/intel/fsp2_0/util.c | |
parent | 3dbea29ee65c99ae09690765f20869b46464e66a (diff) |
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@intel.com>
Reviewed-on: https://review.coreboot.org/15334
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/drivers/intel/fsp2_0/util.c')
-rw-r--r-- | src/drivers/intel/fsp2_0/util.c | 24 |
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); +} |