PeiTcg2PhysicalPresenceLib.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /** @file
  2. Get TPM 2.0 physical presence information.
  3. This library will get TPM 2.0 physical presence information.
  4. Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.<BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #include <PiPei.h>
  8. #include <Guid/Tcg2PhysicalPresenceData.h>
  9. #include <Ppi/ReadOnlyVariable2.h>
  10. #include <Library/DebugLib.h>
  11. #include <Library/PeiServicesLib.h>
  12. #include <Library/PeiServicesTablePointerLib.h>
  13. #include <Library/Tcg2PhysicalPresenceLib.h>
  14. /**
  15. Return TPM2 ManagementFlags set by PP interface.
  16. @retval ManagementFlags TPM2 Management Flags.
  17. **/
  18. UINT32
  19. EFIAPI
  20. Tcg2PhysicalPresenceLibGetManagementFlags (
  21. VOID
  22. )
  23. {
  24. EFI_STATUS Status;
  25. EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariablePpi;
  26. EFI_TCG2_PHYSICAL_PRESENCE_FLAGS PpiFlags;
  27. UINTN DataSize;
  28. Status = PeiServicesLocatePpi (&gEfiPeiReadOnlyVariable2PpiGuid, 0, NULL, (VOID **)&VariablePpi);
  29. ASSERT_EFI_ERROR (Status);
  30. DataSize = sizeof (EFI_TCG2_PHYSICAL_PRESENCE_FLAGS);
  31. Status = VariablePpi->GetVariable (
  32. VariablePpi,
  33. TCG2_PHYSICAL_PRESENCE_FLAGS_VARIABLE,
  34. &gEfiTcg2PhysicalPresenceGuid,
  35. NULL,
  36. &DataSize,
  37. &PpiFlags
  38. );
  39. if (EFI_ERROR (Status)) {
  40. PpiFlags.PPFlags = PcdGet32 (PcdTcg2PhysicalPresenceFlags);
  41. }
  42. return PpiFlags.PPFlags;
  43. }