soc/intel/cmn/cse: API to perform essential CSE operations post EOP

This patch creates an API that can perform essential CSE operation
after sending the late EOP command to the CSE and prior booting to OS.

Lists of operation are
- Perform global reset lock
- Put HECI1 to D0i3 and disable the HECI1 if the user selects
- Set D0I3 for all HECI devices.

BUG=b:260041679
TEST=Able to boot Google/Rex after sending CSE EOP late.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: I10131ea9b553a62f0d632783c4dbad96d35d6563
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69977
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Subrata Banik 2022-11-24 21:51:42 +05:30
parent 5214c4091f
commit 17a3da8b99
2 changed files with 22 additions and 0 deletions

View File

@ -1255,6 +1255,22 @@ static void cse_final_end_of_firmware(void)
heci_set_to_d0i3(); heci_set_to_d0i3();
} }
/*
* This function to perform essential post EOP cse related operations
* upon SoC selecting `SOC_INTEL_CSE_SEND_EOP_LATE` config
*/
void cse_late_finalize(void)
{
if (!CONFIG(SOC_INTEL_CSE_SEND_EOP_LATE))
return;
if (!CONFIG(USE_FSP_NOTIFY_PHASE_READY_TO_BOOT))
cse_final_ready_to_boot();
if (!CONFIG(USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE))
cse_final_end_of_firmware();
}
/* /*
* `cse_final` function is native implementation of equivalent events performed by * `cse_final` function is native implementation of equivalent events performed by
* each FSP NotifyPhase() API invocations. * each FSP NotifyPhase() API invocations.

View File

@ -541,6 +541,12 @@ void cse_control_global_reset_lock(void);
/* Send End of Post (EOP) command to CSE device */ /* Send End of Post (EOP) command to CSE device */
void cse_send_end_of_post(void); void cse_send_end_of_post(void);
/*
* This function to perform essential post EOP cse related operations
* upon SoC selecting `SOC_INTEL_CSE_SEND_EOP_LATE` config
*/
void cse_late_finalize(void);
/* /*
* SoC override API to make heci1 disable using PCR. * SoC override API to make heci1 disable using PCR.
* *