/** @file This file abstract internal interfaces of which implementation differs per library instance. Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
Copyright (c) Microsoft Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include "Tpm2DeviceLibDTpm.h" /** Return cached PTP CRB interface IdleByPass state. @return Cached PTP CRB interface IdleByPass state. **/ UINT8 GetCachedIdleByPass ( VOID ) { return PcdGet8(PcdCRBIdleByPass); } /** Return cached PTP interface type. @return Cached PTP interface type. **/ TPM2_PTP_INTERFACE_TYPE GetCachedPtpInterface ( VOID ) { return PcdGet8(PcdActiveTpmInterfaceType); } /** The common function cache current active TpmInterfaceType when needed. @retval EFI_SUCCESS DTPM2.0 instance is registered, or system does not support register DTPM2.0 instance **/ EFI_STATUS InternalTpm2DeviceLibDTpmCommonConstructor ( VOID ) { TPM2_PTP_INTERFACE_TYPE PtpInterface; UINT8 IdleByPass; // // Cache current active TpmInterfaceType only when needed // if (PcdGet8(PcdActiveTpmInterfaceType) == 0xFF) { PtpInterface = Tpm2GetPtpInterface ((VOID *) (UINTN) PcdGet64 (PcdTpmBaseAddress)); PcdSet8S(PcdActiveTpmInterfaceType, PtpInterface); } if (PcdGet8(PcdActiveTpmInterfaceType) == Tpm2PtpInterfaceCrb && PcdGet8(PcdCRBIdleByPass) == 0xFF) { IdleByPass = Tpm2GetIdleByPass((VOID *) (UINTN) PcdGet64 (PcdTpmBaseAddress)); PcdSet8S(PcdCRBIdleByPass, IdleByPass); } return EFI_SUCCESS; }