]> git.proxmox.com Git - mirror_edk2.git/blob - SecurityPkg/Library/PeiTcg2PhysicalPresenceLib/PeiTcg2PhysicalPresenceLib.c
81fe1b4d2cf0ab833010b996dc639d8db6d2f7e0
[mirror_edk2.git] / SecurityPkg / Library / PeiTcg2PhysicalPresenceLib / PeiTcg2PhysicalPresenceLib.c
1 /** @file
2 Get TPM 2.0 physical presence information.
3
4 This library will get TPM 2.0 physical presence information.
5
6 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 **/
16
17 #include <PiPei.h>
18
19 #include <Guid/Tcg2PhysicalPresenceData.h>
20 #include <Ppi/ReadOnlyVariable2.h>
21
22 #include <Library/DebugLib.h>
23 #include <Library/PeiServicesLib.h>
24 #include <Library/PeiServicesTablePointerLib.h>
25 #include <Library/Tcg2PhysicalPresenceLib.h>
26
27 /**
28 Return TPM2 ManagementFlags set by PP interface.
29
30 @retval ManagementFlags TPM2 Management Flags.
31 **/
32 UINT32
33 EFIAPI
34 Tcg2PhysicalPresenceLibGetManagementFlags (
35 VOID
36 )
37 {
38 EFI_STATUS Status;
39 EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariablePpi;
40 EFI_TCG2_PHYSICAL_PRESENCE_FLAGS PpiFlags;
41 UINTN DataSize;
42
43 Status = PeiServicesLocatePpi (&gEfiPeiReadOnlyVariable2PpiGuid, 0, NULL, (VOID **) &VariablePpi);
44 ASSERT_EFI_ERROR (Status);
45
46 DataSize = sizeof (EFI_TCG2_PHYSICAL_PRESENCE_FLAGS);
47 Status = VariablePpi->GetVariable (
48 VariablePpi,
49 TCG2_PHYSICAL_PRESENCE_FLAGS_VARIABLE,
50 &gEfiTcg2PhysicalPresenceGuid,
51 NULL,
52 &DataSize,
53 &PpiFlags
54 );
55 if (EFI_ERROR (Status)) {
56 PpiFlags.PPFlags = TCG2_BIOS_TPM_MANAGEMENT_FLAG_DEFAULT;
57 }
58 return PpiFlags.PPFlags;
59 }