/** @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; }