TPM2: Fill in empty tlcl_resume function in TPM2 tlcl
On resume, TPM2_Starup(STATE) command needs to be sent to the TPM. This ensures that TPM restores the state saved at last Shutdown(STATE). Since tlcl_resume and tlcl_startup both use the same sequence for sending startup command with different arguments, add a common function that can be used by both. BUG=chrome-os-partner:58043 BRANCH=None TEST=Verified that on resume coreboot no longer complains about index read for 0x1007. Return value is 0 as expected. Change-Id: Ib8640acc9cc9cdb3ba5d40e0ccee5ca7d67fa645 Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://review.coreboot.org/16832 Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
This commit is contained in:
parent
5db043f0d6
commit
cc3365a039
|
@ -54,10 +54,27 @@ uint32_t tlcl_get_permanent_flags(TPM_PERMANENT_FLAGS *pflags)
|
||||||
return TPM_SUCCESS;
|
return TPM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint32_t tlcl_send_startup(TPM_SU type)
|
||||||
|
{
|
||||||
|
struct tpm2_startup startup;
|
||||||
|
struct tpm2_response *response;
|
||||||
|
|
||||||
|
startup.startup_type = type;
|
||||||
|
response = tpm_process_command(TPM2_Startup, &startup);
|
||||||
|
|
||||||
|
if (response && response->hdr.tpm_code &&
|
||||||
|
(response->hdr.tpm_code != TPM_RC_INITIALIZE)) {
|
||||||
|
printk(BIOS_INFO, "%s: Startup return code is %x\n",
|
||||||
|
__func__, response->hdr.tpm_code);
|
||||||
|
return TPM_E_IOERROR;
|
||||||
|
}
|
||||||
|
return TPM_SUCCESS;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t tlcl_resume(void)
|
uint32_t tlcl_resume(void)
|
||||||
{
|
{
|
||||||
printk(BIOS_INFO, "%s:%s:%d\n", __FILE__, __func__, __LINE__);
|
return tlcl_send_startup(TPM_SU_STATE);
|
||||||
return TPM_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t tlcl_assert_physical_presence(void)
|
uint32_t tlcl_assert_physical_presence(void)
|
||||||
|
@ -245,18 +262,7 @@ uint32_t tlcl_lock_nv_write(uint32_t index)
|
||||||
|
|
||||||
uint32_t tlcl_startup(void)
|
uint32_t tlcl_startup(void)
|
||||||
{
|
{
|
||||||
struct tpm2_startup startup;
|
return tlcl_send_startup(TPM_SU_CLEAR);
|
||||||
struct tpm2_response *response;
|
|
||||||
|
|
||||||
startup.startup_type = TPM_SU_CLEAR;
|
|
||||||
response = tpm_process_command(TPM2_Startup, &startup);
|
|
||||||
if (response && response->hdr.tpm_code &&
|
|
||||||
(response->hdr.tpm_code != TPM_RC_INITIALIZE)) {
|
|
||||||
printk(BIOS_INFO, "startup return code is %x\n",
|
|
||||||
response->hdr.tpm_code);
|
|
||||||
return TPM_E_IOERROR;
|
|
||||||
}
|
|
||||||
return TPM_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t tlcl_write(uint32_t index, const void *data, uint32_t length)
|
uint32_t tlcl_write(uint32_t index, const void *data, uint32_t length)
|
||||||
|
|
Loading…
Reference in New Issue