From b13bd1efcf568bb220500ca94e4de097f3bed9ec Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Mon, 21 Sep 2020 22:44:27 +0000 Subject: Revert "soc/intel: Refactor do_global_reset() function" This reverts commit 77cc3267fc970c710299a164ecbc471f9287d719. Reason for revert: Breaks quark and also needs breaking down into multiple CLs as commented by Nico on CB:45541 Change-Id: Idf4ca74158df15483856754ee24cc4472a8e09b0 Signed-off-by: Furquan Shaikh Reviewed-on: https://review.coreboot.org/c/coreboot/+/44997 Tested-by: build bot (Jenkins) Reviewed-by: Tim Wawrzynczak Reviewed-by: Angel Pons Reviewed-by: Subrata Banik --- src/soc/intel/common/block/cse/cse_lite.c | 2 +- src/soc/intel/common/reset.c | 21 +-------------------- src/soc/intel/common/reset.h | 9 ++++++++- 3 files changed, 10 insertions(+), 22 deletions(-) (limited to 'src/soc/intel/common') diff --git a/src/soc/intel/common/block/cse/cse_lite.c b/src/soc/intel/common/block/cse/cse_lite.c index e595b998ed..c9e4e1f470 100644 --- a/src/soc/intel/common/block/cse/cse_lite.c +++ b/src/soc/intel/common/block/cse/cse_lite.c @@ -384,7 +384,7 @@ static bool cse_set_and_boot_from_next_bp(enum boot_partition_id bp) cse_board_reset(); /* If board does not perform the reset, then perform global_reset */ - global_reset(); + do_global_reset(); die("cse_lite: Failed to reset the system\n"); diff --git a/src/soc/intel/common/reset.c b/src/soc/intel/common/reset.c index ca31897c12..c6c394bd44 100644 --- a/src/soc/intel/common/reset.c +++ b/src/soc/intel/common/reset.c @@ -4,35 +4,16 @@ #include #include #include -#include -#include #include #include "reset.h" -static void force_global_reset(void) -{ - /* Ask CSE to do the global reset */ - if (CONFIG(SOC_INTEL_COMMON_BLOCK_CSE)) - if (cse_request_global_reset()) - return; - - /* - * If ME is unable to reset platform then enable the PMC CF9GR register [B0:D31:F2 - * register offset 0xAC bit 20] and force a global reset by writing 0x06 or 0x0E. - */ - if (CONFIG(SOC_INTEL_COMMON_BLOCK_PMC)) - pmc_global_reset_enable(true); - /* Now BIOS can write 0x06 or 0x0E to 0xCF9 port to global reset platform */ - do_full_reset(); -} - void global_reset(void) { printk(BIOS_INFO, "%s() called!\n", __func__); cf9_reset_prepare(); dcache_clean_all(); - force_global_reset(); + do_global_reset(); halt(); } diff --git a/src/soc/intel/common/reset.h b/src/soc/intel/common/reset.h index bf8d651f06..e1f6aabbf6 100644 --- a/src/soc/intel/common/reset.h +++ b/src/soc/intel/common/reset.h @@ -3,7 +3,14 @@ #ifndef _INTEL_COMMON_RESET_H_ #define _INTEL_COMMON_RESET_H_ -/* Prepare for reset, run force_global_reset(), halt. */ +/* + * Implement SoC specific global reset (i.e. a reset of both host and + * ME partitions). Usually the ME is asked to perform the reset first. + * If that doesn't work out, fall back to a manual global reset. + */ +void do_global_reset(void); + +/* Prepare for reset, run do_global_reset(), halt. */ __noreturn void global_reset(void); #endif /* _INTEL_COMMON_RESET_H_ */ -- cgit v1.2.3