soc/intel/cannonlake: Invoke pmc and hard reset only if CSE fails to reset

If CSE fails to do a global reset with the calling sequence of heci
reset/send/receive, then invoke pmc and hard reset.

TEST= Force global reset from early or late romstage. The function
send_heci_reset_message has the calling sequence of heci reset/send/receive.
It is observed timed out error (associated with heci_receive) occurs
only if global reset is forced during early romstage. If global reset is
trigged at late stage (i.e, after fsp_memory_init), then no timed out error
and CSE handles reset properly.

Change-Id: I5bb12554e5745d7704a1b684a3a51034bb35f787
Signed-off-by: John Zhao <john.zhao@intel.com>
Reviewed-on: https://review.coreboot.org/22549
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Lijian Zhao <lijian.zhao@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
John Zhao 2017-11-20 16:42:21 -08:00 committed by Martin Roth
parent 8f06ce3512
commit bfd62fabc9
1 changed files with 3 additions and 1 deletions

View File

@ -80,7 +80,9 @@ static int send_heci_reset_message(void)
void do_global_reset(void) void do_global_reset(void)
{ {
/* Ask CSE to do the global reset */ /* Ask CSE to do the global reset */
send_heci_reset_message(); if (!send_heci_reset_message())
return;
/* global reset if CSE fail to reset */ /* global reset if CSE fail to reset */
pmc_global_reset_enable(1); pmc_global_reset_enable(1);
hard_reset(); hard_reset();